基于CentOS安装CDH3Beta4版的Hadoop和HBase

一、背景

因为最近使用Hadoop发现了一些问题,而且也没有太多的时间去对其本身进行修改,所以,在朋友的建议下采用了cloudera的CDH3版本。相对来说比较稳定和可靠,官网的地址如下:http://www.cloudera.com/

二、CentOS和JDK安装步骤

1、进入到centOS的官方网址http://isoredirect.centos.org/centos/5/isos/x86_64/

2、选一个镜像点击进去,下载CentOS-5.5-x86_64-bin-DVD.torrent种子。

3、用迅雷下载iso文件。

4、把该iso刻录成DVD成服务器系统安装盘。

5、用刻录好的系统安装盘启动服务器。

问题:如果服务器是8块硬盘,每块硬盘为500GB空间,约4TB容量。对于单逻辑硬盘超过2T以上的服务器,安装CentOS时,需要将分出一个小于2T的磁盘上,否则会报告“Your boot partition is on a disk using the GPT partitioning Scheme but this machines cannot boot using GPT。“

解决方案:重启服务器,用ctrl+H 进入到raid卡分区操作界面。设置成用一块硬盘作为系统盘,做raid0;剩下的7块硬盘作为另外一个区,做raid5。

6、安装jdk-6u24-linux-x64-rpm.bin,需要说明的是,尽可能的使用64位的JDK版本。

三、CDH3 Beta4 下载

1、进入到CDH3的官方下载网址http://archive.cloudera.com/cdh/3/

2、下载hadoop-0.20.2-CDH3B4/hadoop-0.20.2-CDH3B4.tar.gz和hbase-0.90.1-CDH3B4/hbase-0.90.1-CDH3B4.tar.gz。

四、CDH3 Beta4 安装

1、由于CDH3默认没法用root启动,会报错“May not run daemons as root. Please specify HADOOP_NAMENODE_USER “,所以需要创建新用户。

2、Hadoop要求所有机器上hadoop的部署目录结构要相同,并且都有一个相同的用户名的帐户,所以需要每台机器建一个同名的用户。

3、新建系统hadoop用户。

4、每台机器的用户名和密码都为hadoop。

5、命令:#adduser hadoop;#passwd hadoop,回车输入hadoop。

6、三台机器都拷贝一份hadoop-0.20.2-CDH3B4.tar.gz到hadoop用户下。

7、解压hadoop-0.20.2-CDH3B4.tar.gz。 tar –zxvf hadoop-0.20.2-CDH3B4.tar.gz –C /home/hadoop/cdh3。

8、在master上用户hadoop配置无密码登录本机和每个slave。

9、首先用hadoop用户登录每台机器(包括namenode),在/home/hadoop/目录下建立.ssh目录。

10、将目录.ssh权限设为:drwxr-xr-x,设置命令: chmod 755 .ssh。

11、用hadoop用户登录每台机器,修改/home/hadoop/.ssh/authorized_keys文件的权限为:-rw-r–r–,设置命令:$ cd /home/hadoop/.ssh,$ chmod 644 authorized_keys。

12、ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa,直接回车,完成后会在~/.ssh/生成两个文件:id_dsa 和id_dsa.pub。这两个是成对出现,类似钥匙和锁。

13、$ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys。

14、拷贝id_dsa.pub到其他的每个slave上,追加在authorized_keys文件中。

15、设置完成后,测试一下namenode到各个datanode节点的ssh链接,包括到本机,如果不需要输入密码就可以ssh登录,说明设置成功了。

16、启动hadoop,start-all.sh。

17、若datanode没启动,看logs,报错:

java.net.NoRouteToHostException: No route to host
        at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)
        at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:567)
        at org.apache.hadoop.net.SocketIOWithTimeout.connect(SocketIOWithTimeout.java:206)
        at org.apache.hadoop.net.NetUtils.connect(NetUtils.java:408)
        at org.apache.hadoop.hdfs.server.datanode.DataXceiver.writeBlock(DataXceiver.java:338)
        at org.apache.hadoop.hdfs.server.datanode.DataXceiver.run(DataXceiver.java:122)是防火墙的原因,运行如下命令:

临时关闭防火墙服务,重启后失效:
su -
#/etc/init.d/iptables stop

五、安装HBase

相关推荐