IP | 编号 | 安装软件 | 主机名 | 进程 |
192.168.18.27 | node1 | jdk/hadoop/hbase | 主Master27 | NameNode、DFSZKFailoverController、ResourceManager、HMaster |
192.168.18.28 | node2 | jdk/hadoop/hbase | 备份Master28 | NameNode、DFSZKFailoverController、ResourceManager、HMaster |
192.168.18.29 | node3 | jdk/hadoop/zookeeper/hbase | dn29 | DataNode、NodeManager、JournalNode、QuorumPeerMain、HRegionServer |
192.168.18.30 | node4 | jdk/hadoop/zookeeper/hbase | dn30 | DataNode、NodeManager、JournalNode、QuorumPeerMain、HRegionServer |
192.168.18.31 | node5 | jdk/hadoop/zookeeper/hbase | dn31 | DataNode、NodeManager、JournalNode、QuorumPeerMain、HRegionServer |
在配置 hbase-env.sh 前先在 hbase 的安装目录下创建两个文件,如下
$ mkdir logs # hbase 的日志目录
$ mkdir pids # hbase 的pids目录
编辑 conf/ hbase-env.sh 文件,添加如下内容
# 配置JDK安装路径
export JAVA_HOME=/home/hadoop/app/jdk
# 配置hadoop安装路径
export HADOOP_HOME=/home/hadoop/app/hadoop
# 配置hbase日志目录
export HBASE_LOG_DIR=${HBASE_HOME}/logs
# 设置HBase的pid目录
export HBASE_PID_DIR=${HBASE_HOME}/pids
# 使用独立的zookeeper集群(默认为true,即使用hbase 的内置的zk)
export HBASE_MANAGES_ZK=false
注释46、47行 *_OPTS 的两行内容(前面加符号‘#)
在 configuration 节点中添加如下内容
hbase.rootdir
hdfs://cluster/hbase
hbase.cluster.distributed
true
hbase.tmp.dir
/home/hadoop/app/hbase/tmp
hbase.zookeeper.quorum
dn29,dn30,dn31
hbase.zookeeper.property.dataDir
/home/hadoop/app/zookeeper/data
zookeeper.session.timeout
120000
hbase.regionserver.restart.on.zk.expire
true
jdk、hadoop、zookeeper、hbase 所有环境变量如下
# Java Environment Variable
export JAVA_HOME=/home/hadoop/app/jdk
# Hadoop Environment Variable
export HADOOP_HOME=/home/hadoop/app/hadoop
export HADOOP_INSTALL=$HADOOP_HOME
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin
# HBase Environment Variable
export HBASE_HOME=//home/hadoop/app/hbase
# PATH
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/sbin:$HADOOP_HOME/bin:$HBASE_HOME/bin
$ source ~/bash.rc # 使环境变量立即生效
$ zkServer.sh start # node3、node4、node5
$ start-dfs.sh # node1
$ start-yarn.sh # node1
$ yarn-daemon.sh start resourcemanager # node2
$ start-hbase.sh # node1
$ hbase-daemon.sh start master # node2
$ hbase-daemon.sh stop master # node2
$ stop-hbase.sh # node1
$ stop-dfs.sh # node1
$ stop-yarn.sh # node1
$ yarn-daemon.sh stop resourcemanager # node2
$ zkServer.sh stop # node3、node4、node5
***********************************************************
当前 node1 上的进程为:
2804 DFSZKFailoverController
2503 NameNode
4263 Jps
2923 ResourceManager
3182 HMaster
***********************************************************
当前 node2 上的进程为:
2587 ResourceManager
2460 DFSZKFailoverController
2860 HMaster
4220 Jps
2381 NameNode
***********************************************************
当前 node3 上的进程为:
2388 QuorumPeerMain
2516 JournalNode
2622 NodeManager
3118 Jps
2447 DataNode
***********************************************************
当前 node4 上的进程为:
2354 QuorumPeerMain
2419 DataNode
2599 NodeManager
2488 JournalNode
3356 Jps
2799 HRegionServer
***********************************************************
当前 node5 上的进程为:
2784 HRegionServer
2582 NodeManager
2410 DataNode
3389 Jps
2351 QuorumPeerMain
2479 JournalNode
$ hbase shell # 进入hbase 的 shell 客户端
$ quit # 退出,或使用exit
高可用集群启动常见问题:
1、启动集群查看进程发现master下缺少HMaster进程,但是dn下有HRegionServer这个进程,这时去master机子下hbse检查logs文件会发现报这个问题:File /hbase/.tmp/hbase.version could only be replicated to 0 nodes instead of minReplication (=1). There are 0 datanode(s) running and no node(s) are excluded in this operation
原有是多次执行./hdfs namenode -format 造成,解决办法手动在各个节点中删除tmp文件夹内容的内容然后从新启动datanode服务就可以启动了