实验目的

复习配置hadoop初始化环境

复习配置hdfs的配置文件

学会配置hadoop的配置文件

了解yarn的原理

实验原理

1.yarn是什么
  前面安装好了hdfs文件系统,我们可以根据需求进行数据的读写操作。hdfs解决了大数据的存储,接下来的问题就是根据实际的业务需求进行计算。目前大数据的计算业务主要有离线计算、实时计算、交互式查询、机器学习、图计算。例如storm是处理实时计算的,hadoop的mapreduce是处理批处理计算业务的。hive则是进行交互式查询的。这么多计算框架在一起,难免会引起资源管理的混乱问题,yarn则是用于管理计算资源的,计算资源主要是内存和CPU,默认是管理内存。
  Apache YARN(Yet Another Resource Negotiato的缩写)是Hadoop的集群资源管理系统。YARN被引入Hadoop2。最初是为了改善MapReduce的实现,但它具有足够的通用性,同样可以支持其他的分布式计算模式。
  YARN提供请求好而是用进群资源的API,但这些API很少直接使用于用户代码。相反,用户代码用的是分布式计算框架提供的更高层API,这些API建立在YARN之上且向用户隐藏了资源管理细节。

 

 

MapReduce、Spark、Tez这样的计算框架均以Yarn应用程序的形式运行于集群计算层(Yarn)和集群存储层(HDFS或HBase)之上,而Pig、Hive、Crunch则运行于MapReduce、Spark或Tez之上,并没有与Yarn直接交互。
Yarn的核心服务由两个组件提供:
  Resource Manager:每个集群一个实例,用于管理整个集群的资源使用;
  Node Manager:每个集群多个实例,用于自身Container的启动和监测(每个Node Manager上可能有多个Container)。
  注:根据Yarn配置的不同,Container可能是一个Unix进程或者一个Linux cgroup实例,在受限的资源范围内(如内存、CPU等)执行特定应用程序的代码。

2.yarn资源调度的方式
  目前yarn调度主要有两种:先进先出的调度模式和队列调度模式,分别是Google和Yahoo开源设计的,前者按照提交的顺序调度,后者则将用户划分为队列,给每个队列一定的资源。
  yarn将集群资源抽象成一个个容器Container,资源管理由ResourceManager和NodeManager共同完成,其中,ResourceManager中的调度器负责资源的分配,而NodeManager则负责资源的供给和隔离。ResourceManager将某个NodeManager上资源分配给任务(这就是所谓的“资源调度”)后,NodeManager需按照要求为任务提供相应的资源,甚至保证这些资源应具有独占性,为任务运行提供基础的保证,这就是所谓的资源隔离。

3.yarn的安装
  yarn的配置文件主要是mapred-site.xml、yarn-site.xml,配置这个文件的相关属性即可。

4.yarn配置
  (1)mapred-site.xml文件配置内容:

<property>

<name>mapreduce.framework.name</name>

<value>yarn</value>

</property>

<!-- 配置 MapReduce JobHistory Server 地址 ,默认端口10020 -->

<property>

<name>mapreduce.jobhistory.address</name>

<value>0.0.0.0:10020</value>

</property>

<!-- 配置 MapReduce JobHistory Server web ui 地址, 默认端口19888 -->

<property>

<name>mapreduce.jobhistory.webapp.address</name>

<value>0.0.0.0:19888</value>

</property>

  (2)yarn-site.xml文件需要配置的内容:

<property>

<name>yarn.nodemanager.aux-services</name>

<value>mapreduce_shuffle</value>

</property>

<!--配置resourcemanager的节点地址 -->

<property>

<name>yarn.resourcemanager.hostname</name>

<value>node6</value>

</property>

<property>

<name>yarn.log-aggregation-enable</name>

<value>true</value>

</property>

实验环境

1.操作系统
  服务器1:Linux_Centos
  服务器2:Linux_Centos
  服务器3:Linux_Centos
  服务器4:Linux_Centos
  操作机:Windows_7
  服务器1默认用户名:root,密码:123456
  服务器2默认用户名:root,密码:123456
  服务器3默认用户名:root,密码:123456
  服务器4默认用户名:root,密码:123456
  操作机默认用户名:hongya,密码:123456

2.实验工具
  Xshell

 

 

