本文共 5391 字,大约阅读时间需要 17 分钟。
前提:jdk,无密互通,时间同步,zookeeper,hadoop
集群主机名 | study | centos156 | client |
---|---|---|---|
IP | 192.168.233.155 | 192.168.233.156 | 192.168.233.158 |
服务1 | zookeeper 1 | zookeeper 2 | zookeeper 3 |
服务2 | namenode | namenode | |
服务3 | datanode | datanode | datanode |
服务4 | journalnode | journalnode | |
服务5 | nodemanager | nodemanager | nodemanager |
服务6 | zkfc | zkfc | |
服务7 | ResourceManager | ||
服务8 | hmaster | hmaster | hmaster |
服务9 | ResourceManager |
#下载hbase:
#本文档用的1.2.6版本cd /tmp/
wget #解压tar axf hbase-1.2.6-bin.tar.gz -C /usr/local/#重命名mv /usr/local/hbase-1.2.6/ /usr/local/hbase#修改环境变量vim /etc/profile#hbase
export HBASE_HOME=/usr/local/hbaseexport PATH=$PATH:$HBASE_HOME/bin
source /etc/profile
#修改配置文件cd $HBASE_HOME/confvim hbase-env.sh#添加如下行export JAVA_HOME=/usr/local/jdk
export HBASE_MANAGES_ZK=false
修改JVM只需修改hbase-env.sh中的HBASE_MASTER_OPTS和HBASE_REGIONSERVER_OPTS
vim hbase-site.xml<configuration>
<property><name>hbase.rootdir</name><value>hdfs://hadoop/hbase</value><description>region server的共享目录,指定的是hdfs中的目录(如果hdfs做了HA应该指向core-site.xml中的hdfs逻辑名,负责namenode出现状态迁移hbase将故障),这里指定的是/hbase,可以指定写在本地目录,默认为file:///tmp/hbase-${user.name}/hbase</description></property> <property><name>hbase.cluster.distributed</name><value>true</value><description>HBase的运行模式,false是单机模式,true是分布式模式</description></property> <property><name>hbase.zookeeper.property.clientPort</name><value>2181</value><description>zookeeper连接端口</description></property><property><name>hbase.zookeeper.quorum</name><value>study,centos156,client</value><description>zookeeper节点地址</description></property><property><name>zookeeper.session.timeout</name><value>60000</value><description>会话超时时间,单位毫秒</description></property><property><name>hbase.zookeeper.property.dataDir</name><value>/usr/local/zookeeper</value><description>ZooKeeper的zoo.conf中的配置,快照存储位置</description></property></configuration>
#指定regionservers节点
vim regionserversstudy
centos156client
#将文件复制到其他节点
scp -r /usr/local/hbase/ centos156:/usr/local/scp -r /usr/local/hbase/ client:/usr/local/scp /etc/profile centos156:/etc/scp /etc/profile client:/etc/source /etc/profile
source /etc/profile
start-hbase.sh
这里的警告信息是因为我用的8的jdk这并没有什么影响查看状态hbase shell#status查看状态启动其他机器上的hmaster作为备用节点
hbase-daemon.sh start master
hbase-daemon.sh start master
查看状态hbase shell#status查看状态关闭加点一上的hmaster测试
hbase-daemon.sh stop master现看hbase-site.xml文件中将数据放哪了
hbase.rootdir hdfs://study:9000/hbase
因为我们放在了hadoop中,所以只需要进行hadoop的数据迁移
数据备份mkdir /tmp/hbase
chmod 777 /tmp/hbasehadoop fs -copyToLocal hdfs://study:9000/ /tmp/hbase
数据恢复
先用u盘或者其他的任何方式将文件传输到目标机器hadoop fs -copyFromLocal /tmp/hbase hdfs://study:9000/
hadoop fs -ls /
重启hbase
stop-hbase.sh
start-hbase.sh
-Xmx Heap(堆内存)最大允许值
-Xms Heap(堆内存)最小允许值-Xmn 年轻代大小
vim hbase-env.sh
export HBASE_OPTS="-XX:+UseConcMarkSweepGC -Xmx4000m -Xms4000m -Xmn1000m -XX:+UseParNewGC -XX:CMSInitiatingOccupancyFraction=70"
vim hbase-env.sh
export HBASE_MASTER_OPTS="$HBASE_MASTER_OPTS $HBASE_JMX_BASE -Xmx4000m -Xms4000m -Xmn1000m -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=70"
vim hbase-env.sh
export HBASE_REGIONSERVER_OPTS="$HBASE_REGIONSERVER_OPTS $HBASE_JMX_BASE -Xmx4000m -Xms4000m -Xmn1000m -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=70"
测试hive、spark重新搭建hadoop集群,结果遇到如下报错
2018-01-10 11:21:44,336 ERROR [main] master.HMasterCommandLine: Master exitingjava.lang.RuntimeException: Failed construction of Master: class org.apache.hadoop.hbase.master.HMaster. at org.apache.hadoop.hbase.master.HMaster.constructMaster(HMaster.java:2512) at org.apache.hadoop.hbase.master.HMasterCommandLine.startMaster(HMasterCommandLine.java:231) at org.apache.hadoop.hbase.master.HMasterCommandLine.run(HMasterCommandLine.java:137) at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70) at org.apache.hadoop.hbase.util.ServerCommandLine.doMain(ServerCommandLine.java:126) at org.apache.hadoop.hbase.master.HMaster.main(HMaster.java:2522)Caused by: java.io.IOException: Port 9000 specified in URI hdfs://master:9000/hbase but host 'master' is a logical (HA) namenode and does not use port information. at org.apache.hadoop.hdfs.NameNodeProxies.createFailoverProxyProvider(NameNodeProxies.java:488) at org.apache.hadoop.hdfs.NameNodeProxies.createProxy(NameNodeProxies.java:148)
回忆以前搭建的流程(翻文档。。。)发现时间没有同步
将时间同步弄好了之后启动还是这样的报错,怀疑是缓存引起的一怒之下删除了/tmp和hbae下的所有文件,然后重新搭建hbase然后问题解决了
从现象上看引起该问题主要原因就是服务器间时间不同步
HMaster怎么都起不来
查看报错org.apache.hadoop.ipc.RemoteExceptionOperation category READ is not supported in state standby
这是hadoop集群出现了异常,查看集群状态,详情查看
报错
2018-01-22 20:58:56,177 FATAL [slave2:16000.activeMasterManager] master.HMaster: Failed to become active masterorg.apache.hadoop.security.AccessControlException: Permission denied: user=root, access=WRITE, inode="/hbase/.tmp":hadoop:supergroup:drwxr-xr-x
这是因为root用户对hadoop中该目录没有写权限,用之前使用的用户启动或还hadoop目录权限。
转载于:https://blog.51cto.com/13323775/2055195