搭建Zookeeper与Hbase过程及遇到的问题总结

来源:互联网 发布:淘宝反作弊模型 编辑:程序博客网 时间:2024/05/21 06:35

我的经验是最好放在hadoop一块,这样可以做个全盘拷贝与管理。比如之前安装的hadoop在/usr/hadoop目录下,那就把这2个组件放在一块,比如统一放在:/usr/hadoop/...或 /home/hadoop/...这样以后再有组件也可以放在这里,方便了后续集群的重新部署。为了避开混淆,可以不使用hadoop,如使用:hdfs,bigdata, cloud,and so># The number of milliseconds of each ticktickTime=2000# The number of ticks that the initial # synchronization phase can takeinitLimit=10# The number of ticks that can pass between # sending a request and getting an acknowledgementsyncLimit=5# the directory where the snapshot is stored.dataDir=/home/hdfs/zookeeper# the port at which the clients will connectclientPort=2181initLimit=5syncLimit=2dataLogDir=/home/hdfs/zookeeper/logsserver.1=192.168.1.70:2888:3888server.2=192.168.1.71:2888:3888server.3=192.168.1.72:2888:3888server.4=192.168.1.73:2888:3888 (2)创建myid文件与logs目录 

1) myid文件是在zookeeper_home下直接新建一个myid文件,并在里面写入编号。编号的确定是根据zoo.cfg里 自己ip对应的 server.X 

2)logs目录也是自己手动创建的。

2.安装hbase

解压安装后,修改conf 里的配置文件:

(1) hbase-env.sh

export JAVA_HOME=/usr/java/jdk1.7.0_17/export HBASE_CLASSPATH=/usr/hadoop/confexport HBASE_OPTS="$HBASE_OPTS -XX:+HeapDumpOnOutOfMemoryError -XX:+UseConcMarkSweepGC -XX:+CMSIncrementalMode"#export HBASE_OPTS="-ea -XX:+UseConcMarkSweepGC -XX:+CMSIncrementalMode"export HBASE_MANAGES_ZK=falseexport HBASE_PID_DIR=/home/hdfs/pids  #目录应该为hadoop:hadoop所有,以免发生权限问题

要注意的是:   HBASE_MANAGES_ZK 和 HBASE_PID_DIR

(2)hbase-site.xml
<?xml version="1.0"?><?xml-stylesheet type="text/xsl" href=http://my.oschina.net/hanzhankang/blog/"configuration.xsl"?><configuration><property><name>hbase.rootdir</name><value>hdfs://Master.Hadoop:9000/hbase</value></property><property><name>hbase.cluster.distributed</name><value>true</value></property><property><name>hbase.master</name><value>192.168.1.70:60000</value></property><property><name>hbase.zookeeper.quorum</name><value>192.168.1.71,192.168.1.72,192.168.1.73</value></property><!-- End of properties that are directly mapped from ZooKeeper's zoo.cfg --></configuration>

(3)regionservers

在regionservers添加slaves的ip:

192.168.1.71192.168.1.72192.168.1.73

3.启动/测试

启动顺序:hadoop-->zookeeper-->hbase

关闭顺序:hbase-->zookeeper-->hadoop

1)启动zookeeper

zookeeper的启动需要分别在每个计算机的节点上手动启动。进入zookeeper/bin目录: 

[... bin]$ ./zkServer.sh start[... bin]$ jps#启动成功应该含有:QuorumPeerMain 进程查看状态:(已全部手动启动集群中的zookeeper)[... bin]$ ./zkServer.sh status......#会显示 Model:follower/leader 关闭zookeeper[... bin]$ ./zkServer.sh stop

2)启动hbase

在hbase的bin下进行操作:(注意顺序)

[... bin]$ ./hbase-daemon.sh start master //启动Master[... bin]$ ./start-hbase.sh[... bin]$ ./hbase shell //shell命令行接口,进入后可使用list显示tables……[... bin]$ ./hbase-daemon.sh stop master //启动Master[... bin]$ ./stop-hbase.sh

可以通过:http://192.168.1.70:60010/master-status 查看hbase允许状态,也可通过其判断是否成功启动。

4.错误解决及排除

(1)zookeeper遇到的问题:

1)Error contactiong service. It is probably not runnin

查看zookeeper状态时出现:Error contactiong service. It is probably not running

先使用jps查看是否有QuorumPeerMain;

再查看2181端口是否开启:   netstat -an | grep 2181 

如果这2项都没有问题,原因可能是你只是单机启动,集群中其他计算机并没有启动zookeeper,把集群中其他的启动后再使用此命令。而且此命令功能太过单一,反馈信息也不准确。 

(2)Hbase遇到的问题

ERROR: org.apache.hadoop.hbase.MasterNotRunningException: Retried 7 times

问题发生在list 查看表时,通过查看 logs/ 下的日子信息:

stopping hbasecat: /tmp/hbase-mango-master.pid: No such file or directory  

发现是HBASE_PID_DIR 没有配置,使用的是默认配置,但是默认配置会在下次启动后自动清除,所以需要手动配置并创建相应的文件。(参考:hbase-env.sh)  

(3)hadoop遇到的问题

All directories in dfs.data.dir are invalid

这个问题以前没有遇到过,而且在之前节点启动正常,但这次不知道是何原因。

通过:hadoop dfsadmin -report 发现一个节点没有启动,通过查看此节点的logs信息,发现是文件权限引起的:Invalid directory in dfs.data.dir: Incorrect permissionfor /hadoop/hadoop-data, expected: rwxr-xr-x, while actual: rwxrwxr-x 

更改权限,文件解决:chmod g-w /hadoop/hadoop-data/    (其他节点权限和以前一样却没有出现这问题,好奇怪~~)

Ps:最有效、快速定位错误的方法是看logs,千万不要忽视了哦! 

0 0
原创粉丝点击