Ambari部署HDP:HBase Master启动后自动消失

时间:2021-06-09 21:14:14

这是第一次出勤部署产品。遇到不可控问题,解决,写个心得。记录一下吧^^

在排查问题的过程中,学到不少知识。

(1)centos系统盘和数据盘分开,装操作系统的人没有将IT的空间分配出来,所以分区,自动挂载

#lvmdiskscan 查看哪些设备成为了物理卷. 检测硬盘和分区中的逻辑巻管理信息

只有/dev/sda*,说明只有一个物理卷,其余的是/dev/ram*

fdisk /dev/sdb

d n p 1 w 即可删除分区,创建一个新的磁盘。

格式化:mkfs.ext4 /dev/sdb1

查看:ls -l /dev/sdb*  显示有/dev/sdb 和 /dev/sdb1 两项,缺一不可

挂载:mkdir /data1

mount /dev/sdb1 /data1

这样就可以在lvmscandisk下看得到了。在配置平台的时候,就可以作为数据盘了。

(2)ntp同步时间:ntp很重要,因为很多通信都基于ntp同步的

修改date:只有在时间相差不超过10秒时,ntp服务才起效。

date -s '2013-06-17 09:32:10' 修改时间

clock -r 查看CMOS时间

clock -w 将时间写入CMOS

另外一种写法:hwclock -set -date="1/23/01 22:16:59"

ntp服务:ntpq -p

# ntpq -p
Name or service not known

检查:yum list ntp 或者 rpm -qa | grep ntp

再检查/etc/ntp.conf

查看一下内网同步ntp的方法

(3)安装http服务

http没启动,就不能访问本地/var/www/html。

先修改/etc/yum.repo.d/Centos.repo(其余外来的repo最好先删掉)

修改baseurl:baseurl=http://hidata1/redhat 改成 baseurl=file:///var/www/html/redhat 连接到离线安装包。

再yum list http*

再yum install httpd

(4) ambari部署后,Hbase Master启动成功后,自动消失,尝试过很多方法,有些也很有道理。但是归根到底,看日志,一行一行的不放过任何信息是最有效的方式。

如我主要报错的信息是这样的

