基于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