lawrencesgj 2012-02-02
之前说过,我们的hadoop集群已经搭建起来了,只是具体的步骤还没来得及整理,幸好今天又把流程走了一遍,真的是不做不晓得,一做才发现自己原来什么都忘记得差不多了,在此记录一下搭建hadoop集群的步骤,便于需要的时候看看!
这个配环境的过程真的是比较困难的,我今天搞了一天终于把自己的机器作为datanode连接上了master机器,我还是年前搞过一遍的呢,所以这个还是需要耐心+细心的!
这里首先声明一下,我之前在我的机器上配置过了hadoop的单机伪分布环境,今天才将我的机器作为一个datanode加入到hadoop集群上的,但是装的ubuntu的版本和jdk的位置跟集群上的都不一样,这说明这个不影响hadoop集群的配置,但是,jdk的版本号和hadoop的版本号以及hadoop装的位置都必须是一样的!下面我们就开始吧!
一、资源的准备:
(1)ubuntu-11.10-beta2-desktop-i386.iso ,ubuntu的安装,直接双击下载的这个东西就行了,真的就像装软件一样!
(2)jdk-6u30-linux-i586.bin,安装jdk要用的,一个hadoop集群上只能用一个版本的jdk,我们用的是这个版本。
(3)hadoop-0.20.203.0rc1.tar.gz,安装hadoop集群必备的!
二、jdk的安装(这里的路径可以自己确定,不一定要和集群上的一样) 我的是放在/home/acer下面的(acer是我电脑的用户名)
1.将刚才准备的jdk放到这个目录下(这一步不是必要的)
sudo cp jdk以前的路径 jdk现在的路径 2.解压执行安装jdk(这里会涉及到权限的问题)
先修改jdk文件的权限
sudochmodu+xjdk-6u30-linux-i586.bin
再执行安装
sudo./jdk-6u30-linux-i586.bin
第二步完成之后就会在/home/acer/目录下出现一个jdk1.6.0_30的文件夹
3.配置环境变量
编辑配置文件:sudogedit/etc/profile
在这个文件最后面添加这么几行:export JAVA_HOME=/home/acer/jdk1.6.0_30
export JRE_HOME=/home/acer/jdk1.6.0_30/jre export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$PATH
4.重启机器,查看jdk是否安装成功以及版本号 在终端输入:java
如果出来一系列目录东东就是正确了 在终端输入:java -version
可以查看jdk的版本号 如果木有安装成功,可能就是配置问题了,慢慢看,细心点就应该没有问题了!
三、安装hadoop(主要针对master机器) 只要在master机器上安装hadoop就行了,其他机器上的hadoop都可以直接通过连接远程服务器的方式进行复制,这样就方便多了!
1.将刚才准备的 hadoop-0.20.203.0rc1.tar.gz文件复制到/usr/local文件目录下面: sudo cp hadoop压缩包路径 /usr/local
2.解压hadoop软件包
sudotar-xzfhadoop-0.20.203.0rc1.tar.gz
为了以后写目录方便,将解压出来的文件修改名字为hadoop:
sudo mv hadoop-0.20.203.0 hadoop3.为hadoop集群中的每一个节点都创建一个hadoop的用户组和hadoop用户名,这样便于记忆以及管理
建立hadoop用户组:sudoaddgrouphadoop
在hadoop用户组下面建立一个hadoop用户名:
sudoadduser-ingrouphadoophadoop
(这里创建hadoop用户的时候很多信息你不用去添,一直按enter键就行了)
4.添加hadoop用户的权限
打开sudoers文件:sudogedit/etc/sudoers
在rootALL=(ALL:ALL)ALL后面加上一行:
hadoop ALL = (ALL) ALL创建了hadoop用户了之后我们以后就都在这个下面进行终端的操作了!
5.配置conf/hadoop-env.sh文件;
切换路径:cd/usr/local/hadoop
编辑文件:sudogeditconf/hadoop-env.sh
将JAVA_HOME前面的#号去掉,java路径改为:
JAVA_HOME=/home/acer/jdk1.6.0_30
6.配置hosts文件(建立映射关系,用户名和ip一一对应着添加进来)
sudogedit/etc/hosts
添加之后是这样:
127.0.0.1localhost
127.0.0.1ubuntu.ubuntu-domainubuntu
192.168.1.11master
192.168.1.7s7
192.168.1.2s2
192.168.1.3s3
192.168.1.4s4
192.168.1.6s6
192.168.1.5s5
192.168.1.8s8
192.168.1.9s9
192.168.1.10 secondaryname# The following lines
are desirable for IPv6 capable hosts
::1ip6-localhostip6-loopback
fe00::0ip6-localnet
ff00::0ip6-mcastprefix
ff02::1ip6-allnodes
ff02::2 ip6-allrouters
(注:这里可以修改自己主机的名字:sudo gedit /etc/hostname 在这个文件里面修改这个名字就行了)
7.配置master和slaves文件
cd/usr/local/hadoop
sudo geditconf/masters 将这个文件的内容改为:master
sudogeditconf/slaves将这个文件改为:
s2
s3
s4
s5
s6
s7
s8
s9
(这些就是要加进来的datanode节点的名称,其实这些只要在master机器上配置就行了)8.配置core-site、mapred-site、hdfs-site文件
sudogeditconf/core-site.xml
修改为:
<configuration>
<property>
<name>fs.default.name</name><value>hdfs://master:9000</value>
</property>
</configuration>sudo gedit conf/mapred-site.xml
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>master:9001</value>
</property>
</configuration>sudogeditconf/hdfs-site.xml
<configuration>
<property>
<name>dfs.name.dir</name>
<value>/usr/local/hadoop/datalog1,/usr/local/hadoop/datalog2</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>/usr/local/hadoop/data1,/usr/local/hadoop/data2</value>
</property>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
</configuration>9.安装SSH
切换到hadoop用户下或者以hadoop身份登录;
1、下载ssh:sudo apt-get install openssh-server;
2、创建sshkey为rsa;ssh-keygen -t rsa -P ""(注意:这里的P是大写的P) 填写key保存路径的时候可以直接使用默认的(一直按enter键就行了。)
3、将ssh-key添加到受信任列表并启用ssk-key
cat/home/hadoop/.ssh/id_rsa.pub>>/home/hadoop/.ssh/authorized_keys
(将公钥追加到收信任文件);
重启ssh:sudo/etc/init.d/sshreload
4、验证ssh是否安装成功ssh localhost;
10.生成公钥
ssh-keygen -t dsa -P "" -f ~/.ssh/id_ rsa11.启动namenode
namenode启动之前做一次block负载均衡
sudo gedit conf/hdfs-site.xml
<property>
<name>dfs.balance.bandwidthPerSec</name><value>10485760</value>
<description>
Specifiesthemaximumbandwidththateachdatanodecanutilizeforthebalancingpurposeintermofthenumberofbytespersecond.
</description>
</property>
bin/start-balancer.sh
bin/start-dfs.sh
好了,到这里基本就差不多了,接下来就是远程复制文件了
要将master机器上的文件一一复制到datanode机器上:(这里以s2为例子)(1)公钥的复制 scp ~/.ssh/id_rsa.pub hadoop@s2:~/.ssh/
(2)hosts文件的复制
scp/etc/hostshadoop@s2:/etc/hosts
注:这里如果不能复制,就先将文件复制到/home/hadoop下面,即为:scp /etc/hosts hadoop@s2:/home/hadoop,再在datanode机器上将其移到相同的路径下面/usr/local
(3)hadoop文件夹的复制,其中的配置也就一起复制过来了!
scp/usr/local/hadoophadoop@s2:/usr/local
如果不能移动的话和上面的方法一样!
这些东西都复制完了之后,datanode机器还要将复制过来的公钥追加到收信任列表:cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys,还有很重要的一点,datanode机器要把复制过来的hadoop里面的data1,data2和logs删除掉!
这样之后基本上就差不多了,启动datanode和tasktracker:
bin/hadoop-daemon.shstartdatanode
bin/hadoop-daemon.shstarttasktracker
这里还可能会涉及到权限的问题:这里我们统一将/usr/local/hadoop文件夹里面的东西的所有者改为hadoop,所属组为hadoop:
sudochgrp-Rhadoophadoop
sudo chown -R hadoop:hadoop查看自己的datanode是否启动:jps当jps不能正常使用的时候:resource /etc/profile
连接时可以在namenode上查看连接情况:
bin/hadoopdfsadmin-report
也可以直接进入网址:master:50070PS:常用到的一些命令:
新建目录(文件夹)
sudo mkdir 文件夹目录
删除目录(文件夹)
sudo rm -rf 文件夹目录这里写得还不是很全面,因为现在对这个东西了解得不是很深入,所以只能暂时这么写着,到时候通过研究,会对其进行一些修改及说明的!