Dhbase.log.dir=/var/log/hbase -Dhbase.log.file=hbase-hbase-master-hidata2.log
2015-04-23 17:39:16,297 INFO [main] util.ServerCommandLine: vmInputArguments=[-Dproc_master, -XX:OnOutOfMemoryError=kill, -9, %p, -Xmx1000m, -XX:+UseConcMarkSweepGC, -XX:ErrorFile=/var/log/hbase/hs_err_pid%p.log, -verbose:gc, -XX:+PrintGCDetails, -XX:+PrintGCDateStamps, -Xloggc:/var/log/hbase/gc.log-201504231739, -Xmx1024m, -Dhbase.log.dir=/var/log/hbase, -Dhbase.log.file=hbase-hbase-master-hidata2.log, -Dhbase.home.dir=/usr/lib/hbase/bin/.., -Dhbase.id.str=hbase, -Dhbase.root.logger=INFO,RFA, -Djava.library.path=:/usr/lib/hadoop/lib/native/Linux-amd64-64:/usr/lib/hadoop/lib/native, -Dhbase.security.logger=INFO,RFAS]
2015-04-23 17:39:16,420 DEBUG [main] master.HMaster: master/hidata2/21.148.2.41:60000 HConnection server-to-server retries=350 2015-04-23 17:39:17,589 INFO [main] master.HMaster: hbase.rootdir=hdfs://hidata1:8020/apps/hbase/data,
2015-04-23 17:39:17,684 INFO [main-SendThread(hidata6:2181)])] zookeeper.ClientCnxn: Opening socket connection to server hidata6/21.148.2.45:2181. Will not attempt to authenticate using SASL (java.lang.SecurityException: Unable to locate a login configuration) 2015-04-23 17:39:17,907 INFO [master:hidata2:60000] mortbay.log: jetty-6.1.26
2015-04-23 17:39:18,202 INFO [master:hidata2:60000] mortbay.log: Started SelectChannelConnector@0.0.0.0:60010
2015-04-23 17:39:18,323 FATAL [master:hidata2:60000] master.HMaster: Unhandled exception. Starting shutdown.
java.lang.ExceptionInInitializerError
at org.apache.hadoop.hbase.zookeeper.MasterAddressTracker.toByteArray(MasterAddressTracker.java:157)
at org.apache.hadoop.hbase.zookeeper.MasterAddressTracker.setMasterAddress(MasterAddressTracker.java:133)
at org.apache.hadoop.hbase.master.ActiveMasterManager.blockUntilBecomingActiveMaster(ActiveMasterManager.java:155)
at org.apache.hadoop.hbase.master.HMaster.becomeActiveMaster(HMaster.java:664)
at org.apache.hadoop.hbase.master.HMaster.run(HMaster.java:602)
at java.lang.Thread.run(Thread.java:662)
Caused by: java.lang.RuntimeException: Failed to create local dir /boot/efi/hadoop/hbase/local/jars, DynamicClassLoader failed to init
at org.apache.hadoop.hbase.util.DynamicClassLoader.<init>(DynamicClassLoader.java:94)
at org.apache.hadoop.hbase.protobuf.ProtobufUtil.<clinit>(ProtobufUtil.java:197)
... 6 more
2015-04-23 17:48:43,897 INFO [main] util.ServerCommandLine: vmInputArguments=[-Dproc_master, -XX:OnOutOfMemoryError=kill, -9, %p, -Xmx1000m, -XX:+UseConcMarkSweepGC, -XX:ErrorFile=/var/log/hbase/hs_err_pid%p.log, -verbose:gc, -XX:+PrintGCDetails, -XX:+PrintGCDateStamps, -Xloggc:/var/log/hbase/gc.log-201504231748, -Xmx1024m, -Dhbase.log.dir=/var/log/hbase, -Dhbase.log.file=hbase-hbase-master-hidata2.log, -Dhbase.home.dir=/usr/lib/hbase/bin/.., -Dhbase.id.str=hbase, -Dhbase.root.logger=INFO,RFA, -
2015-04-23 17:39:18,335 INFO [master:hidata2:60000] mortbay.log: Stopped SelectChannelConnector@0.0.0.0:60010
2015-04-23 17:39:18,439 WARN [master:hidata2:60000] master.ActiveMasterManager: Failed get of master address: java.io.IOException: Can't get master address from ZooKeeper; znode data == null
2015-04-23 17:39:18,442 INFO [master:hidata2:60000] zookeeper.ZooKeeper: Session: 0x34ce5a44b610000 closed
2015-04-23 17:39:18,442 INFO [master:hidata2:60000] master.HMaster: HMaster main thread exiting
2015-04-23 17:39:18,442 INFO [main-EventThread] zookeeper.ClientCnxn: EventThread shut down
2015-04-23 17:39:18,442 ERROR [main] master.HMasterCommandLine: Master exiting
java.lang.RuntimeException: HMaster Aborted
at org.apache.hadoop.hbase.master.HMasterCommandLine.startMaster(HMasterCommandLine.java:192)
at org.apache.hadoop.hbase.master.HMasterCommandLine.run(HMasterCommandLine.java:134)
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:2778)

  

这是抽取出来可能存在错误或者有用信息的地方。这样可以看出

create local dir /boot/efi/hadoop/hbase/local/jars, DynamicClassLoader failed to init导致的内存溢出和进程崩溃。查看了一下/boot下面空间(df -lh),发现只有200M,原因很显然。比如C盘是我们的系统盘,如果系统盘空间不足,程序会运行会很慢或者直接出现内存不足的提示。当hbase进程起来,需要加载很多的配置和类文件到local dir,到/boot下明显不行。