Hadoop(cdh3)+HBase+ZooKeeper伪分布式部署
在网上搜了很多很多关于hadoop的安装部署说明,但针对CDH3版本的部署却很少说明,结合很多前辈的安装部署说明,终于还是把它给部署起来了,过程很曲折,现在终于完成了,将此过程记录下来,做个总结!
一.安装方式的选择:
网上3种方式都有相关的说明,包括:
1)直接下载安装包手动安装
2)通过CM安装
3)yum安装
本人比较懒,第一种就不考虑了,首先考虑使用第二种方式,前期很顺利但安装到一大半提示类似找不到数据库的错误(具体错误提示当时忘保存了),google了好一阵子,用了各种方法,问题依旧,没办法只好用第三方案了!
二.安装步骤
1.安装源
wgethttp://archive.cloudera.com/redhat/6/x86_64/cdh/cdh3-repository-1.0-1.noarch.rpm
rpm-ivhcdh3-repository-1.0-1.noarch.rpm
cd/etc/yum.repos.d/
wgethttp://archive.cloudera.com/redhat/6/x86_64/cdh/cloudera-cdh3.repo
rpm--importhttp://archive.cloudera.com/redhat/6/x86_64/cdh/RPM-GPG-KEY-cloudera
在/etc/yum.repos.d/路径下生成了一个cloudera-cdh3.repo文件,再修改/etc/yum.conf文件将该repo文件添加到此文件中
2.使用yumsearchhadoop命令搜索源
3.yuminstallhadoop-0.20或sudoinstallhadoophadoop-0.20(非root用户)
4.yuminstallhadoop-namenode
5.yuminstallhadoop-datanode
6.yuminstallhadoop-secondarynamenode
7.yuminstallhadoop-jobtracker
8.yuminstallhadoop-tasktracker
9.yuminstallhadoop-0.20-conf-pseudo
10.yuminstallhadoop-hbase
11.yuminstallhadoop-zookeeper
到此,所有需要安装的服务都已安装完毕
三、配置
由于已一键式安装了hadoop的伪分布式,所以关于hadoop的配置无需修改!
1.配置ssh
#root操作
mkdir/usr/lib/hadoop/.ssh
#修改所有者。
chownhdfs:hdfs/usr/lib/hadoop/.ssh-R
#切换用户
suhdfs
ssh-keygen-tdsa-P''-f~/.ssh/id_dsa
cat~/.ssh/id_dsa.pub>>~/.ssh/authorized_keys
#测试
sshlocalhost
#如果可以登录说明配置好了。
2.执行sh/usr/lib/hadoop/bin/start-all.sh
执行sh/usr/lib/hadoop/bin/stop-all.sh
上述步骤无异常则格式化namenode:
hadoopnamenode-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配置文件如下:
#Thenumberofmillisecondsofeachtick
tickTime=2000
#Thenumberofticksthattheinitial
#synchronizationphasecantake
initLimit=10
#Thenumberofticksthatcanpassbetween
#sendingarequestandgettinganacknowledgement
syncLimit=5
#thedirectorywherethesnapshotisstored.
dataDir=/data0/zoo/zk1/(本人只修改了这个路径)
#theportatwhichtheclientswillconnect
clientPort=2181
5.启动zookeeper(./zkServer.shstart),执行./zkServer.shstatus显示当前为单点模式,貌似成功了其实不然,后面会提到
6.启动hbase(./start-hbase.sh),执行jps,查看已有HMaster和HRegionServer进程,貌似成功了,于是执行hbaseshell,执行list命令,问题来了,报错:
ERRORzookeeper.ZKConfig:novalidquorumserversfoundinzoo.cfg
ERROR:org.apache.hadoop.hbase.ZooKeeperConnectionException:AnerrorispreventingHBasefromconnectingtoZooKeeper
很纳闷,浏览器访问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日志也无异常,执行命令:echoruok|nclocalhost2181,没有提示imok,那说明没有成功启动,验判断一定是个狗血的问题,于是想想最狗血的无非是配置错了,或者环境变量的问题,于是先检查配置,无问题,再检查环境变量,最笨的方法,把环境变量都重新配一次,于是修改/etc/profile文件,exportHBASE_HOME、ZOOKEEPER_HOME、HADOOP_HOME等,再在HBase安装路径下,修改hbase-env.sh,export上述变量外加HBASE_CONF_DIR和HADOOP_CONF_DIR,然后重新启动zookeeper和hbase,并执行下述命令:
echoruok|nclocalhost2181
提示IMOK,这次zookeeper才真是成功启动了,上进入hbaseshell里执行命令没有出现那个错误,总算搞定了!