mapreduce yarn(mapreduce,spark和yarn的区别是什么)

本文目录
mapreduce,spark和yarn的区别是什么
Hadoop
它是一个分布式系统基础架构,由Apache基金会所开发。
用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。
Hadoop的框架最核心的设计就是:HDFS和MapReduce.HDFS为海量的数据提供了存储,则MapReduce为海量的数据提供了计算。
Yarn
它是Hadoop2.0的升级版。
Yarn 的优点:
这个设计大大减小了 JobTracker(也就是现在的 ResourceManager)的资源消耗,并且让监测每一个 Job 子任务 (tasks) 状态的程序分布式化了,更安全、更优美。
在新的 Yarn 中,ApplicationMaster 是一个可变更的部分,用户可以对不同的编程模型写自己的 AppMst,让更多类型的编程模型能够跑在 Hadoop 集群中,可以参考 hadoop Yarn 官方配置模板中的 mapred-site.xml 配置。
对于资源的表示以内存为单位 ( 在目前版本的 Yarn 中,没有考虑 cpu 的占用 ),比之前以剩余 slot 数目更合理。
老的框架中,JobTracker 一个很大的负担就是监控 job 下的 tasks 的运行状况,现在,这个部分就扔给 ApplicationMaster 做了,而 ResourceManager 中有一个模块叫做 ApplicationsMasters( 注意不是 ApplicationMaster),它是监测 ApplicationMaster 的运行状况,如果出问题,会将其在其他机器上重启。
Container 是 Yarn 为了将来作资源隔离而提出的一个框架。这一点应该借鉴了 Mesos 的工作,目前是一个框架,仅仅提供 java 虚拟机内存的隔离 ,hadoop 团队的设计思路应该后续能支持更多的资源调度和控制 , 既然资源表示成内存量,那就没有了之前的 map slot/reduce slot 分开造成集群资源闲置的尴尬情况。
Spark
Spark是UC Berkeley AMP lab所开源的类Hadoop MapReduce的通用的并行计算框架,Spark基于map reduce算法实现的分布式计算,拥有Hadoop MapReduce所具有的优点;但不同于MapReduce的是Job中间输出结果可以保存在内存中,从而不再需要读写HDFS,因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的map reduce的算法。
他们三个其实也可以说Hadoop发展的几个阶段,目前Spark非常火,是用Scala语言写的。
简述yarn编程过程,再简述mr编程过程,说明二者有何关系
Yarn 和 MapReduce (MR) 都是 Hadoop 的组件,其中 Yarn 是一个资源管理器,而 MR 是一个分布式计算框架。下面分别介绍它们的编程过程和关系:
Yarn 编程过程:
1. 编写 Yarn 应用程序的客户端代码,该代码通常由一个提交 Yarn 应用程序的命令和一些相关的配置参数组成。
2. 在客户端代码中,需要定义 Yarn 应用程序所需要的资源(如 CPU、内存、磁盘等)以及执行的任务数等。
3. 通过客户端代码将应用程序提交给 Yarn,由 Yarn 根据资源需求和调度策略来分配资源,并在集群中启动应用程序的各个任务。
MR 编程过程:
1. 编写 Map 函数和 Reduce 函数。
2. 将数据分割成多个块,并在多个计算节点上开启 Map 任务来处理每个块的数据。
3. Reduce 任务将 Map 产生的中间输出结果进行合并,生成最终的结果。
Yarn 和 MR 的关系:Yarn 提供了一个资源管理器和调度器,可以将多个 MR 任务分配到不同的计算节点上执行,从而实现了分布式计算的功能。由于 MR 常常需要处理大规模的数据,因此需要 Yarn 这样的分布式计算平台来提供资源调度和管理的支持。因此,两者是密不可分的关系。
yarn和mapreduce资源调优
YARN允许用户配置每个节点上可用的物理内存资源,注意,这里是“可用的”,因为一个节点上的内存会被若干个服务共享,比如一部分给YARN,一部分给HDFS,一部分给HBase等,YARN配置的只是自己可以使用的,配置参数如下:
(1)yarn.nodemanager.resource.memory-mb
表示该节点上YARN可使用的物理内存总量,默认是8192(MB),注意,如果你的节点内存资源不够8GB,则需要调减小这个值,而YARN不会智能的探测节点的物理内存总量。
(2)yarn.scheduler.minimum-allocation-mb
单个容器可申请的最少物理内存量,默认是1024(MB),如果一个容器申请的物理内存量少于该值,则该对应的值改为这个数。
(3) yarn.scheduler.maximum-allocation-mb
单个容器可申请的最多物理内存量,默认是8192(MB)
目前的CPU被划分成虚拟CPU(CPU virtual Core),这里的虚拟CPU是YARN自己引入的概念,初衷是,考虑到不同节点的CPU性能可能不同,每个CPU具有的计算能力也是不一样的,比如某个物理CPU的计算能力可能是另外一个物理CPU的2倍,这时候,你可以通过为第一个物理CPU多配置几个虚拟CPU弥补这种差异。用户提交作业时,可以指定每个任务需要的虚拟CPU个数。在YARN中,CPU相关配置参数如下:
(1)yarn.nodemanager.resource.cpu-vcores
表示该节点上YARN可使用的虚拟CPU个数,默认是8,注意,目前推荐将该值设值为与物理CPU核数数目相同。如果你的节点CPU核数不够8个,则需要调减小这个值,而YARN不会智能的探测节点的物
理CPU总数。
(2)yarn.scheduler.minimum-allocation-vcores
单个容器可申请的最小虚拟CPU个数,默认是1,如果一个容器申请的CPU个数少于该数,则该对应的值改为这个数
(3)yarn.scheduler.maximum-allocation-vcores
单个容器可申请的最多虚拟CPU个数,默认是4
3.mapreduce---Memory调优
(1)yarn.app.mapreduce.am.resource.mb
MR AppMaster需要的内存,默认是1536M
(2)yarn.app.mapreduce.am.command-opts
MR AppMaster的Java opts ,默认是 -Xmx1024m
(3)mapreduce.map.memory.mb
每个map task所需要的内存,默认是1024M。应该是大于或者等于Container的最小内存
(4)mapreduce.reduce.memory.mb
每个reduce task所需要的内存,默认是1024M
(5)mapreduce.map.java.opts
map task进程的java.opts,默认是 -Xmx200m
(6)mapreduce.reduce.java.opts
reduce task进程的java.opts,默认是 -Xmx200m
特别注意:
mapreduce.map.memory.mb 》mapreduce.map.java.opts
mapreduce.reduce.memory.mb 》mapreduce.reduce.java.opts
mapreduce.map.java.opts / mapreduce.map.memory.mb
=0.70~0.80
mapreduce.reduce.java.opts / mapreduce.reduce.memory.mb
=0.70~0.80
在yarn container这种模式下,JVM进程跑在container中,mapreduce.{map|reduce}.java.opts 能够通过Xmx设置JVM最大的heap的使用,
一般设置为0.75倍的memory.mb,
则预留些空间会存储java,scala code等
4.mapreduce---CPU调优
(1)mapreduce.map.cpu.vcores
map task的虚拟核数,默认为1
(2)mapreduce.reduce.cpu.vcores
reduce task的虚拟核数,默认为1
(3)yarn.app.mapreduce.am.resource.cpu-vcores
am的虚拟核数,默认为1
假设机器的物理配置 64G 16cores
装完系统还剩 62G
预留15~20% 14G:DN 4G + NM 1G=5G 9G
DN进程: 生产4G
1000m
hadoop-env.sh
HADOOP_NAMENODE_OPTS=-Xmx1024m
HADOOP_DATANODE_OPTS=-Xmx4096m
NM进程: 生产1G
yarn-env.sh
export YARN_RESOURCEMANAGER_HEAPSIZE=1024
export YARN_NODEMANAGER_HEAPSIZE=1024
部署同一台: 数据本地化
NN RM 经常性部署同一台 说白了 集群节点少
yarn.nodemanager.resource.memory-mb : 48G 计算总内存 固定经验计算值
yarn.nodemanager.resource.cpu-vcores : 24
yarn.scheduler.minimum-allocation-mb : 4G
yarn.scheduler.minimum-allocation-vcores: 2
yarn.scheduler.maximum-allocation-mb : 8G
yarn.scheduler.maximum-allocation-vcores : 4 固定经验值(不要超过5个)
***隐藏网址***
***隐藏网址***

更多文章:
html按钮的类型(html编程里的界面设置按钮类型,如下图的描述,该如何编写点击上排的按钮,在下面显示内容,不换网页)
2026年2月22日 20:45
为什么爬虫都用python(为什么写爬虫都喜欢用python)
2025年8月4日 14:00
anticipate的同义词(怎样记住单词anticipate)
2026年3月15日 20:30
vlookup函数的功能和用法(vlookup函数的主要功能是什么)
2025年11月6日 22:15
需要用到volatile的场合(java volatile在什么场景下适用)
2026年6月3日 11:15
order by原理(oracle中在in子查询语句中order by排序能否用)
2025年7月25日 15:00
jav hdxrw(jAVHDc0M丁uB8 m.tub8为什么找不到一答案.me)
2026年5月16日 08:45
extension strategy(jdbc链接oracle网络适配器问题)
2025年11月5日 14:45
织梦内容管理系统打开要什么(织梦内容管理系统打开时怎么那么慢)
2026年2月23日 22:15
ueditor上传图片写入数据库(ueditor富文本编辑器上传图片怎么配置)
2025年12月7日 11:00
使用md5后能不能破解(用MD5加密后的字段有反解密的方法吗)
2025年10月15日 18:00












