这是第一次出勤部署产品。遇到不可控问题,解决,写个心得。记录一下吧^^
在排查问题的过程中,学到不少知识。
(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下明显不行。