MapReduce作业在YARN的内存分配设置

简介: MapReduce作业在YARN的内存分配设置

0x00 教程内容


  1. 内存分配设置
  2. 校验结果


0x01 内存分配设置


1. 目前YARN配置情况

a. 首先启动HDFS与YARN

start-dfs.sh

start-yarn.sh

b. 打开master的8088端口


image.png


可以看到我们之前的配置,请参考:YARN与MapReduce的配置与使用


YARN总管理内存:3.18GB(两个从节点都是1.59G),

虚拟CPU:4个(我们配置虚拟机的时候配的,每台虚拟机2个CPU),

活的节点:2个(slave1、slave2)


2. 配置MapReduce配置文件

a. 主要配置三个进程:

MRAppMaster

MapTask

ReduceTask

(每个进程3个配置:总内存、堆内存、虚拟CPU)


b. 添加以下配置 mapred-site.xml

cd $HADOOP_HOME/etc/hadoop

vi mapred-site.xml


<property>
    <name>yarn.app.mapreduce.am.resource.mb</name>
    <value>1200</value>
  <description>表示MRAppMaster需要的总内存大小,默认是1536</description>
</property>
<property>
    <name>yarn.app.mapreduce.am.command-opts</name>
    <value>-Xmx800m</value>
    <description>表示MRAppMaster需要的堆内存大小,默认是:-Xmx1024m</description>
</property>
<property>
    <name>yarn.app.mapreduce.am.resource.cpu-vcores</name>
    <value>1</value>
    <description>表示MRAppMaster需要的的虚拟cpu数量,默认是:1</description>
</property>
<property>
    <name>mapreduce.map.memory.mb</name>
    <value>512</value>
  <description>表示MapTask需要的总内存大小,默认是1024</description>
</property>
<property>
    <name>mapreduce.map.java.opts</name>
    <value>-Xmx300m</value>
    <description>表示MapTask需要的堆内存大小,默认是-Xmx200m</description>
</property>
<property>
    <name>mapreduce.map.cpu.vcores</name>
    <value>1</value>
    <description>表示MapTask需要的虚拟cpu大小,默认是1</description>
</property>
<property>
    <name>mapreduce.reduce.memory.mb</name>
    <value>512</value>
    <description>表示ReduceTask需要的总内存大小,默认是1024</description>
</property>
<property>
    <name>mapreduce.reduce.java.opts</name>
    <value>-Xmx300m</value>
    <description>表示ReduceTask需要的堆内存大小,默认是-Xmx200m</description>
</property>
<property>
    <name>mapreduce.reduce.cpu.vcores</name>
    <value>1</value>
    <description>表示ReduceTask需要的虚拟cpu大小,默认是1</description>
</property>


c. 同步 mapred-site.xml 到slave1、slave2:


scp mapred-site.xml hadoop-sny@slave1:~/bigdata/hadoop-2.7.5/etc/hadoop
scp mapred-site.xml hadoop-sny@slave2:~/bigdata/hadoop-2.7.5/etc/hadoop


0x02 校验结果


1. 重新执行MapReduce作业

a. 执行作业

hadoop jar ~/jar/hadoop-learning-1.0.jar com.shaonaiyi.hadoop.WordCount hdfs://master:9999/files/put.txt hdfs://master:9999/output/wc/


参考教程:MapReduce入门例子之WordCount单词计数 的0x01 单词计数1. 操作流程


说明:因为MapReduce的配置没有重启的概念,每次执行都会加载,所以不用重启HDFS和YARN


2. 查看作业执行情况

a. 刷新几次YARN的WebUI界面(master:8088)


image.png


b. 点开作业,可以看到我是写了一个MapTask、三个ReduceTask,作业不同,结果可能不同。


image.png


如在执行WordCount作业时,出现虚拟内存不足情况,请调大YARN虚拟内存:

=> 配置 yarn-site.xml


<property>
  <name>yarn.nodemanager.vmem-pmem-ratio</name>
  <value>4</value>
  <description>yarn虚拟内存和物理内存的比率,默认是2.1</description>
</property>


然后同步到slave1、slave2节点。


