欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

1

程序员文章站 2024-03-21 19:46:40
...

	<div class="article-header-box">
		<div class="article-header">
			<div class="article-title-box">
				<span class="article-type type-1 float-left">原</span>				<h1 class="title-article">Yarn下Mapreduce的内存参数理解&amp;xml参数配置</h1>
			</div>
			<div class="article-info-box">
				<div class="article-bar-top" style="height: 23px;">
																				<span class="time">2017年11月26日 15:39:15</span>
					<a class="follow-nickName" href="https://me.csdn.net/z3935212" target="_blank">z3935212</a>
						<span class="read-count">阅读数:2035</span>
						
														<span class="tags-box artic-tag-box">
								<span class="label">标签:</span>
																<a data-track-click="{&quot;mod&quot;:&quot;popu_626&quot;,&quot;con&quot;:&quot;mapreduce&quot;}" class="tag-link" href="http://so.csdn.net/so/search/s.do?q=mapreduce&amp;t=blog" target="_blank">mapreduce																</a><a data-track-click="{&quot;mod&quot;:&quot;popu_626&quot;,&quot;con&quot;:&quot;内存&quot;}" class="tag-link" href="http://so.csdn.net/so/search/s.do?q=内存&amp;t=blog" target="_blank">内存																</a><a data-track-click="{&quot;mod&quot;:&quot;popu_626&quot;,&quot;con&quot;:&quot;yarn&quot;}" class="tag-link" href="http://so.csdn.net/so/search/s.do?q=yarn&amp;t=blog" target="_blank">yarn																</a><a data-track-click="{&quot;mod&quot;:&quot;popu_626&quot;,&quot;con&quot;:&quot;框架&quot;}" class="tag-link" href="http://so.csdn.net/so/search/s.do?q=框架&amp;t=blog" target="_blank">框架																</a>
							<span class="article_info_click">更多</span></span>
																					<div class="tags-box space">
								<span class="label">个人分类:</span>
																<a class="tag-link" href="https://blog.csdn.net/z3935212/article/category/7310584" target="_blank">大数据																</a>
							</div>
																								</div>
				<div class="operating">
														</div>
			</div>
		</div>
	</div>
	<article>
		<div id="article_content" class="article_content clearfix csdn-tracking-statistics" data-pid="blog" data-mod="popu_307" data-dsm="post" style="height: 1896px; overflow: hidden;">
								            <div class="markdown_views">
							<!-- flowchart 箭头图标 勿删 -->
							<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><path stroke-linecap="round" d="M5,0 0,2.5 5,5z" id="raphael-marker-block" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></path></svg>
							<p>参考:<a href="http://dongxicheng.org/mapreduce-nextgen/hadoop-yarn-configurations-resourcemanager-nodemanager/" rel="nofollow" target="_blank">http://dongxicheng.org/mapreduce-nextgen/hadoop-yarn-configurations-resourcemanager-nodemanager/</a></p>



<h2 id="container是什么"><a name="t0"></a><strong>Container是什么?</strong></h2>

<p>Container就是一个yarn的java进程,在Mapreduce中的AM,MapTask,ReduceTask都作为Container在Yarn的框架上执行,你可以在RM的网页上【8088端口】看到Container的状态</p>



<h2 id="基础"><a name="t1"></a><strong>基础</strong></h2>

<p>Yarn的ResourceManger(简称RM)通过逻辑上的队列分配内存,CPU等资源给application,默认情况下RM允许最大AM申请Container资源为8192MB(“yarn.scheduler.maximum-allocation-mb“),默认情况下的最小分配资源为1024M(“yarn.scheduler.minimum-allocation-mb“),AM只能以增量(”yarn.scheduler.minimum-allocation-mb“)和不会超过(“yarn.scheduler.maximum-allocation-mb“)的值去向RM申请资源,AM负责将(“mapreduce.map.memory.mb“)和(“mapreduce.reduce.memory.mb“)的值规整到能被(“yarn.scheduler.minimum-allocation-mb“)整除,RM会拒绝申请内存超过8192MB和不能被1024MB整除的资源请求【内存增量】。</p>

<p><strong>本文基于Hadoop2.6;下面提到的配置项最好都要设置以覆盖默认值,以便调优。</strong></p>



<h2 id="1yarn-sitexml-设置"><a name="t2"></a><strong>1、yarn-site.xml 设置</strong></h2>

<p>yarn进行资源管理的时候:以contain作为最小单位来进行资源分配的。 <br>
<strong>事实上Hadoop所有设置都可以写在同一个xml中,</strong>但是为了自己查看方便,模块化,所以分开写。 <br>
yarn-site.xml主要设置yarn的基本配置,以yarn开头的配置项。修改后必须重启集群生效。 <br>
mapred-site.xml主要设置mapreduxe任务的配置项;这个文件修改后不需重启集群。</p>



<h2 id="11-nm设置nodemanager"><a name="t3"></a><strong>1.1 NM设置(NodeManager)</strong></h2>

