容器的运行超出了物理内存hadoop流媒体python mr

vohkndzv  于 2021-06-04  发布在  Hadoop
关注(0)|答案(2)|浏览(669)

我正在运行一个python脚本,它需要一个文件(genome.fa)作为依赖项(引用)来执行。运行此命令时:

hadoop jar /usr/local/hadoop/share/hadoop/tools/lib/had                                                                                                             oop-streaming-2.5.1.jar  -file ./methratio.py -file '../Test_BSMAP/genome.fa'  -                                                                                                             mapper './methratio.py -r -g ' -input /TextLab/sravisha_test/SamFiles/test_sam                                                                                                               -output ./outfile

我得到这个错误:

15/01/30 10:48:38 INFO mapreduce.Job:  map 0% reduce 0%
    15/01/30 10:52:01 INFO mapreduce.Job: Task Idattempt_1422600586708_0001_m_000 009_0, Status : FAILED 
Container [pid=22533,containerID=container_1422600586708_0001_01_000017] is running beyond physical memory limits. Current usage: 1.1 GB of 1 GB physical memory used; 2.4 GB of 2.1 GB virtual memory used. Killing container.

我正在使用cloudera manager(免费版)。以下是我的配置:

yarn.app.mapreduce.am.resource.cpu-vcores = 1
ApplicationMaster Java Maximum Heap Size = 825955249 B

mapreduce.map.memory.mb = 1GB
mapreduce.reduce.memory.mb = 1 GB
mapreduce.map.java.opts = -Djava.net.preferIPv4Stack=true
mapreduce.map.java.opts.max.heap = 825955249 B

yarn.app.mapreduce.am.resource.mb = 1GB
 Java Heap Size of JobHistory Server in Bytes = 397 MB

有人能告诉我为什么我会犯这个错误吗??

z2acfund

z2acfund1#

我认为python脚本在读取大型输入文件(线索:genome.fa)的过程中消耗了大量内存。
这是我的理由(参考:http://courses.coreservlets.com/course-materials/pdf/hadoop/04-mapred-6-jobexecutiononyarn.pdf,容器运行超出内存限制,http://hortonworks.com/blog/how-to-plan-and-configure-yarn-in-hdp-2-0/)
容器的内存使用率=jvm堆大小+jvm perm gen+本机库+派生进程使用的内存
最后一个变量“派生进程使用的内存”(python代码)可能是罪魁祸首。
尝试增加这两个参数的mem大小:mapreduce.map.java.opts
和mapreduce.reduce.java.opts。

z18hc3ub

z18hc3ub2#

尝试增加执行时生成的Map。。。你可以通过减少分割大小来增加Map器的数量。。。mapred.max.split.size。。。它将有间接费用,但会减轻问题。。。。

相关问题