【大数据】MapReduce与YARN 介绍与配置

发布时间 2023-10-07 12:41:47作者: PythonNew_Mr.Wang

MapReduce 架构

    MapReduce是一种分布式计算模型,用于处理大规模数据集。它将数据分成小块,分配给集群中的节点进行处理。Map阶段处理数据并生成键值对,Shuffle阶段将相同键的值对传输到同一节点进行排序和分组,Reduce阶段对每组键值对执行操作并生成结果。整个过程由Master节点协调和控制。MapReduce利用数据本地性优化策略,提高系统性能和效率。



MapReduce 文件配置


# (1) 配置 mapred-env.sh 
[hadoop@test1 server]$ cd /export/server/hadoop/etc/hadoop/
[hadoop@test1 hadoop]$ vim mapred-env.sh 

export JAVA_HOME=/export/server/jdk           
export HADOOP_JOB_HISTORYSERVER_HEAPSIZE=1000    # JobHistoryServer进程内存为1G
export HADOOP_MAPRED_ROOT_LOGGER=INFO,RFA        # 日志级别为INFO


# (2) 配置 mapred-site.xml   
[hadoop@test1 hadoop]$ vim mapred-site.xml 

<configuration>
  <property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
    <description></description>
  </property>
  <property>
    <name>mapreduce.jobhistory.address</name>
    <value>test1:10020</value>                     # test1-自定义
    <description></description>
  </property>
  <property>
    <name>mapreduce.jobhistory.webapp.address</name>
    <value>test1:19888</value>                    # test1-自定义
    <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 架构

核心角色:
	1:ResourceManager(资源管理器)负责整个集群的资源管理和作业调度。它接收作业提交请求,根据集群的资源状况为作业分配资源,并监控作业的执行状态。ResourceManager还负责与NodeManager通信,协调资源的分配和回收。

	2:NodeManager(节点管理器)在集群的每个节点上运行,负责管理节点的资源和容器。它接收ResourceManager的指令,分配节点资源给作业执行的容器,并监控容器的运行状态和资源使用情况。NodeManager还负责向ResourceManager报告节点的健康状态。
	
	
辅助角色:
	1:ProxyServer是YARN的一个可选组件,用于提供对YARN服务的代理访问。它充当了客户端和ResourceManager之间的中间层,可以绕过网络限制直接访问ResourceManager。

	2:JobHistoryServer是YARN的一个核心组件,用于存储和展示作业的历史信息。它接收来自NodeManager的作业历史数据,并将其存储在持久化存储中,方便后续查询和分析作业的执行情况和统计信息。



YARN 文件配置


# (2) 配置vim yarn-site.xml    
[hadoop@test1 hadoop]$ vim yarn-site.xml 

<configuration>
    <property>
        <name>yarn.log.server.url</name>
        <value>http://test1:19888/jobhistory/logs</value>
        <description></description>
    </property>
  	<property>
    	<name>yarn.web-proxy.address</name>
        <value>test1:8089</value>                        # test1-自定义
        <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>test1</value>                   # test1-自定义
        <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>