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里执行命令没有出现那个错误,总算搞定了!

相关推荐