上一篇部署了HDFS集群,这一篇我们来部署MRv1版本的MapReduce集群,节点服务部署信息如下:
IP Hostname MRv1 HDFS 192.168.1.10 U-1 Jobtracker Namenode 192.168.1.20 U-2 Tasktracker Datanode 192.168.1.30 U-3 Tasktracker Datanode 192.168.1.40 U-4 Tasktracker Datanode 192.168.1.50 U-5 Tasktracker Datanode
1 在NameNode节点配置关于MRv1的配置参数,/etc/hadoop/conf/mapred-site.xml
在每台DataNode上面,确保有以上目录,且权限正确,在(U-2/3/4/5)上执行:mapred.job.tracker jobtracker-host.company.com:8021 mapred.local.dir /mapred/local
mkdir -p /mapred/local chown -R mapred:hadoop /mapred/local3 Configure a health check script for DataNode processes
在早期的版本中,mapred.local.dir存在单点故障,会引起tasktracker进程停掉。
4 配置JobTracker Recovery
如果当前有MapReduce Job正在运行,而JobTracker突然down掉了,怎么办?由于JobTracker只是负责Job调度,记账,监控等工作,真正的任务执行在TaskTracker上,完全有可能重启JobTracker而不丢失之前的任务运行。JobTracker需要做的是将Job执行状态备份到文件,重启时读取文件以便恢复。
在/etc/hadoop/conf/mapred-site.xml中追加如下配置:
mapreduce.jobtracker.restart.recover true
恢复的job有以下特性
It will have the same job ID as when it was submitted. It will run under the same user as the original job. It will write to the same output directory as the original job, overwriting any previous output. It will show as RUNNING on the JobTracker web page after you restart the JobTracker.
5 把U-1的/etc/hadoop/conf/目录下的hdfs-site.xml和mapred-site.xml文件分发到集群的其他机器上(U-2/3/4/5)
scp hdfs-site.xml mapred-site.xml root@192.168.1.20:/etc/hadoop/conf/scp hdfs-site.xml mapred-site.xml root@192.168.1.30:/etc/hadoop/conf/scp hdfs-site.xml mapred-site.xml root@192.168.1.40:/etc/hadoop/conf/scp hdfs-site.xml mapred-site.xml root@192.168.1.50:/etc/hadoop/conf/
6 启动HDFS
1 在NameNode上操作
service hadoop-hdfs-namenode2 在DataNode上操作
service hadoop-hdfs-datanode start
7 创建HDFS的/tmp目录
如果你没有正确的建立/tmp目录,并赋予正确的权限,后面你可能会遇到一些问题。在HDFS集群启动后建立/tmp目录并赋予1777权限:
sudo -u hdfs hadoop fs -mkdir /tmpsudo -u hdfs hadoop fs -chmod -R 1777 /tmp8 创建MapReduce的/var目录
sudo -u hdfs hadoop fs -mkdir -p /var/lib/hadoop-hdfs/cache/mapred/mapred/stagingsudo -u hdfs hadoop fs -chmod 1777 /var/lib/hadoop-hdfs/cache/mapred/mapred/stagingsudo -u hdfs hadoop fs -chown -R mapred /var/lib/hadoop-hdfs/cache/mapred9 检查 HDFS的文件结构
sudo -u hdfs hadoop fs -ls -R /
10 在HDFS中创建并配置mapred.system.dir指定的目录
在你启动HDFS并且建立/tmp目录之后,在你启动jobtracker之前,你必须在HDFS中创建mapred.system.dir指定的目录,默认是${hadoop.tmp.dir}/mapred/system目录,如果你的创建的mapred.system.dir目录在其他位置,你需要在mapred-site.xml中修改
sudo -u hdfs hadoop fs -mkdir /tmp/mapred/systemsudo -u hdfs hadoop fs -chown mapred:hadoop /tmp/mapred/system
11 Start MapReduce
1 在tasktracker上执行
service hadoop-0.20-mapreduce-tasktracker start2 在jobtracker上执行
service hadoop-0.20-mapreduce-jobtracker start
12 Create a Home Directory for each MapReduce User
针对每一个mapreduce用户创建他们自己的家目录,最好在namenode上操作,<user>是你linux用户
sudo -u hdfs hadoop fs -mkdir /user/13 Configure the Hadoop daemons to start at boot timesudo -u hdfs hadoop fs -chown /user/
参考: