我们正在尝试将我们的作业从hadoop1.0.3迁移到hadoop2(确切地说是hadoop2.8.1,单节点集群)。我们正在使用Yarn来管理我们的Map减少工作。我们注意到的一个区别是,计划执行的每个map或reduce任务都有两个linux进程。例如,对于任何reduce任务,我们都会发现以下两个正在执行的进程:
hadoop 124692 124690 0 12:33?00:00:00/bin/bash-c/opt/java/bin/java-djava.net.preferipv4stack=true-dhadoop.metrics.log.level=warn-xmx5800m-xx:-useperfdata-djava.io.tmpdir=/tmp/hadoop-hadoop/nm local dir/usercache/hadoop/appcache/application\u 1510651062679\u 0001/container\u 1510651062679\u 0001\u 000278/tmp-dlog4j.configuration=container-log4j.properties-dyarn.app.container.log.dir=/opt/hadoop/hadoop-2.8.1/logs/userlogs/application\u 1510651062679\u 0001/container\u 1510651062679\u 0001\u 01\u 000278-dyarn.app.container.log.filesize=0-dhadoop.root.logger=info,cla-dhadoop.root.logfile=syslog-dyarn.app.mapreduce.shuffle.logger=info,shufflecla-dyarn.app.mapreduce.shuffle.logfile=syslog.shuffle-dyarn.app.mapreduce.shuffle.log.filesize=0-dyarn.app.mapreduce.shuffle.log.backups=0 org.apache.hadoop.mapred.yarnchild 192.168.101.29 33929次尝试\u 1510651062679 \u 0001 \u r\u 000135 \u 0 2781> /opt/hadoop/hadoop-2.8.1/logs/userlogs/application\u 1510651062679\u 0001/container\u 1510651062679\u 0001\u 01\u 000278/stdout 2>/opt/hadoop/hadoop-2.8.1/logs/userlogs/application\u 1510651062679\u 0001/container\u 1510651062679\u 0001\u 01\u 000278/stderr
hadoop 124696 124692 74 12:33?00:10:30/opt/java/bin/java-djava.net.preferipv4stack=true-dhadoop.metrics.log.level=warn-xmx5800m-xx:-useperfdata-djava.io.tmpdir=/tmp/hadoop-hadoop/nm local dir/usercache/hadoop/appcache/application\u 1510651062679\u 0001/container\u 1510651062679\u 0001\u 01\u 000278/tmp-dlog4j.configuration=container-log4j.properties-dyarn.app.container.log.dir=/opt/hadoop/hadoop-2.8.1/logs/userlogs/application\u 1510651062679\u 0001/container\u 1510651062679\u 0001\u 01\u 000278-dyarn.app.container.log.filesize=0-dhadoop.root.logger=info,cla-dhadoop.root.logfile=syslog-dyarn.app.mapreduce.shuffle.logger=info,shufflecla-dyarn.app.mapreduce.shuffle.logfile=syslog.shuffle-dyarn.app.mapreduce.shuffle.log.filesize=0-dyarn.app.mapreduce.shuffle.log.backups=0
第二个进程是第一个进程的子进程。总而言之,我们看到在作业执行期间的进程总数比hadoop1.0.3高得多,hadoop1.0.3中每个map或reduce任务只执行一个进程。
a) 这可能是作业执行速度比hadoop1.0.3慢的原因吗?
b) 这两个过程都是预期的工作方式吗?
事先谢谢你的建议。
1条答案
按热度按时间6qfn3psc1#
仔细检查你会发现
/bin/bash是容器进程,它在封闭的环境中生成java进程(cpu、ram限制在一个容器中)
您可以将其视为一个虚拟机,您可以在其中运行自己的进程。虚拟机及其内部运行的进程都将具有父子关系。
请详细阅读linux容器以了解更多信息。