如何让猪与lzo文件一起使用?

时间:2011-09-01 23:07:08

标签: hadoop apache-pig lzo

所以,我已经在网上看过几个这方面的教程,但每个人似乎都说要做些不同的事情。此外,它们中的每一个似乎都没有指定您是在尝试让事情在远程集群上工作,还是在本地与远程集群交互等等......

那就是说,我的目标只是让我的本地计算机(mac)使用lzo压缩文件进行处理,这些文件存在于已经设置为与lzo文件一起使用的Hadoop集群上。我已经在本地安装了Hadoop,可以使用 hadoop fs -[command]从集群中获取文件。

当我运行脚本或刚刚通过grunt运行时,我也已经在本地安装了pig并与hadoop集群通信。我可以加载和玩非lzo文件就好了。我的问题只是找出一种加载lzo文件的方法。也许我可以通过群集的ElephantBird实例来处理它们?我不知道,只在网上找到最少的信息。

所以,任何类型的简短教程或答案都会很棒,希望能帮助更多的人而不仅仅是我。

1 个答案:

答案 0 :(得分:4)

我最近开始工作并为我的同事写了一个wiki。这是一个详细说明如何让PIG与lzos一起工作的摘录。希望这有助于某人!

注意:这是用Mac编写的。其他操作系统的步骤几乎完全相同,这绝对可以为您提供在Windows或Linux上配置所需的知识,但您需要进行一些推断(显然,将以Mac为中心的文件夹更改为您的操作系统)重新使用等...)。

将PIG挂钩以便能够使用LZO

到目前为止,这对我来说是最烦人和最耗时的部分 - 不是因为它很难,而是因为在线有50种不同的教程,所有这些都没有帮助。无论如何,我做的工作是:

  1. 来自https://github.com/kevinweil/hadoop-lzo的github的克隆hadoop-lzo。

  2. 编译它以获得hadoop-lzo * .jar和本机* .o库。你需要编译 这是在64位机器上。

  3. 将本机库复制到$ HADOOP_HOME / lib / native / Mac_OS_X-x86_64-64 /.

  4. 将java jar复制到$ HADOOP_HOME / lib和$ PIG_HOME / lib

  5. 然后配置hadoop和pig以获得属性java.library.path 指向lzo本地库。您可以在$ HADOOP_HOME / conf / mapred-site.xml中执行以下操作:

    <property>
        <name>mapred.child.env</name>
        <value>JAVA_LIBRARY_PATH=$HADOOP_HOME/lib/native/Mac_OS_X-x86_64-64/</value>
    </property>
    
  6. 现在再次运行pig尝试grunt shell,并确保一切仍然有效。如果没有,你可能搞砸了mapred-site.xml中的东西,你应该仔细检查一下。

  7. 大!我们快到了。你现在需要做的就是安装大象鸟。你可以从https://github.com/kevinweil/elephant-bird(克隆它)获得它。

  8. 现在,为了让象鸟工作,你需要相当多的预先要求。这些列在上面提到的页面上,可能会更改,所以我不会在这里指定它们。我要提到的是,这些版本的非常非常重要。如果您的版本不正确并尝试运行ant,则会出现错误。因此,不要尝试从brew或macports获取预先请求,因为您可能会获得更新版本。相反,只需下载tarball并为每个tarball构建。

  9. 命令:在elephant-bird文件夹中创建一个jar的蚂蚁。

  10. 为了简单起见,移动所有相关的罐子(hadoop-lzo-x.x.x.jar和elephant-bird-x.x.x.jar),您需要经常在可以轻松找到它们的地方注册。 / usr / local / lib / hadoop / ...效果很好。

  11. 尝试一下!在grunt shell中加载普通文件和lzos。注册上面提到的相关jar,尝试加载文件,将输出限制为可管理的数字,然后转储它。无论您使用的是普通文本文件还是lzo,这都应该可以正常工作。