<p>NM的内存资源配置,主要是通过下面两个参数进行的(这两个值是Yarn平台特性,应在yarn-sit.xml中配置) : <br>
yarn.nodemanager.resource.memory-mb 默认8GB <br>
yarn.nodemanager.vmem-pmem-ratio     默认2.1 <br>
说明:第一个参数:该结点向操作系统申请的内存总量,RM中的两个值不能超过此值。此数值可以用于计算container最大数目,即:用此值除以RM中的最小容器内存。第二个:虚拟内存率,是占task所用内存的百分比,默认值为2.1倍。如报错虚拟内存溢出,则提高该值。 <br>
注意:第一个参数默认大小是8G,即使计算机内存不足8G也会按着8G内存来使用,所有计算机内存小于8GB应该调低这个值。</p>



<h2 id="12-rm设置resourcemanager"><a name="t4"></a><strong>1.2 RM设置(ResourceManager)</strong></h2>

<p>RM的内存资源配置,主要是通过下面的两个参数进行的(这两个值是Yarn平台特性,应在yarn-sit.xml中配置): <br>
yarn.scheduler.minimum-allocation-mb  默认1GB <br>
yarn.scheduler.maximum-allocation-mb  默认8GB <br>
说明:单个容器可申请的最小与最大内存,应用在运行申请内存时不能超过最大值,应用申请小于最小值则会分配最小值,从这个角度看,最小值有点像操作系统中的页。最小值还有另外一种用途,用来计算一个节点的最大container数目。注:这两个值一经设定不能动态改变(此处所说的动态改变是指需要重启集群生效)。</p>



<h1 id="2mapred-sitexml-设置见文后附录"><a name="t5"></a><strong>2、mapred-site.xml 设置见文后附录</strong></h1>

<h2 id="21-am设置applicationmanager"><a name="t6"></a><strong>2.1 AM设置(ApplicationManager)</strong></h2>

<p>AM内存配置相关参数,此处以MapReduce为例进行说明(这两个值是AM特性,应在mapred-site.xml中配置),如下: <br>
mapreduce.map.memory.mb     默认 <br>
mapreduce.reduce.memory.mb 默认 <br>
说明:单个Map/Reduce task 申请的内存大小,其值应该在RM中的最大和最小container值之间。如果没有配置则通过如下简单公式获得: <br>
max(MIN_CONTAINER_SIZE, (Total Available RAM) / containers)) <br>
<strong>一般reduce内存大小应该是map的2倍。</strong>注:这两个值可以在应用启动时通过参数改变,可以动态调整;</p>



<h2 id="22-am-jvm设置"><a name="t7"></a><strong>2.2 AM JVM设置</strong></h2>

<p>AM中其它与内存相关的参数,还有JVM相关的参数,这些参数可以通过,如下选项配置: <br>
mapreduce.map.java.opts     默认 <br>
mapreduce.reduce.java.opts 默认 <br>
说明:这两个参主要是为需要运行JVM程序(java、scala等)准备的,通过这两个设置可以向JVM中传递参数的,与内存有关的是,-Xmx,-Xms等选项。此数值大小,应该在AM中的map.mb和reduce.mb之间。</p>



<h2 id="23总结"><a name="t8"></a><strong>2.3总结</strong></h2>

<p>AM为Map/Reduce task向RM申请资源,RM按照mini和max、资源增量的值为task分配一个固定大小的container供task使用。RM可以分配下去的资源总量受到NM配置的值限制。</p>



<h2 id="3注意"><a name="t9"></a><strong>3、注意:</strong></h2>

<p>在hadoop2及以上版本中,map和reduce task 是运行在container中的。mapreduce.{map|reduce}.memory.mb 被yarn用来设置container的内存大小。如果container的内存超限,会被yarn杀死。在container中,为了执行map和reduce task,yarn会在contaner中启动一个jvm来执行task任务。mapreduce.{map|reduce}.java.opts用来设置container启动的jvm相关参数,通过设置Xmx来设置map 或者reduce task的最大堆内存。 <br>
理论上,{map|reduce}.java.opts设置的最大堆内存要比{map|reduce}.memory.mb小。一般设置为一般设置为0.75倍的memory.mb即可;因为在yarn container这种模式下,JVM进程跑在container中,需要为java code等非JVM的内存使用预留些空间。 <br>
运行中的设置方法例如:xml中也可设置 <br>
hadoop jar -Dmapreduce.reduce.memory.mb=4096 -Dmapreduce.map.java.opts=-Xmx3276</p>



<h2 id="4常见内存溢出报错解决"><a name="t10"></a><strong>4、常见内存溢出报错&amp;解决</strong></h2>

<p>默认情况下,yarn.nodemanager.vmem-pmem-ratio被设置为2.1,这意味着,每个map或者task任务只能使用2.1倍(”mapreduce.reduce.memory.mb”) or (“mapreduce.map.memory.mb”) 大小的虚拟内存,如果使用的量超出则会被nm杀掉。 <br>
例如:日志中常见报错: <br>
1、Container xxx is running beyond physical memory limits <br>
2、java heap space <br>
3、Error: GC overhead limit exceeded</p>



