MapReduce和Yarn部署+入门

发布时间:2023年12月19日

看的黑马视频记的笔记


目录

1.入门知识点

分布式计算:

概念:

两种模式:

MapReduce(分布式计算,分散汇总模式)

????? 概念?

执行原理

注:

Yarn(分布式资源调度)

概述

?Yarn架构(核心架构+辅助架构)

核心架构(与HDFS非常相似、主从架构)

辅助架构

2.部署

mapred-env.sh

mapred-site.xml

yarn-env.sh

yarn-site.xml

分发到另外两个节点

启动YARN

启动WEB UI页面

?3.提交自带MapReduce示例程序到Yarn运行

wordcount

求圆周率



1.入门知识点

分布式计算:

概念:

????????多个计算机合作,共同完成一个计算手段

两种模式:

????????1.分散-->汇总(聚合)(MapReduce就为该种模式)

????????2.中心调度-->步骤执行(Spark、Flink)

????????指挥小弟执行第几阶段、计算完交换数据

MapReduce(分布式计算,分散汇总模式)

????? 概念?

????????MapReduce是“分散->汇总模式的分布式计算框架,可供开发人员开发相关程序进行分布式数据计算。

????????MapReduce提供了MapReduce2个编程接口:

????????Map(分散)功能接口提供分散功能,有服务器分布式对数据进行处理

????????Reduce(汇总)提供聚合功能,将分布式的处理结果汇总统计

执行原理

????????假设有四台计算机,文件分成三份,三台各自处理数据统计,一台汇总

注:

????????MapReduce尽管可以通过JavaPython等语言进行程序开发,但当下年代基本没人会写它的代码了,因为太过时了。?? 尽管MapReduce很老了,但现在仍旧活跃在一线,主要是Apache Hive框架非常火,而Hive底层就是使用的MapReduce

Yarn(分布式资源调度)

概述

????????管控整个分布式服务器集群的全部资源,整合进行统一调度,可以提高资源利用率

????????MapRudece是基于Yarn运行的,YARN用来调度资源给MapReduce分配和管理运行资源

????????所以,MapReduce需要YARN才能执行(普遍情况)

?Yarn架构(核心架构+辅助架构)

核心架构(与HDFS非常相似、主从架构)

与HDFS非常相似

????????ResourceManager:整个集群的资源调度者(集群资源的管家),负责协调调度各个程序所需的资源。

??????? NodeManager:单个服务器的资源调度者(单个设备的管家),负责调度单个服务器上的资源提供给应用程序使用。

????????容器类似于一个集装箱,程序运行在容器内,无法突破容器的资源限制 ?

辅助架构

????????代理服务器(ProxyServer):给Yarn提供一定的安全保障

????????JobHistoryServer历史服务器:统一收集到HDFS,由历史服务器托管为WEB UI供用户在浏览器统一查看

管控整个分布式服务器集群的全部资源,整合进行统一调度

2.部署

????????在node1以hadoop用户做出以下改进:

mapred-env.sh

export JAVA_HOME=/export/server/jdk
export HADOOP_JOB_HISTORYSERVER_HEAPSIZE=1000
export HADOOP_MAPRED_ROOT_LOGGER=INFO,RFA

mapred-site.xml

<configuration>
  <property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
    <description></description>
  </property>

  <property>
    <name>mapreduce.jobhistory.address</name>
    <value>node1:10020</value>
    <description></description>
  </property>


  <property>
    <name>mapreduce.jobhistory.webapp.address</name>
    <value>node1:19888</value>
    <description></description>
  </property>


  <property>
    <name>mapreduce.jobhistory.intermediate-done-dir</name>
    <value>/data/mr-history/tmp</value>
    <description></description>
  </property>


  <property>
    <name>mapreduce.jobhistory.done-dir</name>
    <value>/data/mr-history/done</value>
    <description></description>
  </property>
<property>
  <name>yarn.app.mapreduce.am.env</name>
  <value>HADOOP_MAPRED_HOME=$HADOOP_HOME</value>
</property>
<property>
  <name>mapreduce.map.env</name>
  <value>HADOOP_MAPRED_HOME=$HADOOP_HOME</value>
</property>
<property>
  <name>mapreduce.reduce.env</name>
  <value>HADOOP_MAPRED_HOME=$HADOOP_HOME</value>
</property>
</configuration>

yarn-env.sh

