首页 > 代码库 > hadoop备战:yarn框架的搭建(mapreduce2)
hadoop备战:yarn框架的搭建(mapreduce2)
昨天没有写好了没有更新,今天一起更新,yarn框架也是刚搭建好的。我这里把hadoop放在了我的个人用户hadoop下了,你也可以尝试把它放在/usr/local,考虑的问题就相对多点。
基本的软硬件配置:
x86台式机,window7 64位系统
wmware虚拟机(x86的台式机至少是4G内存,才能开2台虚机)
centos6.4操作系统
hadoop-2.2.0.tar.gz
jdk-6u24-linux-i586.bin
WinScp 远程文件传输工具,很好用。可以用于windows和虚拟机Linux之间文件相互拷贝。
一、root下的配置
a) 修改主机名:vi /etc/sysconfig/network
Master, slave1,
b) 解析Ip: vi /etc/hosts因为采用的是Host-only连接网络,主机上Vmnet1的ip:192.168.137.1
192.168.137.50 master192.168.137.55 slave1
c) 调试网络:采用自定的vmnet1,默认是host-only这种方式,连接网络,配置网络。修改后记得调用 service network restart确保三台虚拟机能够相互ping通。(很好弄的,我现在的问题如何让虚拟机连接外网,我会在最近的博客中,弄清楚,继续关注我的博客)
d) 关闭防火墙查看:service iptables status关闭:service iptables stop查看防火墙有无自启动:Chkconfig –-list | grep iptables关闭自启动:Chkconfig iptables off
二、hadoop用户下的配置
a) 创建用户hadoop,设置密码,进入用户
useradd hadoop
passwd hadoop
b) master创建公私秘钥
分别在两台虚拟机上生成:ssh-keygen –t rsa.
.ssh是一个隐藏的文件 #cd .ssh可进入
1)将id_rsa.pub复制给authorized_keys
Cp id_rsa.pub authorized_keys
2)将master中的authorized_keys复制给slave1的/home/hadoop/.ssh下
scp authorized_keys root@192.168.137.55:/home/hadoop/.ssh/
3)将master拷贝过来的authorized_keys复制到slave1本身所创的authorized_keys下
4)验证ssh的免密码生效:
a)可以尝试发个小文件给对方机器,如果没有提示要求密码,那么你的免密码就生效了。
b)也可以直接ssh+对方机器名(hostname改过之后),可以进入对方用户环境则说明生效。
c) 将hadoop拷贝复制到对应的master机子中/home/hadoop/
配置hadoop用户的环境变量 vi /etc/profile,添加如下内容:
#set java enviroment
export JAVA_HOME=/usr/local/jdk
export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin
# Hadoop
export HADOOP_PREFIX="/home/hadoop/hadoop"
export PATH=$PATH:$HADOOP_PREFIX/bin:$HADOOP_PREFIX/sbin
export HADOOP_COMMON_HOME=${HADOOP_PREFIX}
export HADOOP_HDFS_HOME=${HADOOP_PREFIX}
export HADOOP_MAPRED_HOME=${HADOOP_PREFIX}
export HADOOP_YARN_HOME=${HADOOP_PREFIX}
注:su + 用户名实现切换用户。
d) 编辑/home/hadoop/etc/hadoop/hadoop-env.sh
export JAVA_HOME=/usr/local/jdk
e) 编辑/home/hadoop/etc/hadoop/yarn-env.sh
export JAVA_HOME=/usr/local/jdk
f) 编辑/home/hadoop/etc/hadoop/core-site.xml
<!-- 新变量f:s.defaultFS 代替旧的:fs.default.name -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<!-- 注意创建相关的目录结构,这里的tmp是自己创建的 -->
<value>/home/hadoop/hadoop/tmp</value>
</property>
g) 编辑/home/hadoop/etc/hadoop/hdfs-site.xml
<property>
<name>dfs.replication</name>
<!-- 值需要与实际的DataNode节点数要一致,本文为3 -->
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<!-- 注意创建相关的目录结构 -->
<value>file:/home/hadoop/hadoop/dfs/namenode</value>
<final>true</final>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<!-- 注意创建相关的目录结构 -->
<value>file:/home/hadoop/hadoop/dfs/datanode</value>
</property>
h) 编辑/home/hadoop/hadoop/etc/hadoop/yarn-site.xml
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<!-- resourcemanager hostname或ip地址-->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
h) 编辑/home/hadoop/hadoop/etc/hadoop/mapred-site.xml
注:默认没有mapred-site.xml文件,copy mapred-site.xml.template 一份为 mapred-site.xml即可
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
<final>true</final>
</property>
三、启动和测试
1、启动Hadoop
1.1、第一次启动需要在Master.Hadoop 执行format : hdfs namenode -format :
格式化成功,你能找到一句话:
1.2、在Master.Hadoop执行 start-dfs.sh :
在Slave1验证启动进程如下:
1.3、在Master执行 start-yarn.sh :
在Slave1 验证启动进程如下:
四、演示案例:(单词计数)
1)先实现下面的生成文件夹命令:
2)本地创建三个文件 micmiu-01.txt、micmiu-03.txt、micmiu-03.txt, 分别写入如下内容:
micmiu-01.txt:
Hi Michael welcome to Hadoop
more see micmiu.com
micmiu-02.txt:
Hi Michael welcome to BigData
more see micmiu.com
micmiu-03.txt:
Hi Michael welcome to Spark
more see micmiu.com
3)然后cd 切换到Hadoop的share/hadoop/mapreduce下执行
[hadoop@master mapreduce]$ hadoop jar hadoop-mapreduce-examples-2.2.0.jar wordcount /user/micmiu/wordcount/in /user/micmiu/wordcount/out
ps: hdfs 中 /user/micmiu/wordcount/out 目录不能存在 否则运行报错。
5)到此 wordcount的job已经执行完成,执行如下命令可以查看刚才job的执行结果:
hadoop的童鞋们,有问题加关注,评价中说明问题。