Hadoop(cdh3)+HBase+ZooKeeper伪分布式部署

在网上搜了很多很多关于hadoop的安装部署说明,但针对CDH3版本的部署却很少说明,结合很多前辈的安装部署说明,终于还是把它给部署起来了,过程很曲折,现在终于完成了,将此过程记录下来,做个总结!
一.安装方式的选择:
网上3种方式都有相关的说明,包括:
1)直接下载安装包手动安装
2)通过CM安装
3)yum安装

本人比较懒,第一种就不考虑了,首先考虑使用第二种方式,前期很顺利但安装到一大半提示类似找不到数据库的错误(具体错误提示当时忘保存了),google了好一阵子,用了各种方法,问题依旧,没办法只好用第三方案了!
二.安装步骤
1.安装源
wget http://archive.cloudera.com/redhat/6/x86_64/cdh/cdh3-repository-1.0-1.noarch.rpm

rpm -ivh cdh3-repository-1.0-1.noarch.rpm

cd /etc/yum.repos.d/

wget http://archive.cloudera.com/redhat/6/x86_64/cdh/cloudera-cdh3.repo

rpm --import http://archive.cloudera.com/redhat/6/x86_64/cdh/RPM-GPG-KEY-cloudera
在/etc/yum.repos.d/ 路径下生成了一个cloudera-cdh3.repo文件,再修改/etc/yum.conf文件将该repo文件添加到此文件中
2.使用yum search hadoop命令搜索源
3.yum install hadoop-0.20 或 sudo install hadoophadoop-0.20(非root用户)
4.yum install hadoop-namenode
5.yum install hadoop-datanode
6.yum install hadoop-secondarynamenode
7.yum install hadoop-jobtracker
8.yum install hadoop-tasktracker
9.yum install hadoop-0.20-conf-pseudo
10.yum install hadoop-hbase
11.yum install hadoop-zookeeper
到此,所有需要安装的服务都已安装完毕
三、配置
由于已一键式安装了hadoop的伪分布式,所以关于hadoop的配置无需修改!
1.配置ssh
#root 操作
mkdir /usr/lib/hadoop/.ssh
#修改所有者。
chown hdfs:hdfs /usr/lib/hadoop/.ssh -R
#切换用户
su hdfs
ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
#测试
ssh localhost
#如果可以登录说明配置好了。
2.执行 sh /usr/lib/hadoop/bin/start-all.sh
  执行 sh /usr/lib/hadoop/bin/stop-all.sh
上述步骤无异常则格式化namenode:
hadoop namenode -format
3.到hbase路径下修改hbase-site.xml文件,修改hbase.rootdir属性值,与core-site.xml中fs.default.name属性值一致并在后面追加一个目录,例如core-site.xml中的fs.default.name属性值为hdfs://localhost:8020则hbase.rootdir属性值为hdfs://localhost:8020/hbase
并添加如下属性值:
<property>
    <name>dfs.replication</name>
    <value>1</value>
  </property>
<property>
   <name>hbase.cluster.distributed</name>
   <value>true</value>
</property>
<property>
   <name>hbase.zookeeper.quorum</name>
   <value>localhost</value>
</property>
4.修改zookeeper配置文件如下:
# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
dataDir=/data0/zoo/zk1/(本人只修改了这个路径)
# the port at which the clients will connect
clientPort=2181
5.启动zookeeper(./zkServer.sh start),执行./zkServer.sh status 显示当前为单点模式,貌似成功了其实不然,后面会提到
6.启动hbase(./start-hbase.sh),执行jps,查看已有HMaster和HRegionServer进程,貌似成功了,于是执行 hbase shell ,执行list命令,问题来了,报错:
ERROR zookeeper.ZKConfig: no valid quorum servers found in zoo.cfg

ERROR: org.apache.hadoop.hbase.ZooKeeperConnectionException: An error is preventing HBase from connecting to ZooKeeper

很纳闷,浏览器访问HMaster页面,显示了zookeeper信息,貌似没问题呀!

无奈,先关闭hbase,提示无法停止zookeeper,难道hbase自己也启动了一个zookeeper,想起hbase-env.sh里有个配置,虽然是被注释的,但是可能HBASE启动的时候默认就给赋值了,于是在hbase-env.sh文件中取消HBASE_MANAGES_ZK配置的注释,并将值改成false,同时取消JAVA_HOME和HBASE_OPTS两个属性的值,再次执行上述操作,报错依旧,但关闭HBASE时没有再报无法关闭zookeeper的提示,网上搜了很多方法,试了都不管用,就快要崩溃时,想想这个问题很明显是没有连接上zookeeper,那么不是HBASE启动有问题就是zookeeper没有启动成功,检查HBase日志,无异常,zookeeper日志也无异常,执行命令:echo ruok | nc localhost 2181,没有提示imok,那说明没有成功启动,验判断一定是个狗血的问题,于是想想最狗血的无非是配置错了,或者环境变量的问题,于是先检查配置,无问题,再检查环境变量,最笨的方法,把环境变量都重新配一次,于是修改/etc/profile文件,export HBASE_HOME、ZOOKEEPER_HOME、HADOOP_HOME等,再在HBase安装路径下,修改hbase-env.sh,export 上述变量外加HBASE_CONF_DIR和HADOOP_CONF_DIR,然后重新启动zookeeper和hbase,并执行下述命令:
echo ruok | nc localhost 2181

提示IMOK,这次zookeeper才真是成功启动了,上进入hbase shell 里执行命令 没有出现那个错误,总算搞定了!

猜你喜欢

转载自xmanliang.iteye.com/blog/2001294