Xshell是一个强大的安全终端模拟软件,它支持SSH1, SSH2, 以及Microsoft Windows 平台的TELNET 协议。Xshell 通过互联网到远程主机的安全连接以及它创新性的设计和特色帮助用户在复杂的网络环境中享受他们的工作。
  Xshell可以在Windows界面下用来访问远端不同系统下的服务器,从而比较好的达到远程控制终端的目的。实验中我们用到XShell5,其新增功能有:
  1.有效保护信息安全性;Xshell支持各种安全功能,如SSH1/SSH2协议,密码,和DSA和RSA公开密钥的用户认证方法,并加密所有流量的各种加密算法。重要的是要保持用户的数据安全与内置Xshell安全功能,因为像Telnet和Rlogin这样的传统连接协议很容易让用户的网络流量受到任何有网络知识的人的窃取。Xshell将帮助用户保护数据免受黑客攻击。
  2.最好的终端用户体验;终端用户需要经常在任何给定的时间中运用多个终端会话,以及与不同主机比较终端输出或者给不同主机发送同一组命令。Xshell则可以解决这些问题。此外还有方便用户的功能,如标签环境,广泛拆分窗口,同步输入和会话管理,用户可以节省时间做其他的工作。
  3.代替不安全的Telnet客户端;Xshell支持VT100,VT220,VT320,Xterm,Linux,Scoansi和ANSI终端仿真和提供各种终端外观选项取代传统的Telnet客户端。
  4. Xshell在单一屏幕实现多语言;Xshell中的UTF-8在同类终端软件中是第一个运用的。用Xshell,可以将多种语言显示在一个屏幕上,无需切换不同的语言编码。越来越多的企业需要用到UTF-8格式的数据库和应用程序,有一个支持UTF-8编码终端模拟器的需求在不断增加。Xshell可以帮助用户处理多语言环境。
  5. 支持安全连接的TCP/IP应用的X11和任意;在SSH隧道机制中,Xshell支持端口转发功能,无需修改任何程序,它可以使所有的TCP/IP应用程序共享一个安全的连接。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

添加内容:

<property>

<name>mapreduce.framework.name</name>

<value>yarn</value>

</property>

<!-- 配置 MapReduce JobHistory Server 地址 ,默认端口10020 -->

<property>

<name>mapreduce.jobhistory.address</name>

<value>0.0.0.0:10020</value>

</property>

<!-- 配置 MapReduce JobHistory Server web ui 地址, 默认端口19888 -->

<property>

<name>mapreduce.jobhistory.webapp.address</name>

<value>0.0.0.0:19888</value>

</property>

 

 

 

 

 

 

3.4配置同目录下的master文件(目录下没有此文件,直接新建并添加内容),添加管理节点的地址(每台节点都需要执行)。

vim master

  添加内容:

node 6      //以node6为主节点

  配置同目录下的slaves文件,添加工作节点的地址(每台节点都需要执行)。

vim slaves

  添加datanode:

node7

node8

node9

  这里只显示了命令和需要添加的内容,具体操作就不再演示。

 

 

3.5同目录下,yarn-site.xml文件需要配置的内容:

vim yarn-site.xml

  添加内容:

<property>

  <name>yarn.nodemanager.aux-services</name>

  <value>mapreduce_shuffle</value>

</property>

<property>

  <name>yarn.resourcemanager.hostname</name>

  <value>node6</value>

</property>

<property>

<name>yarn.log-aggregation-enable</name>

<value>true</value>

</property>

  前一个是nodemanager的内容,可以暂时不做了解,后面是resourcemanager的节点地址。其中第一个照写,第二个配置resourcemanager位置,一般情况下这个节点就是hdfs的namenode节点(node6)。

 

 

none6 中的yarn配置文件直接复制到node7、node8、node9。(注意命令空格问题)

scp -r /home/hadoop/soft/hadoop-2.6.0-cdh5.5.2/etc/hadoop/yarn-site.xml root@node7:/home/hadoop/soft/hadoop-2.6.0-cdh5.5.2/etc/hadoop

scp -r /home/hadoop/soft/hadoop-2.6.0-cdh5.5.2/etc/hadoop/yarn-site.xml root@node8:/home/hadoop/soft/hadoop-2.6.0-cdh5.5.2/etc/hadoop

scp -r /home/hadoop/soft/hadoop-2.6.0-cdh5.5.2/etc/hadoop/yarn-site.xml root@node9:/home/hadoop/soft/hadoop-2.6.0-cdh5.5.2/etc/hadoop

  注:也可以以同样方法node6上修改的配置文件复制到其他工作节点。注意要命令文件名称的修改。

步骤4:启动yarn集群并检查其启动情况

  4.1启动yarn命令,程序为sbin目录下的start-yarn.sh。

cd ../..

sbin/strat-yarn.sh

 

 

启动之后,会提示四个日志文件的地址,如果出现异常,可以查看这些配置文件进行分析。
  4.2通过jps命令,看到有相应的进程。

jps

 

 

4.3打开浏览器,输入resourcemanager的IP,加上端口8088。