为什么Hadoop流媒体在执行Hadoop作业时不导入Python包?
请参阅以下Hadoop(3.2.1)错误打印输出,以及我到目前为止的调查总结: 错误:java.lang.RuntimeException:PipeMapRed.waitOutputThreads(): 子进程失败,代码为1 org.apache.hadoop.streaming.PipeMapRed.waitOutputThreads(PipeMapRed.java:326) 在 org.apache.hadoop.streaming.PipeMapRed.mapRedFinished(PipeMapRed.java:539) 位于org.apache.hadoop.streaming.PipeMapper.close(PipeMapper.java:130) 位于org.apache.hadoop.mapred.MapRunner.run(MapRunner.java:61) org.apache.hadoop.streaming.PipeMapRunner.run(PipeMapRunner.java:34) 位于org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:465) 位于org.apache.hadoop.mapred.MapTask.run(MapTask.java:349) org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:174)位于 java.security.AccessController.doPrivileged(本机方法)位于 javax.security.auth.Subject.doAs(Subject.java:422)位于 org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1730) 位于org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:168) 通过浏览与以下Hadoop错误打印输出相关的几乎所有可能的线程,这似乎是由于各种原因引发的:为什么Hadoop流媒体在执行Hadoop作业时不导入Python包?,hadoop,mapreduce,package,hadoop2,hadoop-streaming,Hadoop,Mapreduce,Package,Hadoop2,Hadoop Streaming,请参阅以下Hadoop(3.2.1)错误打印输出,以及我到目前为止的调查总结: 错误:java.lang.RuntimeException:PipeMapRed.waitOutputThreads(): 子进程失败,代码为1 org.apache.hadoop.streaming.PipeMapRed.waitOutputThreads(PipeMapRed.java:326) 在 org.apache.hadoop.streaming.PipeMapRed.mapRedFinished(Pip
- 最常见的是Python文件不可执行
- 或者代码中的某个地方存在Python错误
cat input_text.csv | python3 mapper.py
一旦我在代码开头注释掉“import pandas”(或除os、sys和re之外的任何其他库),Hadoop作业就会正常运行有人知道为什么Hadoop无法获取这些Python库吗?正如我所提到的,只要我不导入这些包,Hadoop就可以正常工作-有什么Python配置需要修复吗?非常感谢您的建议,如果需要更多信息,请告诉我。我没有费心在这篇文章中包括mapper,因为我知道它在不导入包的情况下工作得很好,但是每当导入pandas、nltk、spacy等包时都会失败(不管它是一个还是所有这些包)
欲了解更多信息,请访问以下网站:
Python版本:Python 3.6.8
Hadoop:3.2.1-单机版
Hadoop流式处理命令(仅地图):
配置文件(本地计算机):
mapred site.xml:
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>yarn.app.mapreduce.am.env</name>
<value>HADOOP_MAPRED_HOME=/usr/local/hadoop</value>
</property>
<property>
<name>mapreduce.map.env</name>
<value>HADOOP_MAPRED_HOME=/usr/local/hadoop</value>
</property>
<property>
<name>mapreduce.reduce.env</name>
<value>HADOOP_MAPRED_HOME=/usr/local/hadoop</value>
</property>
</configuration>
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>/app/hadoop/tmp</value>
<description>A base for other temporary directories.</description>
</property>
<property>
<name>fs.default.name</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/local/hadoop_store/hdfs/namenode</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/local/hadoop_store/hdfs/datanode</value>
</property>
</configuration>
mapreduce.framework.name
纱线
warn.app.mapreduce.am.env
HADOOP\u MAPRED\u HOME=/usr/local/HADOOP
mapreduce.map.env
HADOOP\u MAPRED\u HOME=/usr/local/HADOOP
mapreduce.reduce.env
HADOOP\u MAPRED\u HOME=/usr/local/HADOOP
core site.xml:
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>yarn.app.mapreduce.am.env</name>
<value>HADOOP_MAPRED_HOME=/usr/local/hadoop</value>
</property>
<property>
<name>mapreduce.map.env</name>
<value>HADOOP_MAPRED_HOME=/usr/local/hadoop</value>
</property>
<property>
<name>mapreduce.reduce.env</name>
<value>HADOOP_MAPRED_HOME=/usr/local/hadoop</value>
</property>
</configuration>
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>/app/hadoop/tmp</value>
<description>A base for other temporary directories.</description>
</property>
<property>
<name>fs.default.name</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/local/hadoop_store/hdfs/namenode</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/local/hadoop_store/hdfs/datanode</value>
</property>
</configuration>
hadoop.tmp.dir
/app/hadoop/tmp
其他临时目录的基础。
fs.default.name
hdfs://localhost:9000
纱线站点.xml:
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>yarn.app.mapreduce.am.env</name>
<value>HADOOP_MAPRED_HOME=/usr/local/hadoop</value>
</property>
<property>
<name>mapreduce.map.env</name>
<value>HADOOP_MAPRED_HOME=/usr/local/hadoop</value>
</property>
<property>
<name>mapreduce.reduce.env</name>
<value>HADOOP_MAPRED_HOME=/usr/local/hadoop</value>
</property>
</configuration>
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>/app/hadoop/tmp</value>
<description>A base for other temporary directories.</description>
</property>
<property>
<name>fs.default.name</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/local/hadoop_store/hdfs/namenode</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/local/hadoop_store/hdfs/datanode</value>
</property>
</configuration>
纱线.节点管理器.辅助服务
mapreduce_shuffle
您是否在所有工作节点上安装了这些python包?因为'os',sys',re'
是默认的python包。但是像熊猫、nltk、spacy这样的软件包就不是了。谢谢你的反馈。出于测试目的,我只在单个节点上运行Hadoop(希望最终会转到集群)。我知道在集群中也需要安装库,但不幸的是,在这种情况下,这不是问题所在。检查一下,您是否在所有工作节点上安装了这些python包?因为'os',sys',re'
是默认的python包。但是像熊猫、nltk、spacy这样的软件包就不是了。谢谢你的反馈。出于测试目的,我只在单个节点上运行Hadoop(希望最终会转到集群)。我知道在集群中也需要安装库,但不幸的是,在这种情况下这不是问题所在