读书人

在Ubuntu10.04下分布式部署Hadoop0.20

发布时间: 2012-09-22 21:54:54 作者: rapoo

在Ubuntu10.04上分布式部署Hadoop0.20.2

? 首先做一下简要说明,Ubuntu是装在虚拟机上的,虚拟机既存在不同的主机上,寄存主机在同一个内网里,这里有一个注意点,Network的连接方式要用桥接(Bridged),这样能使VM的IP和Host在同一个网段,能保证VM之间能够互相ping的通。(亲自试验结果)

分布式结构如下,一个namenode和一个datanode:

172.28.0.73???hadoop-namenode

172.28.0.77???hadoop-datanode1

下面进入正文,安装配置:

?

一、 hostname的配置操作

1、修改hosts文件,如下:

sudo su root

gedit /etc/hosts

修改内容如下:

172.28.0.73???hadoop-namenode

172.28.0.77???hadoop-datanode1

?

2、修改hostname,namenode上修改为hadoop-namenode,datanode修改为hadoop-datanode1,我这里只演示namenode上的操作,以下同上,有特别的地方我会说明的。

hostname hadoop-namenode

这样不能彻底修改hostname(主机名),重启后还会还原到默认的Ubuntu,要彻底修改要修改/etc/hostname,namenode和datanode各自修改为自己的hostname

gedit /etc/hostname hadoop-namenode

把原来的Ubuntu删掉,不要用#注释,直接删掉,因为#没用,修改内容:

hadoop-namenode

退出shell客户端,重新进入,并且换成root操作

exit

sudo su root

?

3、这些工作都做好了,ping一下看看能不能ping通,用节点名称ping

ping hadoop-datanode1

?

二、安装jdk用的是截至2011/1/6最新的版本?jdk-6u23-linux-i586.bin

1、把jdk安装文件拷贝到/usr/lib目录下,然后安装

cp jdk-6u23-linux-i586.bin /usr/lib

cd /usr/lib

chmod u+x chmod

./jdk-6u23-linux-i586.bin

2、安装已完成修改环境变量并且把java安装到系统

配置环境变量,编写一个java.sh放到/etc/profile.d下面,内容如下:

#set jdkenvironment

exportJAVA_HOME=/usr/lib/jdk1.6.0_23

exportJRE_HOME=/usr/lib/jdk1.6.0_23/jre

exportCLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib

exportPATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH

提升java.sh的权限:

chmod 775 /etc/profile.d/java.sh

把Java安装到系统:

ln s /usr/lib/jdk1.6.0_23/bin/java/usr/bin/java

查看Java版本确定已经安装到系统:

java version

如果看到版本说明安装成功

?

三、SSH无密码验证配置

ssh-keygen trsa

会在/root下生成一个.ssh目录,.ssh目录下会生成一个id_rsa的私钥和id_rsa.pub的公钥,把公钥拷贝成authorized_keys,这样可以通过ssh连接自己?

apt-get update

apt-get install openssh-server

cd /root/.ssh

cp id_rsa.pub authorized_keys

ssh hadoop-namenode

在datanode节点做一下同样的操作,然后把id_rsa.pub拷到datanode的/root/.ssh下面,好多资料上都是这样写的,scp id_rsa.pub hadoop-datanode:/root/.ssh172.28.0.73,一开始我也这样做的但是考不过去,后来我直接用U盘拷到datanode节点上然后拷贝到/root/.ssh下面,在追加到datanode的authorized_keys上面

cp id_rsa.pub /root/.ssh 172.28.0.73

cat 172.28.0.73 >>authorized_keys

此时,我们的namenode可以无密码访问datanode了,回到hadoop-namenode上

ssh hadoop-datanode1

现在可以连接了,至于想让datanode访问namenode原理是一样的,但我觉得没有这个必要。

四、关闭防火墙

ufw disable

五、安装Hadoop

1、在/opt目录下建立hadoop目录,把hadoop-0.20.2.tar.gz拷贝到/opt/hadoop目录下,然后解压:

mkdir /opt/hadoop

cp hadoop-0.20.2.tar.gz /opt/hadoop

cd /opt/hadoop

tar zxvf hadoop-0.20.2.tar.gz

cd hadoop-0.20.2

2、配置Hadoop

1、编辑conf/hadoop-env.sh文件,把JAVA_HOME设置成Java安装根路径,如下:

exportJAVA_HOME=/usr/lib/jdk1.6.0_23

记住把export前面的#去掉

2、配置core-site.xml

gedit /conf/core-site.xml

修改内容如下:

?

<configuration><property><name>hadoop.tmp.dir</name><value>/opt/hadoop/tmp</value>( 注意,请先在 hadoop 目录下建立 tmp 文件夹 )<description>A base for other temporary directories.</description></property><!-- file system properties --><property><name>fs.default.name</name><value>hdfs://hadoop-namenode:9000</value></property></configuration> 
?

?

3、配置hdfs-site.xml

gedit conf/hdfs-site.xml

内容如下:

?

<configuration><property><name>dfs.replication</name><value>1</value>(replication 是数据副本数量,默认为 3 , datanode 少于 3 台就会报错 )</property><property>    <name>dfs.name.dir</name>    <value>/opt/hadoop/hdfs/name</name></property><property>    <name>dfs.data.dir</name>    <value>/opt/hadoop/hdfs/data</name></property>( 以上两项很多教程上是没有的,但是我试过没有会出错,应该是 namenode 和 datanode 的 filesystem 的问题,另外 /opt/hadoop/hdfs 要自己建 )</configuration> 
?

?

4、配置mapred-site.xml

gedit conf/mapred-site.xml

内容如下:

?

<configuration><property><name>mapred.job.tracker</name><value>hadoop-namenode:9001</value></property></configuration> 
?

?

5、配置masters和slaves来设置主从节点,注意最好使用主机名,并且保证VM之间可以通过主机名可以互相访问,每个主机名一行

masters:

hadoop-namenode

salves:

hadoop-datanode1

??????因为之前配置了SSH无密码验证,所以现在可以使用scp命令把hadoop的配置直接拷到datanode上,也可以不用在datanode上安装hadoop,把整个的拷过去,但是太大,传输不方便,建议在datanode端装好了,拷贝配置就可以了,原则上masters配置只要在namenode端,而slaves在datanode端,不过都配也无所谓。命令如下:

??????scp confhadoop-datanode1:/opt/hadoop/hadoop-0.20.2

??????

??????到这里hadoop的分布式安装就完成了,现在我们就来初始配置:

??????1、格式化hadoop

?????? ./bin/hadoopnamenode -format

2、启动hadoop

./bin/start-all.sh

通过日志可以看出,首先启动namenode,然后启动datanode

3、在namenode上查看集群状态:

./bin/hadoop dfsadmin report

Web查看方式:http://hadoop-namenode:50070


?

读书人网 >开源软件

热点推荐