使用Perl脚本作为mapper& Hadoop流中的reducer,我们如何管理perl模块依赖。
我想在我的perl mapper&中使用“Net :: RabbitMQ”减速机脚本。
在perl / hadoop流中是否有任何标准方式来处理类似于DistributedCache的依赖关系(对于Hadoop java MR)
答案 0 :(得分:0)
有两种方法可以处理依赖项,包括指定自定义库路径或使用PAR::Packer创建Perl应用程序的压缩二进制文件。在Hadoop::Streaming POD的示例部分中有一些如何完成这些任务的示例,作者包括对该过程的良好描述,以及处理依赖关系的不同方法的一些注意事项。请注意,Hadoop :: Streaming文档中提供的有关处理Perl依赖关系的建议并非特定于该模块。
以下是Hadoop :: Streaming文档的摘录(其中有详细示例,如前所述):
必须在每个hadoop集群计算机上安装所有perl模块。这被证明是大型装置的挑战。我有一个local :: lib控制的perl目录,我将其推送到我所有的hadoop盒子(/ apps / perl5)上的一个固定位置,该盒子保持最新并包含在我的系统映像中。以前我用PAR :: Packer(pp)生成独立的perl文件,除了带有-file选项的jar的大小外,它工作得很好。独立文件可以放入hdfs,然后通过-cacheFile选项包含在jar中。