Fedora 15 部署Hadoop 0.21 全分布式模式 1namenode 2datanode

本文主要参考有 

  1. http://www.linuxidc.com/Linux/2012-01/51767.htm
  2. http://www.linuxidc.com/Linux/2012-01/51768.htm
准备工作
文中出现名词介绍
  • alex,用户名,3台机器用户名一致
  • master,namenode主机名
  • slave[1-N],datanode主机名
1 安装系统,参考 http://blog.csdn.net/sunshine_okey/article/details/7010574
2 设置ip地址,3台机器最好是局域网里,在同一网段,
3 修改主机名,添加三台机器的ip及主机名

  1. #vi /etc/sysconfig/network  //修改HOSTNAME=XX  
  2. #vi/etc/hosts              //把默认的机器名localhost localhost.localhostlocalhst改为XX     
  3.                            //并按照"ip 主机名 域名"格式添加ip地址和主机名的映射表,3台机器都要添加  
  4.                            //本人的配置为 xx.xx.xx.xx alex alex  
  5. #reboot                     //修改后重启机器

本人主机名分别为,master作为namenode,slave1,slave2作为datanode
4 关闭防火墙
1) 重启后生效 
开启: chkconfig iptables on 
关闭: chkconfig iptables off 

2) 即时生效,重启后失效 
开启: service iptables start 
关闭: service iptables stop 

需要说明的是对于Linux下的其它服务都可以用以上命令执行开启和关闭操作。 

在开启了防火墙时,做如下设置,开启相关端口, 
修改/etc/sysconfig/iptables 文件,添加以下内容: 
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp-p tcp --dport 80 -j ACCEPT 
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp-p tcp --dport 22 -j ACCEPT
先用1),再用2)
5 开启ssh,实现master到slave1,slave2的无密码登录
6 安装jdk1.6以上,并指定JAVA_HOME

上面是前期准备工作,以下正是开始部署Hadoop,所有节点配置方式相同,所以这里我们只是配置master一台,然后再把配置后的文件直接复制到其他节点上
7 解压hadoop程序到当前用户目录,并建立连接,同时在/etc/profile环境变量中添加HADOOP_HOME=hadoop目录
  1. tar  -zxvf  hadoop-0.21.0.tar.gz  
  2. ln  -s  hadoop-0.21.0  hadoop  

8 进入hadoop/conf中,修改slaves
去掉localhost,添加如下

  1. slave1  
  2. slave2 



修改master
去掉localhost,添加如下

master  

 配置hadoop
 修改core-site.xml
core-site.xml中在<configuration></configuration>修中添加项如下:

  1. <property>  
  2.   <name>hadoop.tmp.dir</name>  
  3.   <value>/home/alex/hadoop/tmp</value>  
  4. </property>  
  5. <property>  
  6.   <name>fs.defaultFS</name>  
  7.   <value>hdfs://master:9000</value>  
  8. </property>  

修改hdfs-site.xml


这里修改的是文件存储时备份的数量,按照自己的要求来,默认为3个副本

修改mapred-site.xml
  1. <property>  
  2.   <name>mapreduce.jobtracker.address</name>  
  3.   <value>master:9001</value>  
  4.   <description>NameNode</description>  
  5. </property>  

10 复制已经配置后的文件到其他节点上
  1. [hadoop@master:~]$scp -r /home/alex/hadoop  slave1:/home/alex/  
  2. [hadoop@master:~]$scp -r /home/alex/hadoop  slave2:/home/alex/  

至此,部署完成
11 启动hadoop
 进入hadoop/bin目录,然后
$./hadoop namenode -format //格式化文件系统
$./start-all.sh //启动系统
$./jps //查看启动情况
$./stop-all.sh //关闭
具体操作可以参考文档
常见问题
1  /home/alex/hadoop/bin/../bin/hadoop-daemon.sh:line 127: /tmp/hadoop-hadoop-namenode.pid: 权限不够
解决方案: 
在hadoop-config中修改hadoop-env.sh,添加:exportHADOOP_PID_DIR=$HADOOP_HOME/run/tmp。改变pid的路径。3台机子一块改。
在/etc中修改profile,添加:export HADOOP_PID_DIR=$HADOOP_HOME/run/tmp,同样,改3台机子。
重启
2  “No route to host”
主要两个:
1、防火墙挡住了,可以关闭iptable
2、网段不同,没有路由信息,可检查IP和掩码确认一下

相关推荐