前面花了很多时间来介绍hadoop1的安装,随着hadoop的发展,hadoop2的应用也越来越普及,hadoop2解决了hadoop1中的很多问题,比如单点故障,namenode容量小的问题。
我们先来安装最简单的版本
Hadoop 版本:2.2.0
OS 版本: Centos6.4
Jdk 版本: jdk1.6.0_32
环境配置
机器名 |
Ip地址 |
功能 |
Hadoop1 |
192.168.124.135 |
NameNode, DataNode, SecondaryNameNode ResourceManager |
Hadoop2 |
192.168.124.136 |
DataNode, NodeManager |
Hadoop3 |
192.168.124.137 |
DataNode, NodeManager |
安装
OS安装(见hadoop1)
创建用户和组(见hadoop1)
配置ssh(见hadoop1)
安装 jdks和hadoop
使用FileZilla将hadoop-2.2.0上传到hadoop1,hadoop2,hadoop3
然后加压缩
tar xzvf hadoop-2.2.0.tar.gz
配置(与hadoop1的配置挺像)
vi etc/hadoop/hadoop-env.sh 修改jdk位置
export JAVA_HOME=/home/hadoop/jdk1.6.0_32
vi etc/hadoop/mapred-env.sh修改jdk位置
export JAVA_HOME=/home/hadoop/jdk1.6.0_32
vi etc/hadoop/yarn-env.sh修改jdk位置
export JAVA_HOME=/home/hadoop/jdk1.6.0_32
vi etc/hadoop/core-site.xml
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/repo1/tmp</value>
<description>A base for other temporary directories.</description>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop1:9000</value>
</property>
</configuration>
vi etc/hadoop/hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/home/hadoop/repo1/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/home/hadoop/repo1/data</value>
</property>
</configuration>
vi etc/hadoop/yarn-site.xml
<configuration>
<property>
<description>the valid service name</description>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<description>The hostname of the RM.</description>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop1</value>
</property>
</configuration>
vi etc/hadoop/mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
vi etc/hadoop/slaves
hadoop1
hadoop2
hadoop3
格式化namenode
在hadoop1上运行:bin/hdfs namenode -format -clusterid mycluster
启动hadoop集群
cd /home/hadoop/hadoop-2.2.0
sbin/start-all.sh
从图上可以看出,先启动namenode,再启动datanode, 再启动secondarynamenode, 再启动resourcemanger, 最后启动nodemanager。
使用jps查看启动的进程
在hadoop1上运行jps
在hadoop2上运行jps
在hadoop3上运行jps
很显然,NameNode, DataNode, SecondaryNameNode, JobTracker, TaskTracker都已启动了
查看hadoop集群状态
bin/hadoop dfsadmin -report
Hadoop提供了web页面的接口
测试一下mapred的程序,我们运行hadoop自带的wordcount
创建一个输入目录:
bin/hdfs dfs -mkdir /user/hadoop/input
上传一些文件
bin/hdfs dfs -copyFromLocal etc/hadoop/* /user/hadoop/input/
看一下文件
bin/hdfs dfs -ls /user/hadoop/input
启动mapred程序
bin/hadoop jar hadoop-examples-1.2.1.jar wordcount /user/hadoop/input /user/hadoop/output
我们还发现一个事实,在虚拟机环境中运行yarn框架下的mapreduce程序比传统框架中的mapreduce慢一些,因为节点的交互变的更多。
在提交wordcount任务后,我们使用jps看看yarn是怎么运行mapreduce任务的,他在hadoop3上启动一个MRAppMaster,然后调度很多YarnChild,在传统的mapreduce框架下,通常同时最多只能运行4个task,但是在yarn框架下,没有这种限制。Yarn中的ResourceManager会根据节点的性能来合理的分配。
hadoop1运行jps
hadoop2运行jps
hadoop3运行jps