Hadoop学习(三)——YARN和MapReduce初体验
2019-07-28 本文已影响9人
大数据阶梯之路
粗略了解什么是云计算?
答:云计算其实就是不在同一台机器上同时做计算,而是分布式运算,把计算分发给多台机器同时来进行。
分布式计算?
答:设计原则:移动的是计算,而不是数据。即要计算多台机器的数据时不需要把这些数据移动到同一台机器上, 而是把写好的计算程序分别放到各自存放数据的机器上进行计算,然后再简化进一步地进行计算。
一、YARN简介
是hadoop2才出现的资源调度层,是在HDFS上抽象的一层,其上面可以提供多种计算模型,比如MapReduce、storm等等。YARN只为这些计算模型做资源调度,比如HDFS哪台机器是空闲的,就把计算模型的计算指定到哪台机器上。
进行类比学习,yarn和hdfs差不多,都可以用主从架构来学习,比如在master机器上配置resourcemanager节点,在slave机器上配置nodemanager节点,resourcemanager节点管理着nodemanager节点。一个job来了先访问resourcemanager,然后resourcemanager分发给不同的nodemanager做计算,在生成环境中resourcemanager和namenode往往是不再同一台机器上,还有yarn和hdfs在逻辑上是独立分离的,yarn可以单独运行,不一定要跑在hdfs上,所以没启动hdfs也照样可以启动yarn。
二、启动YARN
- 1、先配置
yarn-site.xml
文件,在configuration标签组里加上下面的配置,声明哪台机器是resourcemanager。然后就可以在master机器上输入命令start-yarn.sh
启动resourcemanager然后就会根据之前配置的slaves文件去启动对应不同机器的nodemanager了。注意:四台机器的yarn-site.xml
文件都要配置如下,否则会出现明明启动了所有nodemanager,但隔一段时间nodemanager就消失了。
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.auxservices.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
效果图
在web界面地址栏输入主机IP名:端口号(默认是8088)
就可以访问了,比如10.14.28.100:8088
,也可以通过直接机器名:端口号(默认是8088)
,比如master:8088
,通过机器名访问的这种需要在我们windows的C:\Windows\System32\drivers\etc
目录下修改hosts文件,把映射加上,浏览器在访问网址时会先在这个文件扫描查找有无IP对应的主机名。如下配置:
10.14.28.100 master
10.14.28.101 slave1
10.14.28.102 slave2
10.14.28.103 slave3
- 2、配置
mapred-site.xml.template
文件,在configuration标签组中加入如下配置,指定MapReduce计算使用YARN作为资源调度。不配置的话MapReduce程序默认在本地运行。
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
如下图,启动YARN完毕。
图片.png
三、把一个MapReduce程序在YARN上进行调度
- 1、经过上述步骤,通过
start-yarn.sh
、start-dfs.sh
命令把YARN集群、HDFS集群启动后,通过hadoop fs -put test.txt /
命令在hdfs上准备好一个test.txt文件,用来做一个统计词数的小例子。 - 2、通过命令
find /usr/local/hadoop -name *example*.jar
来在指定路径目录查找含关键词的文件。下面划线的jar里包含着很多example程序,wordcount统计词数就是其中一个。 图片.png - 3、使用
hadoop jar /usr/local/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.4.jar wordcount /test.txt /wcoutput
命令把运行程序对指定的/test.txt文件进行统计,并把结果输出到/wcoutput目录下。最后进入/wcoutput目录去查看结果。如下图: 图片.png -
4、WordCount的工作流程:
先经过input输入文件-->接着split按行拆分文件,变成key-value形式的数据-->接着map映射,相当于继续拆分,按单词拆分文件-->接着shuffle派发,这时候会移动数据了,根据key把相同的单词放在一起-->然后再reduce缩减,把单词统计整理下-->最后再output输出文件。 图片.png