<pre class="prettyprint" name="code"><code class="hljs lasso has-numbering">报错<span class="hljs-number">1</span>:Current usage: <span class="hljs-number">1.1</span>gb of <span class="hljs-number">2.0</span>gb physical memory used; <span class="hljs-number">4.6</span>gb of <span class="hljs-number">4.2</span>gb virtual memory used<span class="hljs-built_in">.</span> Killing container<span class="hljs-built_in">.</span>【即虚拟内存溢出】;
<span class="hljs-subst">**</span>方法一:提高yarn<span class="hljs-built_in">.</span>nodemanager<span class="hljs-built_in">.</span>vmem<span class="hljs-attribute">-pmem</span><span class="hljs-attribute">-ratio</span> <span class="hljs-subst">=</span> <span class="hljs-number">5</span>或者更高;【推荐】<span class="hljs-subst">**</span>
方法二:yarn<span class="hljs-built_in">.</span>nodemanager<span class="hljs-built_in">.</span>vmem<span class="hljs-attribute">-check</span><span class="hljs-attribute">-enabled</span> <span class="hljs-subst">=</span><span class="hljs-literal">false</span> ;关闭虚拟内存检查;不推荐
方法三:提高物理内存分配,相应的虚拟内存自然就多了,但是这样不是最优</code><ul class="pre-numbering" style=""><li style="color: rgb(153, 153, 153);">1</li><li style="color: rgb(153, 153, 153);">2</li><li style="color: rgb(153, 153, 153);">3</li><li style="color: rgb(153, 153, 153);">4</li></ul></pre>



<pre class="prettyprint" name="code"><code class="hljs avrasm has-numbering">报错<span class="hljs-number">2</span>:Current usage: <span class="hljs-number">2.1</span>gb of <span class="hljs-number">2.0</span>gb physical memory used<span class="hljs-comment">; 3.6gb of 4.2gb virtual memory used. Killing container.【即物理内存溢出】;</span>
方法一:mapreduce<span class="hljs-preprocessor">.map</span><span class="hljs-preprocessor">.memory</span><span class="hljs-preprocessor">.mb</span> = <span class="hljs-number">3</span>GB以上,然后测试这个map/reduce task需要使用多少内存才够用,提高这个值直到不报错为止。
方法二:提高yarn<span class="hljs-preprocessor">.scheduler</span><span class="hljs-preprocessor">.minimum</span>-allocation-mb = <span class="hljs-number">3</span>GB以上,同理【不推荐】</code><ul class="pre-numbering" style=""><li style="color: rgb(153, 153, 153);">1</li><li style="color: rgb(153, 153, 153);">2</li><li style="color: rgb(153, 153, 153);">3</li></ul></pre>



<h2 id="5内存分配增量规整因子incrementmemory"><a name="t11"></a><strong>5、内存分配增量/规整因子/incrementMemory</strong></h2>

<p>为了易于管理资源和调度资源,Hadoop YARN内置了资源规整化算法,它规定了最小可申请资源量、最大可申请资源量和<strong>资源规整化因子</strong>,规整化因子是用来规整化应用程序资源的,<strong>应用程序申请的资源如果不是该因子的整数倍,则将被修改为最小的整数倍对应的值</strong>,公式为ceil(a/b)*b,其中a是应用程序申请的资源,b为规整化因子。对于规整化因子,不同调度器不同,具体如下: <br>
FIFO和Capacity Scheduler,规整化因子等于最小可申请资源量,不可单独配置。 <br>
Fair Scheduler:规整化因子通过参数yarn.scheduler.increment-allocation-mb和yarn.scheduler.increment-allocation-vcores设置,默认是1024和1。 <br>
通过以上介绍可知,应用程序申请到资源量可能大于资源申请的资源量,比如YARN的最小可申请资源内存量为1024,规整因子是1024,如果一个应用程序申请1500内存,则会得到2048内存,如果规整因子是512,则得到1536内存。</p>

<p>如下图:map container的内存(“mapreduce.map.memory.mb”)被设置为1536mb 。但是AM会为其申请了2048m的内存,因为am的最小分配单位/增量(yarn.scheduler.minimum-allocation-mb)被设置为1024,也就是以1GB为单位往上加。这是一种逻辑上的分配,这个值被NodeManager用来监控该进程内存资源的使用率,如果mapTask的堆内存使用率超过了2048MB,NM将会把这个task给杀掉。</p>

<p><img src="http://hackershell.cn/image/Copy_of_Yarn_mem_params.jpg" alt="这里写图片描述" title=""> <br>
从上面的图可以看出map,reduce,AM container的JVM,“JVM”矩形代表服务进程,“Max heap”,“Max virtual”矩形代表NodeManager对JVM进程的最大内存和虚拟内存的限制。</p>

<p>When a mapreduce job completes you will see several counters dumped at the end of the job.The three memory counters below show how much physical memory was allocated vs virtual memory.</p>

<hr>

<p>对于56G内存的NM来说,如果全部跑map则56/3大约跑18个container <br>
大概了解完以上的参数之后,mapreduce.map.java.opts和mapreduce.map.memory.mb参数之间,有什么联系呢? <br>
通过上面的分析,我们知道如果一个yarn的container超除了heap设置的大小,这个task将会失败,我们可以根据哪种类型的container失败去相应增大mapreduce.{map|reduce}.memory.mb去解决问题。 <strong>但同时带来的问题是集群并行跑的container的数量少了</strong>,<strong><em>所以适当的调整内存参数对集群的利用率的提升尤为重要。</em></strong></p>

<hr>



<h2 id="对cpu的设置参数"><a name="t12"></a><strong>对cpu的设置参数:</strong></h2>