export JAVA_HOME=/export/server/jdk
export HADOOP_HOME=/export/server/hadoop
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
# export YARN_CONF_DIR=$HADOOP_HOME/etc/hadoop
# export YARN_LOG_DIR=$HADOOP_HOME/logs/yarn
export HADOOP_LOG_DIR=$HADOOP_HOME/logs

yarn-site.xml

<configuration>

<!-- Site specific YARN configuration properties -->
<property>
    <name>yarn.log.server.url</name>
    <value>http://node1:19888/jobhistory/logs</value>
    <description></description>
</property>

  <property>
    <name>yarn.web-proxy.address</name>
    <value>node1:8089</value>
    <description>proxy server hostname and port</description>
  </property>


  <property>
    <name>yarn.log-aggregation-enable</name>
    <value>true</value>
    <description>Configuration to enable or disable log aggregation</description>
  </property>

  <property>
    <name>yarn.nodemanager.remote-app-log-dir</name>
    <value>/tmp/logs</value>
    <description>Configuration to enable or disable log aggregation</description>
  </property>


<!-- Site specific YARN configuration properties -->
  <property>
    <name>yarn.resourcemanager.hostname</name>
    <value>node1</value>
    <description></description>
  </property>

  <property>
    <name>yarn.resourcemanager.scheduler.class</name>
    <value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler</value>
    <description></description>
  </property>

  <property>
    <name>yarn.nodemanager.local-dirs</name>
    <value>/data/nm-local</value>
    <description>Comma-separated list of paths on the local filesystem where intermediate data is written.</description>
  </property>


  <property>
    <name>yarn.nodemanager.log-dirs</name>
    <value>/data/nm-log</value>
    <description>Comma-separated list of paths on the local filesystem where logs are written.</description>
  </property>


  <property>
    <name>yarn.nodemanager.log.retain-seconds</name>
    <value>10800</value>
    <description>Default time (in seconds) to retain log files on the NodeManager Only applicable if log-aggregation is disabled.</description>
  </property>

  <property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
    <description>Shuffle service that needs to be set for Map Reduce applications.</description>
  </property>
</configuration>

分发到另外两个节点

?node1配置完,为了省事直接分发给node2、node3

scp * node2:`pwd`/
scp * node3:`pwd`/

启动YARN

#一键启动YARN集群(可控制resourcemanager、nodemanager、proxyserver三种进程
):
$HADOOP_HOME/sbin/start-yarn.sh

#启动历史服务器
$HADOOP_HOME/bin/mapred --daemon start historyserver 

jps

启动WEB UI页面

????????在浏览器输入http://node1:8088

?3.提交自带MapReduce示例程序到Yarn运行

?? YARN作为资源调度管控框架,其本身提供资源供许多程序运行,常见的有:

  1. MapReduce程序

  2. Spark程序

  3. Flink程序

wordcount

????????这些内置的示例MapReduce程序代码,都在:$HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.0.jar文件内

????????可以通过 hadoop jar 命令来运行它,提交MapReduce程序到YARN中。

#在/export操作
vim words.txt

#填入
itheima itcast itheima itcast
hadoop hdfs hadoop hdfs
hadoop mapreduce hadoop yarn
itheima hadoop itcast hadoop
itheima itcast hadoop yarn mapreduce


hadoop fs -mkdir -p /input/wordcount
hadoop fs -mkdir /output
hadoop fs -put words.txt /input/wordcount/

#提交示例MapReduce程序WordCount到YARN中执行

hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.0.jar wordcount hdfs://node1:8020/input/wordcount/ hdfs://node1:8020/output/wc1

#参数
参数wordcount,表示运行jar包中的单词计数程序(Java Class)
参数1是数据输入路径(hdfs://node1:8020/input/wordcount/)
参数2是结果输出路径(hdfs://node1:8020/output/wc1), 需要确保输出的文件夹不存在

提交程序后,可以在YARNWEB UI页面看到运行中的程序(http://node1:8088/cluster/apps)

????????查看结果:

wc1中的
_SUCCESS 文件是标记文件,表示运行成功,本身是空文件
part-r-00000 ,是结果文件,结果存储在以 part 开头的文件中

查看到详细的运行日志信息

求圆周率

hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.0.jar pi 3 1000


#参数pi表示要运行的Java类,这里表示运行jar包中的求pi程序
#参数3,表示设置几个map任务
#参数1000,表示模拟求PI的样本数(越大求的PI越准确,但是速度越慢)

文章来源:https://blog.csdn.net/qq_54828577/article/details/135069881
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。