本文主要参考有
- http://wenku.baidu.com/view/92cbe435eefdc8d376ee32eb.html
- http://bbs.chinacloud.cn/showtopic-3564.aspx
- http://www.hadoopor.com/archiver/tid-405.html
准备工作
文中出现名词介绍
- alex,用户名,3台机器用户名一致
- master,namenode主机名
- slave[1-N],datanode主机名
2 设置ip地址,3台机器最好是局域网里,在同一网段,
3 修改主机名,添加三台机器的ip及主机名
#vi /etc/sysconfig/network //修改HOSTNAME=XX
#vi/etc/hosts //把默认的机器名localhost localhost.localhostlocalhst改为XX
//并按照"ip 主机名 域名"格式添加ip地址和主机名的映射表,3台机器都要添加
//本人的配置为 xx.xx.xx.xx alex alex
#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目录
tar -zxvf hadoop-0.21.0.tar.gz
ln -s hadoop-0.21.0 hadoop
8 进入hadoop/conf中,修改slaves
去掉localhost,添加如下
slave1
slave2
修改master
去掉localhost,添加如下
master
9 配置hadoop
修改core-site.xml
core-site.xml中在<configuration></configuration>修中添加项如下:
<property>
<name>hadoop.tmp.dir</name>
<value>/home/alex/hadoop/tmp</value>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
修改hdfs-site.xml
这里修改的是文件存储时备份的数量,按照自己的要求来,默认为3个副本
修改mapred-site.xml
<property>
<name>mapreduce.jobtracker.address</name>
<value>master:9001</value>
<description>NameNode</description>
</property>
10 复制已经配置后的文件到其他节点上
[hadoop@master:~]$scp -r /home/alex/hadoop slave1:/home/alex/
[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和掩码确认一下