<p>在yarn的框架中,CPU的配置决定了一个任务的生死,CPU只是决定了任务的完成效率。所以CPU的设置只是简单列出来。 <br>
yarn.scheduler.minimum-allocation-vcores:最小可申请CPU数,默认是1 <br>
yarn.scheduler.maximum-allocation-vcores:最大可申请CPU数,默认是4 <br>
yarn.nodemanager.resource.cpu-vcores:集群向系统申请的总可用CPU数目,默认是8</p>

<p>mapreduce.map.cpu.vcores:task container申请的CPU数目,默认是1 <br>
完结!</p>

<hr>

<p>附录1-我的yarn-site.xml配置:</p>



<pre class="prettyprint" name="code"><code class="hljs xml has-numbering"><span class="hljs-pi">&lt;?xml version="1.0"?&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-title">configuration</span>&gt;</span>
<span class="hljs-comment">&lt;!-- Site specific YARN configuration properties
下面的配置项中值的大小,特别是内存大小,通过每个节点logs中的yarn-hadoop-nodemanager-Slave1.log 文件中查看日志来判断;出错行形如:
running beyond virtual memory limits. Current usage: 484.0 MB of 2 GB physical memory used; 4.9 GB of 4.2 GB virtual memory used. Killing container.
在yarn-hadoop-resourcemanager-Slave1.log日志文件中:形如:表示内存和cpu资源分配:
例如:总的结点资源:&lt;memory:16000, vCores:8&gt;==&lt;memory:10240, vCores:5&gt;+&lt;memory:5760, vCores:3&gt; 
Released container container_1511512572160_0003_01_000025 of capacity &lt;memory:2048, vCores:1&gt; on host Slave1:42899, which currently has 5 containers, &lt;memory:10240, vCores:5&gt; used and &lt;memory:5760, vCores:3&gt; available,
 --&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-title">property</span>&gt;</span>
                <span class="hljs-tag">&lt;<span class="hljs-title">name</span>&gt;</span>yarn.resourcemanager.hostname<span class="hljs-tag">&lt;/<span class="hljs-title">name</span>&gt;</span>
                <span class="hljs-tag">&lt;<span class="hljs-title">value</span>&gt;</span>Slave1<span class="hljs-tag">&lt;/<span class="hljs-title">value</span>&gt;</span>
        <span class="hljs-tag">&lt;/<span class="hljs-title">property</span>&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-title">property</span>&gt;</span>
                <span class="hljs-tag">&lt;<span class="hljs-title">name</span>&gt;</span>yarn.nodemanager.aux-services<span class="hljs-tag">&lt;/<span class="hljs-title">name</span>&gt;</span>
                <span class="hljs-tag">&lt;<span class="hljs-title">value</span>&gt;</span>mapreduce_shuffle<span class="hljs-tag">&lt;/<span class="hljs-title">value</span>&gt;</span>
        <span class="hljs-tag">&lt;/<span class="hljs-title">property</span>&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-title">property</span>&gt;</span>
                <span class="hljs-tag">&lt;<span class="hljs-title">name</span>&gt;</span>yarn.nodemanager.pmem-check-enabled<span class="hljs-tag">&lt;/<span class="hljs-title">name</span>&gt;</span>
                <span class="hljs-tag">&lt;<span class="hljs-title">value</span>&gt;</span>true<span class="hljs-tag">&lt;/<span class="hljs-title">value</span>&gt;</span>
                <span class="hljs-tag">&lt;<span class="hljs-title">description</span>&gt;</span>检测物理内存的使用是否超出分配值,若任务超出分配值,则将其杀掉,默认true。<span class="hljs-tag">&lt;/<span class="hljs-title">description</span>&gt;</span> 
        <span class="hljs-tag">&lt;/<span class="hljs-title">property</span>&gt;</span>          
        <span class="hljs-tag">&lt;<span class="hljs-title">property</span>&gt;</span>
                <span class="hljs-tag">&lt;<span class="hljs-title">name</span>&gt;</span>yarn.nodemanager.vmem-check-enabled<span class="hljs-tag">&lt;/<span class="hljs-title">name</span>&gt;</span>
                <span class="hljs-tag">&lt;<span class="hljs-title">value</span>&gt;</span>true<span class="hljs-tag">&lt;/<span class="hljs-title">value</span>&gt;</span>
                <span class="hljs-tag">&lt;<span class="hljs-title">description</span>&gt;</span>检测虚拟内存的使用是否超出;若任务超出分配值,则将其杀掉,默认true。在确定内存不会泄漏的情况下可以设置此项为 False;<span class="hljs-tag">&lt;/<span class="hljs-title">description</span>&gt;</span> 
        <span class="hljs-tag">&lt;/<span class="hljs-title">property</span>&gt;</span>  
        <span class="hljs-tag">&lt;<span class="hljs-title">property</span>&gt;</span>
                <span class="hljs-tag">&lt;<span class="hljs-title">name</span>&gt;</span>yarn.nodemanager.vmem-pmem-ratio<span class="hljs-tag">&lt;/<span class="hljs-title">name</span>&gt;</span>
                <span class="hljs-tag">&lt;<span class="hljs-title">value</span>&gt;</span>8<span class="hljs-tag">&lt;/<span class="hljs-title">value</span>&gt;</span>
                <span class="hljs-tag">&lt;<span class="hljs-title">description</span>&gt;</span>任务每使用1MB物理内存,最多可使用虚拟内存量比率,默认2.1;在上一项中设置为false不检测虚拟内存时,此项就无意义了<span class="hljs-tag">&lt;/<span class="hljs-title">description</span>&gt;</span> 
        <span class="hljs-tag">&lt;/<span class="hljs-title">property</span>&gt;</span>  
        <span class="hljs-tag">&lt;<span class="hljs-title">property</span>&gt;</span>
                <span class="hljs-tag">&lt;<span class="hljs-title">name</span>&gt;</span>yarn.nodemanager.resource.cpu-vcores<span class="hljs-tag">&lt;/<span class="hljs-title">name</span>&gt;</span>
                <span class="hljs-tag">&lt;<span class="hljs-title">value</span>&gt;</span>12<span class="hljs-tag">&lt;/<span class="hljs-title">value</span>&gt;</span>
                <span class="hljs-tag">&lt;<span class="hljs-title">description</span>&gt;</span>该节点上YARN可使用的总核心数;一般设为cat /proc/cpuinfo| grep "processor"| wc -l 的值。默认是8个;<span class="hljs-tag">&lt;/<span class="hljs-title">description</span>&gt;</span>  
        <span class="hljs-tag">&lt;/<span class="hljs-title">property</span>&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-title">property</span>&gt;</span>
                <span class="hljs-tag">&lt;<span class="hljs-title">name</span>&gt;</span>yarn.nodemanager.resource.memory-mb<span class="hljs-tag">&lt;/<span class="hljs-title">name</span>&gt;</span>
                <span class="hljs-tag">&lt;<span class="hljs-title">value</span>&gt;</span>16000<span class="hljs-tag">&lt;/<span class="hljs-title">value</span>&gt;</span>
                <span class="hljs-tag">&lt;<span class="hljs-title">description</span>&gt;</span>该节点上YARN可使用的物理内存总量,【向操作系统申请的总量】默认是8192(MB)<span class="hljs-tag">&lt;/<span class="hljs-title">description</span>&gt;</span>  
        <span class="hljs-tag">&lt;/<span class="hljs-title">property</span>&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-title">property</span>&gt;</span>
                <span class="hljs-tag">&lt;<span class="hljs-title">name</span>&gt;</span>yarn.scheduler.minimum-allocation-mb<span class="hljs-tag">&lt;/<span class="hljs-title">name</span>&gt;</span>
                <span class="hljs-tag">&lt;<span class="hljs-title">value</span>&gt;</span>3072<span class="hljs-tag">&lt;/<span class="hljs-title">value</span>&gt;</span>
                <span class="hljs-tag">&lt;<span class="hljs-title">description</span>&gt;</span>单个容器/调度器可申请的最少物理内存量,默认是1024(MB);一般每个contain都分配这个值;即:capacity memory:3072, vCores:1,如果提示物理内存溢出,提高这个值即可;<span class="hljs-tag">&lt;/<span class="hljs-title">description</span>&gt;</span> 
        <span class="hljs-tag">&lt;/<span class="hljs-title">property</span>&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-title">property</span>&gt;</span>
                <span class="hljs-tag">&lt;<span class="hljs-title">name</span>&gt;</span>yarn.scheduler.maximum-allocation-mb<span class="hljs-tag">&lt;/<span class="hljs-title">name</span>&gt;</span>
                <span class="hljs-tag">&lt;<span class="hljs-title">value</span>&gt;</span>8000<span class="hljs-tag">&lt;/<span class="hljs-title">value</span>&gt;</span>
                <span class="hljs-tag">&lt;<span class="hljs-title">description</span>&gt;</span>单个容器申请最大值<span class="hljs-tag">&lt;/<span class="hljs-title">description</span>&gt;</span> 
        <span class="hljs-tag">&lt;/<span class="hljs-title">property</span>&gt;</span>    

    <span class="hljs-tag">&lt;<span class="hljs-title">property</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-title">description</span>&gt;</span>The minimum allocation for every container request at the RM,
    in terms of virtual CPU cores. Requests lower than this will throw a
    InvalidResourceRequestException.<span class="hljs-tag">&lt;/<span class="hljs-title">description</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-title">name</span>&gt;</span>yarn.scheduler.minimum-allocation-vcores<span class="hljs-tag">&lt;/<span class="hljs-title">name</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-title">value</span>&gt;</span>1<span class="hljs-tag">&lt;/<span class="hljs-title">value</span>&gt;</span>
  <span class="hljs-tag">&lt;/<span class="hljs-title">property</span>&gt;</span>