0xFF 总结


  1. 这些配置是比较基础的,也是比较重要的。
  2. 需要清楚前面我们的教程是怎样配置的,才有利于我们现在为什么是这样的。
  3. 查看我们之前的配置,请参考教程:YARN与MapReduce的配置与使用
  4. 此教程的配置是通过配置文件的方式配置的,我们也可以通过代码的方式来制定:


   job.getConfiguration().set("yarn.app.mapreduce.am.resource.mb", "512");
   job.getConfiguration().set("yarn.app.mapreduce.am.command-opts", "-Xmx250m");
   job.getConfiguration().set("yarn.app.mapreduce.am.resource.cpu-vcores", "1");
   job.getConfiguration().set("mapreduce.map.memory.mb", "400");
   job.getConfiguration().set("mapreduce.map.java.opts", "-Xmx200m");
   job.getConfiguration().set("mapreduce.map.cpu.vcores", "1");
   job.getConfiguration().set("mapreduce.reduce.memory.mb", "400");
   job.getConfiguration().set("mapreduce.reduce.java.opts", "-Xmx200m");
   job.getConfiguration().set("mapreduce.reduce.cpu.vcores", "1");
   job.getConfiguration().set("mapreduce.job.queuename", "eng");




相关文章
|
缓存 Prometheus 监控
Elasticsearch集群JVM调优设置合适的堆内存大小
Elasticsearch集群JVM调优设置合适的堆内存大小
2336 1
|
人工智能 运维 并行计算
函数计算产品使用问题之如何设置来人为限制内存的使用
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
128 1
函数计算产品使用问题之如何设置来人为限制内存的使用
|
11月前
|
存储 IDE Java
java设置栈内存大小
在Java应用中合理设置栈内存大小是确保程序稳定性和性能的重要措施。通过JVM参数 `-Xss`,可以灵活调整栈内存大小,以适应不同的应用场景。本文介绍了设置栈内存大小的方法、应用场景和注意事项,希望能帮助开发者更好地管理Java应用的内存资源。
644 4
|
运维 监控 Ubuntu
【运维】如何在Ubuntu中设置一个内存守护进程来确保内存不会溢出
通过设置内存守护进程,可以有效监控和管理系统内存使用情况,防止内存溢出带来的系统崩溃和服务中断。本文介绍了如何在Ubuntu中编写和配置内存守护脚本,并将其设置为systemd服务。通过这种方式,可以在内存使用超过设定阈值时自动采取措施,确保系统稳定运行。
500 4
|
弹性计算 Kubernetes Perl
k8s 设置pod 的cpu 和内存
在 Kubernetes (k8s) 中,设置 Pod 的 CPU 和内存资源限制和请求是非常重要的,因为这有助于确保集群资源的合理分配和有效利用。你可以通过定义 Pod 的 `resources` 字段来设置这些限制。 以下是一个示例 YAML 文件,展示了如何为一个 Pod 设置 CPU 和内存资源请求(requests)和限制(limits): ```yaml apiVersion: v1 kind: Pod metadata: name: example-pod spec: containers: - name: example-container image:
1749 1
|
资源调度 分布式计算 Hadoop
使用YARN命令管理Hadoop作业
本文介绍了如何使用YARN命令来管理Hadoop作业,包括查看作业列表、检查作业状态、杀死作业、获取作业日志以及检查节点和队列状态等操作。
520 1
使用YARN命令管理Hadoop作业
|
存储 消息中间件 监控
JVM内存问题之ARMS监控显示堆内存和我设置的不同如何解决
JVM内存问题之ARMS监控显示堆内存和我设置的不同如何解决
187 1
|
SQL 缓存 资源调度
实时计算 Flink版产品使用问题之在Flink on Yarn模式下,如何对job作业进行指标监控
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
分布式计算 资源调度 数据处理
YARN支持哪些非基于MapReduce的计算模型?
【6月更文挑战第19天】YARN支持哪些非基于MapReduce的计算模型?
252 11
|
分布式计算 资源调度 Hadoop
在YARN集群上运行部署MapReduce分布式计算框架
主要介绍了如何在YARN集群上配置和运行MapReduce分布式计算框架,包括准备数据、运行MapReduce任务、查看任务日志,并启动HistoryServer服务以便于日志查看。
274 0