一、环境介绍:2个节点的虚拟机VMware,Ubuntu12.04


二、修改机器名 sudo vi /etc/hostname 节点1设置为:VM-BBI-N1 节点2设置为:VM-BBI-N2 注:Hadoop集群配置中将设置VM-BBI-N1为master,VM-BBI-N2为slave


三、域名和ip配置 sudo vi /etc/hosts 节点1和2均设置为: 172.29.4.165    VM-BBI-N1.IRRI.CGIARAD.ORG VM-BBI-N1 172.29.4.166    VM-BBI-N2.IRRI.CGIARAD.ORG VM-BBI-N2


四、创建用户、分配权限(节点1和节点2上相同) 1)创建hadoop用户组:sudo addgroup hadoop 2)创建用户hadoop:sudo adduser -ingroup hadoop hadoop 3)给hadoop用户添加权限:sudo vi /etc/sudoers 在文件最后添加一行:hadoop  ALL=(ALL:ALL) ALL


五、安装ssh服务(节点1和节点2上相同) sudo apt-get install openssh-server


六、建立ssh无密码登录环境(节点1和节点2上相同) 首先转换为hadoop用户:su hadoop 切换目录:cd /home/hadoop 1)ssh生成密钥(rsa方式):ssh-keygen -t rsa -P "" 回车后会在目录.ssh下生成两个文件:id_rsa和id_rsa.pub (注:这两个文件是成对出现的)


2)切换到.ssh目录下,然后将id_rsa.pub复制到authorized_keys授权文件中: cd .ssh cp id_rsa.pub authorized_keys


3)修改SSH配置文件"/etc/ssh/sshd_config"的下列内容。 RSAAuthentication yes PubkeyAuthentication yes AuthorizedKeysFile      %h/.ssh/authorized_keys  (注:去掉该行前面的注释) 重启SSH服务:sudo restart ssh


4)验证是否成功:ssh localhost 如果无错误提示,本地无密码登录就配置成功。


七、配置集群无密码登录 首先配置slave节点无密码访问master。 1)在VM-BBI-N2上,远程复制文件"id_rsa.pub"到主机VM-BBI-N1的用户hadoop的"/home/hadoop/": scp ~/.ssh/id_rsa.pub hadoop@VM-BBI-N1:~/ 因为还没有建立起无密码连接,所以在连接时,要输入VM-BBI-N1服务器用户hadoop的密码。(注:登录VM-BBI-N1查看"/home/hadoop/"下是否存在这个文件)


2)在VM-BBI-N1上,把刚复制过来的VM-BBI-N2的公钥追加到VM-BBI-N1的授权文件"authorized_keys"中去。 cat ~/id_rsa.pub >> ~/.ssh/authorized_keys 修改"authorized_keys"文件权限:chmod 600 ~/.ssh/authorized_keys 删除"/home/hadoop/"目录下的"id_rsa.pub"文件:rm –r ~/id_rsa.pub


3)如果集群中有更多的slave节点,对他们重复步骤(1)-(2)对剩余的slave服务器进行配置。 完成"配置Slave无密码登录Master".


4)在VM-BBI-N1上,输入命令:scp ~/.ssh/authorized_keys hadoop@VM-BBI-N2:~/.ssh/ 如果集群中有更多的slave节点,分别修改以上命令中的VM-BBI-N2为剩余的slave服务器,将复制master节点的authorized_keys到所有slave节点的.ssh目录。


5)在VM-BBI-N1上,登录其余各个节点:ssh VM-BBI-N2


6)在VM-BBI-N2上,登录其余各个节点:ssh VM-BBI-N1


八、配置JAVA环境(节点1和节点2上相同) 1)安装JAVA:sudo apt-get install openjdk-7-jdk


2)配置环境变量:sudo vi /etc/profile 在文件最后添加: # set java environment export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64 export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib export PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/ 保存并退出,使其配置立即生效:source /etc/profile


3)判断是否成功:java –version


九、安装hadoop(节点1和节点2上相同) 1)下载hadoop1.1.2安装包,复制到usr目录:sudo cp ~/hadoop-1.1.2.tar.gz  /usr


2)切换目录:cd /usr


3)解压缩安装包:sudo tar -zxvf hadoop-1.1.2.tar.gz


4)修改文件名:sudo mv hadoop-1.1.2 hadoop


5)修改hadoop目录权限:sudo chown -R hadoop:hadoop hadoop

sudo chmod -R 777 hadoop


6)删除安装包:sudo rm -rf hadoop-1.1.2.tar.gz


7)切换到hadoop目录下的conf目录:cd  /usr/hadoop/conf


8)编辑hadoop-env.sh:sudo vi hadoop-env.sh
配置JAVA_HOME为前面配置的JAVA_HOME。
export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64
让环境变量配置生效: source conf/hadoop-env.sh


9)编辑core-site.xml:sudo vi core-site.xml 在<configuration>标签内,添加配置信息如下: <property> <name>hadoop.tmp.dir</name> <value>/home/hadoop/hdfs/tmp</value> </property> <property> <name>fs.default.name</name> <value>hdfs://vm-bbi-n1:49000</value> </property>


注1:在所有节点的/home/hadoop目录下,建立目录hdfs:sudo mkdir hdfs 修改权限:sudo chown -R hadoop:hadoop hdfs 注2:如果需要重新格式化分布式文件系统(即执行十 (1)操作),必须先将原有hdfs目录下的所有文件夹(data,name,tmp和local,见后续hdfs-site.xml和mapred-site.xml中的设置)删除。


注3:设置端口之前,先查看端口49000是否被占用:netstat -tuln | grep 49000 如无显示信息则表示端口未被占用。 后面的设置中端口号(49001,50031,50032,50033)都需要先查看是否被占用


10)修改hdfs-site.xml:sudo vi hdfs-site.xml 在<configuration>标签内,添加配置信息如下: <property> <name>dfs.safemode.threshold.pct</name> <value>0</value> </property> <property> <name>dfs.http.address</name> <value>vm-bbi-n1:50031</value> </property> <property> <name>dfs.secondary.http.address</name> <value>vm-bbi-n1:50033</value> </property> <property> <name>dfs.replication</name> <value>1</value> </property> <property> <name>dfs.name.dir</name> <value>/home/hadoop/hdfs/name</value> </property> <property> <name>dfs.data.dir</name> <value>/home/hadoop/hdfs/data</value> </property>


11)在mapred-site.xml中添加内容: <property> <name>mapred.job.tracker</name> <value>vm-bbi-n1:49001</value> </property> <property> <name>mapred.job.tracker.http.address</name> <value>vm-bbi-n1:50032</value> </property> <property> <name>mapred.local.dir</name> <value>/home/hadoop/hdfs/local</value> </property>


12)修改masters: vm-bbi-n1


13)修改slaves: vm-bbi-n2


重复上述步骤,为其他节点做相同的配置。 或 14)使用scp远程复制主机(master)hadoop目录下的所有文件到其他节点: 在VM-BBI-N1上,sudo scp -r /usr/hadoop hadoop@vm-bbi-n2:/usr


在VM-BBI-N2上(/usr目录下),修改hadoop目录权限:sudo chown -R hadoop:hadoop hadoop


十、启动hadoop 1)在VM-BBI-N1主机上的hadoop安装目录下,执行格式化:bin/hadoop namenode -format


2)启动服务:bin/start-all.sh


3)到各个节点上使用jps查看进程启动情况。 在master上的结果:Jps、SecondaryNameNode、NameNode和JobTracker四个服务 在slave上的结果:TaskTracker、DataNode和Jps三个服务