<span class="hljs-tag">&lt;<span class="hljs-title">property</span>&gt;</span>  
<span class="hljs-tag">&lt;<span class="hljs-title">description</span>&gt;</span>The http address of the RM web application.<span class="hljs-tag">&lt;/<span class="hljs-title">description</span>&gt;</span>  
<span class="hljs-tag">&lt;<span class="hljs-title">name</span>&gt;</span>yarn.resourcemanager.webapp.address<span class="hljs-tag">&lt;/<span class="hljs-title">name</span>&gt;</span>  
<span class="hljs-tag">&lt;<span class="hljs-title">value</span>&gt;</span>${yarn.resourcemanager.hostname}:8088<span class="hljs-tag">&lt;/<span class="hljs-title">value</span>&gt;</span>  
<span class="hljs-tag">&lt;/<span class="hljs-title">property</span>&gt;</span>  

<span class="hljs-tag">&lt;/<span class="hljs-title">configuration</span>&gt;</span>
</code><ul class="pre-numbering" style=""><li style="color: rgb(153, 153, 153);">1</li><li style="color: rgb(153, 153, 153);">2</li><li style="color: rgb(153, 153, 153);">3</li><li style="color: rgb(153, 153, 153);">4</li><li style="color: rgb(153, 153, 153);">5</li><li style="color: rgb(153, 153, 153);">6</li><li style="color: rgb(153, 153, 153);">7</li><li style="color: rgb(153, 153, 153);">8</li><li style="color: rgb(153, 153, 153);">9</li><li style="color: rgb(153, 153, 153);">10</li><li style="color: rgb(153, 153, 153);">11</li><li style="color: rgb(153, 153, 153);">12</li><li style="color: rgb(153, 153, 153);">13</li><li style="color: rgb(153, 153, 153);">14</li><li style="color: rgb(153, 153, 153);">15</li><li style="color: rgb(153, 153, 153);">16</li><li style="color: rgb(153, 153, 153);">17</li><li style="color: rgb(153, 153, 153);">18</li><li style="color: rgb(153, 153, 153);">19</li><li style="color: rgb(153, 153, 153);">20</li><li style="color: rgb(153, 153, 153);">21</li><li style="color: rgb(153, 153, 153);">22</li><li style="color: rgb(153, 153, 153);">23</li><li style="color: rgb(153, 153, 153);">24</li><li style="color: rgb(153, 153, 153);">25</li><li style="color: rgb(153, 153, 153);">26</li><li style="color: rgb(153, 153, 153);">27</li><li style="color: rgb(153, 153, 153);">28</li><li style="color: rgb(153, 153, 153);">29</li><li style="color: rgb(153, 153, 153);">30</li><li style="color: rgb(153, 153, 153);">31</li><li style="color: rgb(153, 153, 153);">32</li><li style="color: rgb(153, 153, 153);">33</li><li style="color: rgb(153, 153, 153);">34</li><li style="color: rgb(153, 153, 153);">35</li><li style="color: rgb(153, 153, 153);">36</li><li style="color: rgb(153, 153, 153);">37</li><li style="color: rgb(153, 153, 153);">38</li><li style="color: rgb(153, 153, 153);">39</li><li style="color: rgb(153, 153, 153);">40</li><li style="color: rgb(153, 153, 153);">41</li><li style="color: rgb(153, 153, 153);">42</li><li style="color: rgb(153, 153, 153);">43</li><li style="color: rgb(153, 153, 153);">44</li><li style="color: rgb(153, 153, 153);">45</li><li style="color: rgb(153, 153, 153);">46</li><li style="color: rgb(153, 153, 153);">47</li><li style="color: rgb(153, 153, 153);">48</li><li style="color: rgb(153, 153, 153);">49</li><li style="color: rgb(153, 153, 153);">50</li><li style="color: rgb(153, 153, 153);">51</li><li style="color: rgb(153, 153, 153);">52</li><li style="color: rgb(153, 153, 153);">53</li><li style="color: rgb(153, 153, 153);">54</li><li style="color: rgb(153, 153, 153);">55</li><li style="color: rgb(153, 153, 153);">56</li><li style="color: rgb(153, 153, 153);">57</li><li style="color: rgb(153, 153, 153);">58</li><li style="color: rgb(153, 153, 153);">59</li><li style="color: rgb(153, 153, 153);">60</li><li style="color: rgb(153, 153, 153);">61</li><li style="color: rgb(153, 153, 153);">62</li><li style="color: rgb(153, 153, 153);">63</li><li style="color: rgb(153, 153, 153);">64</li><li style="color: rgb(153, 153, 153);">65</li><li style="color: rgb(153, 153, 153);">66</li><li style="color: rgb(153, 153, 153);">67</li><li style="color: rgb(153, 153, 153);">68</li><li style="color: rgb(153, 153, 153);">69</li></ul></pre>

