如何在Hadoop Streaming中管理依赖?

0 投票
2 回答
1113 浏览
提问于 2025-04-15 22:52

我有个关于Hadoop Streaming的小问题。如果我在用Python进行流处理,并且我的映射器(mappers)和归约器(reducers)需要一些默认没有安装的Python包,我是否需要在所有Hadoop机器上都安装这些包,还是说有某种方式可以把它们发送到远程机器上?

2 个回答

1

如果你使用Dumbo这个工具,你可以通过使用-libegg来分发egg文件,并自动配置Python的运行环境:

https://github.com/klbostee/dumbo/wiki/Short-tutorial#wiki-eggs_and_jars https://github.com/klbostee/dumbo/wiki/Configuration-files

2

如果这些东西没有安装在你的任务盒子里,你可以用 -file 来发送它们。如果你需要一个包或者其他的文件夹结构,你可以发送一个压缩文件(zip文件),系统会帮你解压。下面是一个Hadoop 0.17的调用示例:

$HADOOP_HOME/bin/hadoop jar $HADOOP_HOME/contrib/streaming/hadoop-0.17.0-streaming.jar -mapper mapper.py -reducer reducer.py -input input/foo -output output -file /tmp/foo.py -file /tmp/lib.zip

不过,注意这里有个问题:

https://issues.apache.org/jira/browse/MAPREDUCE-596

撰写回答