Eli*_*Eli 6 hadoop apache-pig lzo
所以,我在网上看过几个这方面的教程,但每个人似乎都说要做一些与众不同的事情.此外,它们中的每一个似乎都没有指定您是在尝试让事情在远程集群上工作,还是在本地与远程集群交互等等......
也就是说,我的目标只是让我的本地计算机(一台Mac)使用lzo压缩文件进行处理,这些文件存在于已经设置为使用lzo文件的Hadoop集群上.我已经在本地安装了Hadoop,可以从群集中获取文件 hadoop fs -[command].
当我运行脚本或者只是通过grunt运行时,我也已经在本地安装了pig并与hadoop集群通信.我可以加载和玩非lzo文件就好了.我的问题只是找出一种加载lzo文件的方法.也许我可以通过集群的ElephantBird实例来处理它们?我不知道,只在网上找到最少的信息.
所以,任何类型的简短教程或答案都会很棒,希望能帮助更多的人而不仅仅是我.
我最近开始使用它,并为我的同事编写了一个 wiki。以下摘录详细介绍了如何让 PIG 与 lzos 配合使用。希望这对某人有帮助!
注意:这是针对 Mac 编写的。对于其他操作系统,这些步骤几乎是相同的,这绝对应该为您提供在 Windows 或 Linux 上配置所需的信息,但您需要进行一些推断(显然,将以 Mac 为中心的文件夹更改为您想要的任何操作系统)重新使用等...)。
这对我来说是迄今为止最烦人和最耗时的部分——不是因为它很困难,而是因为网上有 50 个不同的教程,但没有一个是有帮助的。无论如何,我为使其正常工作所做的是:
从 github 克隆 hadoop-lzo:https: //github.com/kevinweil/hadoop-lzo。
编译它以获得 hadoop-lzo*.jar 和本机 *.o 库。您需要在 64 位机器上编译它。
将本机库复制到 $HADOOP_HOME/lib/native/Mac_OS_X-x86_64-64/。
将 java jar 复制到 $HADOOP_HOME/lib 和 $PIG_HOME/lib
然后配置 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>
Run Code Online (Sandbox Code Playgroud)现在再次运行来尝试 grunt shell pig,并确保一切仍然有效。如果没有,您可能搞乱了 mapred-site.xml 中的某些内容,您应该仔细检查它。
伟大的!我们快到了。您现在需要做的就是安装大象鸟。您可以从https://github.com/kevinweil/elephant-bird获取(克隆它)。
现在,为了让象鸟工作,你需要很多先决条件。这些都列在上面提到的页面上,并且可能会发生变化,所以我不会在这里指定它们。我要提到的是,这些版本非常重要。如果您获得不正确的版本并尝试运行 ant,您将收到错误消息。因此,不要尝试从brew 或macports 获取先决条件,因为您可能会获得更新的版本。相反,只需下载 tarball 并为每个 tarball 进行构建即可。
命令:ant 在elephant-bird文件夹中创建一个jar。
为了简单起见,将您需要经常注册的所有相关 jar(hadoop-lzo-xxxjar 和elephant-bird-xxxjar)移动到您可以轻松找到它们的地方。/usr/local/lib/hadoop/... 效果很好。
尝试一下!尝试在 grunt shell 中加载普通文件和 lzos。注册上面提到的相关 jar,尝试加载文件,将输出限制在可管理的数量,然后转储它。无论您使用的是普通文本文件还是 lzo,这都应该可以正常工作。
| 归档时间: |
|
| 查看次数: |
5021 次 |
| 最近记录: |