<p>附录2-我的mapred-site.xml:</p>

<pre class="prettyprint" name="code"><code class="hljs xml has-numbering"><span class="hljs-pi">&lt;?xml version="1.0"?&gt;</span>
<span class="hljs-pi">&lt;?xml-stylesheet type="text/xsl" href="configuration.xsl"?&gt;</span>
<span class="hljs-comment">&lt;!-- Put site-specific property overrides in this file.
 --&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-title">configuration</span>&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-title">property</span>&gt;</span>
                <span class="hljs-tag">&lt;<span class="hljs-title">name</span>&gt;</span>mapreduce.framework.name<span class="hljs-tag">&lt;/<span class="hljs-title">name</span>&gt;</span>
                <span class="hljs-tag">&lt;<span class="hljs-title">value</span>&gt;</span>yarn<span class="hljs-tag">&lt;/<span class="hljs-title">value</span>&gt;</span>
        <span class="hljs-tag">&lt;/<span class="hljs-title">property</span>&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-title">property</span>&gt;</span>
                <span class="hljs-tag">&lt;<span class="hljs-title">name</span>&gt;</span>mapreduce.jobhistory.address<span class="hljs-tag">&lt;/<span class="hljs-title">name</span>&gt;</span>
                <span class="hljs-tag">&lt;<span class="hljs-title">value</span>&gt;</span>Slave1:10020<span class="hljs-tag">&lt;/<span class="hljs-title">value</span>&gt;</span>
        <span class="hljs-tag">&lt;/<span class="hljs-title">property</span>&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-title">property</span>&gt;</span>
                <span class="hljs-tag">&lt;<span class="hljs-title">name</span>&gt;</span>mapreduce.jobhistory.webapp.address<span class="hljs-tag">&lt;/<span class="hljs-title">name</span>&gt;</span>
                <span class="hljs-tag">&lt;<span class="hljs-title">value</span>&gt;</span>Slave1:19888<span class="hljs-tag">&lt;/<span class="hljs-title">value</span>&gt;</span>
        <span class="hljs-tag">&lt;/<span class="hljs-title">property</span>&gt;</span>

        <span class="hljs-tag">&lt;<span class="hljs-title">property</span>&gt;</span>
                <span class="hljs-tag">&lt;<span class="hljs-title">name</span>&gt;</span>mapreduce.map.cpu.vcores<span class="hljs-tag">&lt;/<span class="hljs-title">name</span>&gt;</span>
                <span class="hljs-tag">&lt;<span class="hljs-title">value</span>&gt;</span>2<span class="hljs-tag">&lt;/<span class="hljs-title">value</span>&gt;</span>
                <span class="hljs-tag">&lt;<span class="hljs-title">description</span>&gt;</span>每个MapTask容器申请的核心数;默认1<span class="hljs-tag">&lt;/<span class="hljs-title">description</span>&gt;</span> 
        <span class="hljs-tag">&lt;/<span class="hljs-title">property</span>&gt;</span>   
        <span class="hljs-tag">&lt;<span class="hljs-title">property</span>&gt;</span>
                <span class="hljs-tag">&lt;<span class="hljs-title">name</span>&gt;</span>mapreduce.map.memory.mb<span class="hljs-tag">&lt;/<span class="hljs-title">name</span>&gt;</span>
                <span class="hljs-tag">&lt;<span class="hljs-title">value</span>&gt;</span>4096<span class="hljs-tag">&lt;/<span class="hljs-title">value</span>&gt;</span>
                <span class="hljs-tag">&lt;<span class="hljs-title">description</span>&gt;</span>每个Map task容器申请的内存大小;默认1G<span class="hljs-tag">&lt;/<span class="hljs-title">description</span>&gt;</span> 
        <span class="hljs-tag">&lt;/<span class="hljs-title">property</span>&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-title">property</span>&gt;</span>
                <span class="hljs-tag">&lt;<span class="hljs-title">name</span>&gt;</span>mapreduce.map.java.opts<span class="hljs-tag">&lt;/<span class="hljs-title">name</span>&gt;</span>
                <span class="hljs-tag">&lt;<span class="hljs-title">value</span>&gt;</span>-Xmx3072m<span class="hljs-tag">&lt;/<span class="hljs-title">value</span>&gt;</span>
                <span class="hljs-tag">&lt;<span class="hljs-title">description</span>&gt;</span>map使用的JVM的堆大小heapsize;根据单个mapper/reducer容器内存进行调整,heapsize不能大于单个mapper/reducer容器内存值,一般设置为mapreduce.map.memory.mb的85%左右<span class="hljs-tag">&lt;/<span class="hljs-title">description</span>&gt;</span> 
        <span class="hljs-tag">&lt;/<span class="hljs-title">property</span>&gt;</span>  
