【发布时间】:2018-02-09 15:54:50
【问题描述】:
我正在尝试在 hadoop 集群上安装 HBase,但无法弄清楚为什么从 start-hbase.sh 调用 HMaster 无法启动。日志文件表明 hsync 存在问题。我已经确认 zookeeper 在分布式模式下正确运行,并且通过 spark 使用 hadoop 集群没有任何问题。尝试启动 HBase 时,区域服务器会在所有数据节点上启动。
我有 hadoop 版本 3.0.0、zookeeper 3.4.11 和 hbase 2.0.0 beta 1。
我已经清除了zookeeper hbase节点和hdfs hbase目录并重新启动但没有运气。我将 myid zookeeper 文件存储在与 zookeeper 和 hbase 区域服务器 /usr/local/zookeeper/data/ 的 .pid 文件相同的目录中
下面我摘录了与 hsync 异常有关的 hbase 主日志文件。
2018-02-08 17:26:54,786 错误 [master/MasterNode/MasterNode:16000] master.HMaster: 无法成为活动主机 java.lang.IllegalStateException:过程 WAL 依赖于在组件故障期间进行正确操作的 hsync 能力,但底层文件系统不支持这样做。请检查“hbase.procedure.store.wal.use.hsync”的配置值以设置所需的稳健性级别,并确保“hbase.wal.dir”的配置值指向可以提供它的文件系统挂载。 在 org.apache.hadoop.hbase.procedure2.store.wal.WALProcedureStore.rollWriter(WALProcedureStore.java:1036) 在 org.apache.hadoop.hbase.procedure2.store.wal.WALProcedureStore.recoverLease(WALProcedureStore.java:374) 在 org.apache.hadoop.hbase.procedure2.ProcedureExecutor.start(ProcedureExecutor.java:532) 在 org.apache.hadoop.hbase.master.HMaster.startProcedureExecutor(HMaster.java:1232) 在 org.apache.hadoop.hbase.master.HMaster.startServiceThreads(HMaster.java:1145) 在 org.apache.hadoop.hbase.master.HMaster.finishActiveMasterInitialization(HMaster.java:837) 在 org.apache.hadoop.hbase.master.HMaster.startActiveMasterManager(HMaster.java:2026) 在 org.apache.hadoop.hbase.master.HMaster.run(HMaster.java:547) 在 java.lang.Thread.run(Thread.java:748) 2018-02-08 17:26:54,787 错误 [master/MasterNode/MasterNode:16000] master.HMaster:主服务器中止:加载的协处理器是:[] 2018-02-08 17:26:54,787 错误 [master/MasterNode/MasterNode:16000] master.HMaster:未处理的异常。开始关机。 java.lang.IllegalStateException:过程 WAL 依赖于在组件故障期间进行正确操作的 hsync 能力,但底层文件系统不支持这样做。请检查“hbase.procedure.store.wal.use.hsync”的配置值以设置所需的稳健性级别,并确保“hbase.wal.dir”的配置值指向可以提供它的文件系统挂载。 在 org.apache.hadoop.hbase.procedure2.store.wal.WALProcedureStore.rollWriter(WALProcedureStore.java:1036) 在 org.apache.hadoop.hbase.procedure2.store.wal.WALProcedureStore.recoverLease(WALProcedureStore.java:374) 在 org.apache.hadoop.hbase.procedure2.ProcedureExecutor.start(ProcedureExecutor.java:532) 在 org.apache.hadoop.hbase.master.HMaster.startProcedureExecutor(HMaster.java:1232) 在 org.apache.hadoop.hbase.master.HMaster.startServiceThreads(HMaster.java:1145) 在 org.apache.hadoop.hbase.master.HMaster.finishActiveMasterInitialization(HMaster.java:837) 在 org.apache.hadoop.hbase.master.HMaster.startActiveMasterManager(HMaster.java:2026) 在 org.apache.hadoop.hbase.master.HMaster.run(HMaster.java:547) 在 java.lang.Thread.run(Thread.java:748)
下面是hbase-site.xml文件
<property>
<name>hbase.master</name>
<value>localhost:60000</value>
<description>The host and port that the HBase master runs at.A value of 'lo$
</property>
<property>
<name>hbase.zookeeper.property.clientPort</name>
<value>2181</value>
<description>Property from ZooKeeper's config zoo.cfg.The port at which the$
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>MasterNode,Slave1,Slave2</value>
<description>Comma separated list of servers in the ZooKeeper Quorum.For ex$
</property>
<property>
<name>hbase.rootdir</name>
<value>hdfs://MasterNode:9000/hbase</value>
</property>
<property>
<name>hbase.tmp.dir</name>
<value>/usr/local/zookeeper/data</value>
</property>
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/usr/local/zookeeper/data</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>zookeeper.znode.parent</name>
<value>/hbase</value>
</property>
以下是对 hbase-env.sh 文件设置所做的更改
export JAVA_HOME=/usr/lib/jvm/java-8-oracle
export HBASE_HOME=/usr/local/hadoop/HBase
export HADOOP_HOME=/usr/local/hadoop
export HBASE_MANAGES_ZK=false
export HBASE_PID_DIR=/usr/local/zookeeper/data
下面是core-site.xml
<property>
<name>hadoop.tmp.dir</name>
<value>/app/hadoop/tmp</value>
</property>
<property>
<name>fs.default.name</name>
<value>hdfs://MasterNode:9000</value>
</property>
下面是zoo.cfg
tickTime=2000
dataDir=/usr/local/zookeeper/data
dataLogDir=/usr/local/zookeeper/log
clientPort=2181
initLimit=5
syncLimit=2
server.1=MasterNode:2888:3888
server.2=Slave1:2888:3888
server.3=Slave2:2888:3888
下面是hadoop设置相关的.bashrc设置
export HADOOP_HOME=/usr/local/hadoop
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_PREFIX=/usr/local/hadoop
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HADOOP_CONFDIR=$HADOOP_HOME/etc/hadoop
export HADOOP_OPTS="-Djava.library.path=$HADOOP_PREFIX/lib"
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export PATH=$PATH:$HADOOP_HOME/
export PATH=$PATH:$HADOOP_HOME/bin
export JAVA_LIBRARY_PATH=$HADOOP_HOME/lib/native:$JAVA_LIBRARY_PATH
export JAVA_HOME=/usr/lib/jvm/java-8-oracle
export HBASE_HOME=/usr/local/hadoop/HBase
export PATH=$PATH:$HBASE_HOME/bin
【问题讨论】:
标签: hadoop hbase apache-zookeeper