使用 Hadoop 配置猪关系
Posted
技术标签:
【中文标题】使用 Hadoop 配置猪关系【英文标题】:Configuring pig relation with Hadoop 【发布时间】:2014-05-23 14:39:34 【问题描述】:我无法理解 Hadoop 和 Pig 之间的关系。 我了解 Pig 的目的是将 MapReduce 模式隐藏在脚本语言 Pig Latin 之后。
我不明白 Hadoop 和 Pig 是如何关联的。到目前为止,唯一的安装过程似乎假设 pig 与主 hadoop 节点在同一台机器上运行。 实际上,它使用了 hadoop 配置文件。
这是因为 pig 只将脚本翻译成 mapreduce 代码并将它们发送到 hadoop 吗?
如果是这样,我该如何配置 Pig 以使其将脚本发送到远程服务器?
如果不是,是否意味着我们总是需要让 hadoop 在 pig 中运行?
【问题讨论】:
【参考方案1】:Pig 可以在两种模式下运行:
本地模式。在此模式下根本不使用 Hadoop 集群。所有进程都在单个 JVM 中运行,并且从本地文件系统中读取文件。要在本地模式下运行 Pig,请使用以下命令:
pig -x local
MapReduce 模式。 在这种模式下,Pig 将脚本转换为 MapReduce 作业并在 Hadoop 集群上运行它们。这是默认模式。
集群可以是本地的或远程的。 Pig 使用 HADOOP_MAPRED_HOME 环境变量在本地机器上查找 Hadoop 安装(请参阅Installing Pig)。
如果你想连接到远程集群,你应该在 pig.properties 文件中指定集群参数。 MRv1 示例:
fs.default.name=hdfs://namenode_address:8020/
mapred.job.tracker=jobtracker_address:8021
你也可以在命令行指定远程集群地址:
pig -fs namenode_address:8020 -jt jobtracker_address:8021
因此,您可以将 Pig 安装到任何机器并连接到远程集群。 Pig 包含 Hadoop 客户端,因此您无需安装 Hadoop 即可使用 Pig。
【讨论】:
最后一个问题:当您使用 MapReduce 模式时,ls
是否会向您显示集群的文件(就像您使用 ssh 时一样)?
是的。在我的 Pig (0.11.0-cdh4.6.0) 版本中,ls
显示完整路径,包括协议(hdfs://
用于集群文件,file://
用于本地文件)。
我明白了。感谢您的回答!以上是关于使用 Hadoop 配置猪关系的主要内容,如果未能解决你的问题,请参考以下文章
猪错误:未处理的内部错误。找到了接口 org.apache.hadoop.mapreduce.TaskAttemptContext,但是需要类