<span class="hljs-comment">&lt;!--reduce阶段的设置 --&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-title">property</span>&gt;</span>
                <span class="hljs-tag">&lt;<span class="hljs-title">name</span>&gt;</span>mapreduce.reduce.cpu.vcores<span class="hljs-tag">&lt;/<span class="hljs-title">name</span>&gt;</span>
                <span class="hljs-tag">&lt;<span class="hljs-title">value</span>&gt;</span>2<span class="hljs-tag">&lt;/<span class="hljs-title">value</span>&gt;</span>
                <span class="hljs-tag">&lt;<span class="hljs-title">description</span>&gt;</span>每个ReduceTask容器申请的核心数;默认1<span class="hljs-tag">&lt;/<span class="hljs-title">description</span>&gt;</span> 
        <span class="hljs-tag">&lt;/<span class="hljs-title">property</span>&gt;</span> 
        <span class="hljs-tag">&lt;<span class="hljs-title">property</span>&gt;</span>
                <span class="hljs-tag">&lt;<span class="hljs-title">name</span>&gt;</span>mapreduce.reduce.memory.mb<span class="hljs-tag">&lt;/<span class="hljs-title">name</span>&gt;</span>
                <span class="hljs-tag">&lt;<span class="hljs-title">value</span>&gt;</span>8192<span class="hljs-tag">&lt;/<span class="hljs-title">value</span>&gt;</span>
                <span class="hljs-tag">&lt;<span class="hljs-title">description</span>&gt;</span>Reduce task申请的内存大小<span class="hljs-tag">&lt;/<span class="hljs-title">description</span>&gt;</span> 
        <span class="hljs-tag">&lt;/<span class="hljs-title">property</span>&gt;</span>             
        <span class="hljs-tag">&lt;<span class="hljs-title">property</span>&gt;</span>
                <span class="hljs-tag">&lt;<span class="hljs-title">name</span>&gt;</span>mapreduce.reduce.java.opts<span class="hljs-tag">&lt;/<span class="hljs-title">name</span>&gt;</span>
                <span class="hljs-tag">&lt;<span class="hljs-title">value</span>&gt;</span>-Xmx6144m<span class="hljs-tag">&lt;/<span class="hljs-title">value</span>&gt;</span>
                <span class="hljs-tag">&lt;<span class="hljs-title">description</span>&gt;</span>Reduce阶段的JVM的堆大小;同上<span class="hljs-tag">&lt;/<span class="hljs-title">description</span>&gt;</span> 
        <span class="hljs-tag">&lt;/<span class="hljs-title">property</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-title">configuration</span>&gt;</span>
