当前位置: 首页>>hadoop 2.0之YARN>> 阅读正文

Hadoop YARN配置参数剖析(3)—MapReduce相关参数

Category: hadoop 2.0之YARN View: 106,869 Author: Dong
,

  • 评论 (8)
  • 引用通告 (6)
发表评论 发起引用

  • 1楼zhang 回复

    Post: 2013-12-10 09:52

    yarn-env.sh 中默认 JAVA_HEAP_MAX=-Xmx1000m

    然而mapred-site.xml 中ApplicationMaster中默认内存为 1536 ;还有很多其他内存;这些内存与
    yarn-env.sh有什么必然联系吗????????

    [回复]

    Dong 回复:

    yarn中有两类东西,都会运行在jvm heap(特指java语言编写的程序,其他语言编写的程序不存在jvm之说,在此不论)中,一类是服务,比如resourcemanager和nodemanager,他们的jvm heap大小在yarn-env.sh中指定,通过由管理员配置,与普通用户的应用程序无关,一类是用户的应用程序,比如appmaster和task,他们的jvm heap大小通常可以由用户单独决定,当然,也有默认值,java应用程序尽管由nodemanager启动,但是不会占用nodemanager的内存,而是有自己的heap,因为它们运行在各自独立的jvm中,互不干扰。

    [回复]

  • 2楼yunfei 回复

    Post: 2013-12-11 06:52

    您好,我是hadoop的初学者,刚学没几天,昨天搭建了一套hadoop2.2的集群,是用来做视频转码的,针对很大的高清视频文件,对计算资源的要求很高,所以打算通过命令行的方式,对这种类型的map任务多给一些资源。看到您上面说可以在作业提交的时候来修改这些参数。
    我是通过streaming的方式调用shell脚本来做map任务。命令行如下:
    ./bin/hadoop jar /data/hduser/hadoop-2.2.0/share/hadoop/tools/lib/hadoop-streaming-2.2.0.jar -file map.sh -mapper map.sh -input /tmp/3.txt -output /tmp/py6 -D mapreduce.map.memory.mb
    =512 -Dmapreduce.map.cpu.vcores=4
    但是这种方式是行不通的,我查阅了一些资料也没什么头绪,所以想请教一下您,非常感谢!
    主要是想灵活配置资源,对计算资源需求大的,就多给一些。通过命令行的方式。

    [回复]

    Dong 回复:

    行不通啥意思,你配置的什么调度器,需要开启CPU调度功能,另外,-D参数要放在所有参数前面,即
    ./bin/hadoop jar /data/hduser/hadoop-2.2.0/share/hadoop/tools/lib/hadoop-streaming-2.2.0.jar
    -D mapreduce.map.memory.mb
    =2048 -Dmapreduce.map.cpu.vcores=4 -file map.sh -mapper map.sh -input /tmp/3.txt -output /tmp/py6 ,另外,内存默认是1024,你怎么调的比这个还小。

    [回复]

  • 3楼一步一脚印 回复

    Post: 2013-12-17 05:38

    你好,请教一个问题,若设置了如下2个参数
    mapreduce.map.memory.mb:2048
    mapreduce.map.java.opts:-Xmx1024
    我的理解是第一个参数指定的是每个map需要向rm申请的资源,第二个参数是child jvm启动时的参数,但是对于map任务来说到底哪一个生效呢,谢谢!

    [回复]

    Dong 回复:

    你的理解是正确的,但是,map任务里不一定只跑java,比如hadoop streaming程序,java用的内存可能会少于其他语言占用的内存,也就是,用户真正的程序不一定运行在jvm中。 另外,在hadoop 2.0中,每个task不一定是java写的,启动在jvm中,可以是任意语言。

    [回复]

    一步一脚印 回复:

    谢谢恢复。我现在的集群就是运行在Hadoop2.0上,MapReduce使用的是YARN框架,暂时不考虑非java应用的情况,我的疑惑就是这2个参数有点矛盾,一个允许nodemanager给我分配2g内存,但一个启动参数只允许内存最多使用1g,所以很困惑。

    [回复]

  • 4楼麦兜 回复

    Post: 2014-04-02 12:20

    请问,hadoop2.2 单机的情况下,运行wordcount.jar,能正确出来结果.但是19888查看jobhistory,没有job记录。这是为什么呢?

    [回复]

    Dong 回复:

    jobhistory没有配置好

    [回复]

  • 5楼jianhai 回复

    Post: 2014-05-14 10:58

    老师,Yarn中数据节点的分配指定集群中那个机器是有HDfs默认的,自己能设定吗?

    [回复]

  • 6楼欧阳 回复

    Post: 2014-06-13 09:22

    董老师,你好。
    我最近自己在本机搭建了一个hadoop2.2的系统,分3个节点,内存紧张所以每台机器的内存仅1G。
    今天在上面跑了一个数据量仅10M的MR程序,但是总是出现
    yarn is running beyond physical memory limits 的问题:

    Current usage: 64.9 MB of 400 MB physical memory used; 1.2 GB of 840.0 MB virtual memory used. Killing container.
    网上有帖子说该错误是YARN的虚拟内存计算方式导致,上例中,程序申请的内存为400M,YARN根据此值乘以一个比例(默认为2.1)得出申请的虚拟内存的值(840M),当YARN计算的用户程序所需虚拟内存值大于计算出来的值时(1.2G>840M),就会报出以上错误。调节比例值可以解决该问题。具体参数为:yarn-site.xml 中的yarn.nodemanager.vmem-pmem-ratio
    但是我不清楚这1.2G的内存需求量是怎么算出来的,通过调整什么参数可以控制这个值?请老师解惑。

    [回复]

    charlie 回复:

    调整如下2个参数

    mapreduce.map.memory.mb
    4096
    http://dongxicheng.org/mapreduce-nextgen/hadoop-yarn-configurations-mapreduce/

    mapreduce.reduce.memory.mb
    4096
    http://dongxicheng.org/mapreduce-nextgen/hadoop-yarn-configurations-mapreduce/

    [回复]

  • 7楼krazyhe 回复

    Post: 2014-11-12 08:41

    你好,我用的hadoop-2.5.1的版本,公平调度器,设置优先级怎么没有生效
    set mapreduce.job.priority=HIGH;求解答?

    [回复]

  • 8楼ilovexiao77 回复

    Post: 2015-02-01 06:03

    1. 请问一下在 Yarn 中如何设置并行的 task 数量?

    2. 我想对MRAppMaster进行单步调试,是否使用 mapreduce.child.java.opts 参数就可以了?

    [回复]

发表评论