0

在 Hadoop 流中使用 Perl 脚本作为映射器和缩减器时,我们如何管理 perl 模块依赖项。

我想在我的 perl 映射器和减速器脚本中使用“Net::RabbitMQ”。

perl/hadoop 流中是否有任何标准方法来处理类似于 DistributedCache 的依赖项(对于 Hadoop java MR)

4

1 回答 1

0

有几种方法可以处理依赖关系,包括指定自定义库路径或使用PAR::Packer创建 Perl 应用程序的打包二进制文件。在Hadoop::Streaming POD的示例部分中有一些如何完成这些任务的示例,作者对过程进行了很好的描述,以及处理依赖关系的不同方式的一些注意事项。请注意,Hadoop::Streaming 文档中提供的有关处理 Perl 依赖项的建议并不特定于该模块。

以下是 Hadoop::Streaming 文档的摘录(如前所述,其中有详细示例):

所有 perl 模块都必须安装在每个 hadoop 集群机器上。事实证明,这对于大型安装来说是一个挑战。我有一个 local::lib 控制的 perl 目录,我将它推送到我所有 hadoop 盒子 (/apps/perl5) 上的固定位置,该目录保持最新并包含在我的系统映像中。以前我使用 PAR::Packer (pp) 生成独立的 perl 文件,除了带有 -file 选项的 jar 的大小之外,它工作得很好。独立文件可以放入 hdfs,然后通过 -cacheFile 选项包含在 jar 中。

于 2013-02-26T12:00:37.407 回答