</code><ul class="pre-numbering" style=""><li style="color: rgb(153, 153, 153);">1</li><li style="color: rgb(153, 153, 153);">2</li><li style="color: rgb(153, 153, 153);">3</li><li style="color: rgb(153, 153, 153);">4</li><li style="color: rgb(153, 153, 153);">5</li><li style="color: rgb(153, 153, 153);">6</li><li style="color: rgb(153, 153, 153);">7</li><li style="color: rgb(153, 153, 153);">8</li><li style="color: rgb(153, 153, 153);">9</li><li style="color: rgb(153, 153, 153);">10</li><li style="color: rgb(153, 153, 153);">11</li><li style="color: rgb(153, 153, 153);">12</li><li style="color: rgb(153, 153, 153);">13</li><li style="color: rgb(153, 153, 153);">14</li><li style="color: rgb(153, 153, 153);">15</li><li style="color: rgb(153, 153, 153);">16</li><li style="color: rgb(153, 153, 153);">17</li><li style="color: rgb(153, 153, 153);">18</li><li style="color: rgb(153, 153, 153);">19</li><li style="color: rgb(153, 153, 153);">20</li><li style="color: rgb(153, 153, 153);">21</li><li style="color: rgb(153, 153, 153);">22</li><li style="color: rgb(153, 153, 153);">23</li><li style="color: rgb(153, 153, 153);">24</li><li style="color: rgb(153, 153, 153);">25</li><li style="color: rgb(153, 153, 153);">26</li><li style="color: rgb(153, 153, 153);">27</li><li style="color: rgb(153, 153, 153);">28</li><li style="color: rgb(153, 153, 153);">29</li><li style="color: rgb(153, 153, 153);">30</li><li style="color: rgb(153, 153, 153);">31</li><li style="color: rgb(153, 153, 153);">32</li><li style="color: rgb(153, 153, 153);">33</li><li style="color: rgb(153, 153, 153);">34</li><li style="color: rgb(153, 153, 153);">35</li><li style="color: rgb(153, 153, 153);">36</li><li style="color: rgb(153, 153, 153);">37</li><li style="color: rgb(153, 153, 153);">38</li><li style="color: rgb(153, 153, 153);">39</li><li style="color: rgb(153, 153, 153);">40</li><li style="color: rgb(153, 153, 153);">41</li><li style="color: rgb(153, 153, 153);">42</li><li style="color: rgb(153, 153, 153);">43</li><li style="color: rgb(153, 153, 153);">44</li><li style="color: rgb(153, 153, 153);">45</li><li style="color: rgb(153, 153, 153);">46</li><li style="color: rgb(153, 153, 153);">47</li><li style="color: rgb(153, 153, 153);">48</li><li style="color: rgb(153, 153, 153);">49</li><li style="color: rgb(153, 153, 153);">50</li><li style="color: rgb(153, 153, 153);">51</li></ul></pre>            </div>
						<link href="https://csdnimg.cn/release/phoenix/mdeditor/markdown_views-7f770a53f2.css" rel="stylesheet">
                </div>
									<div class="hide-article-box text-center">
						<a class="btn" id="btn-readmore" data-track-view="{&quot;mod&quot;:&quot;popu_376&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/z3935212/article/details/78637157,&quot;}" data-track-click="{&quot;mod&quot;:&quot;popu_376&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/z3935212/article/details/78637157,&quot;}">阅读更多</a>
					</div>
					<script>
						(function(){
							function setArticleH(btnReadmore,posi){
								var winH = $(window).height();
								var articleBox = $("div.article_content");
								var artH = articleBox.height();
								if(artH > winH*posi){
									articleBox.css({
										'height':winH*posi+'px',
										'overflow':'hidden'
									})
									btnReadmore.click(function(){
										articleBox.removeAttr("style");
										$(this).parent().remove();
									})
								}else{
									btnReadmore.parent().remove();
								}
							}
							var btnReadmore = $("#btn-readmore");
							if(btnReadmore.length>0){
								if(currentUserName){
									setArticleH(btnReadmore,3);
								}else{
									setArticleH(btnReadmore,1.2);
								}
							}
						})()
					</script>
					</article>
	

上一篇: 1

下一篇: 1