PIG 自动与默认 HDFS 连接,如何?

Posted

技术标签:

【中文标题】PIG 自动与默认 HDFS 连接,如何?【英文标题】:PIG automatically connected with default HDFS, how? 【发布时间】:2012-11-18 08:38:57 【问题描述】:

我刚刚开始为我未来的一个项目学习 Hadoop 和 PIG(从前两天开始!)。

对于实验,我安装了 Hadoop(默认 localhost:9000 上的 HDFS)作为伪分布式模式和 PIG(map-reduce 模式)。

当我通过输入 ./bin/pig 命令初始化 PIG 时,它启动了 GRUNT 命令行,我收到消息表明 pig 与 HDFS (localhost:9000) 连接,后来我可以通过 pig 成功访问 HDFS。

我期待为 PIG 执行一些手动配置以访问 HDFS(根据各种互联网文章)。

我的问题是,PIG 从哪里识别出默认的 HDFS 配置 (localhost:9000)?我检查了 pig.properties,但我没有在那里找到任何东西。我需要此信息,因为我将来可能会更改默认 HDFS 配置。

顺便说一句,我在我的 OS PATH 变量中定义了 HADOOP_HOME 和 PIG_HOME。

【问题讨论】:

它很容易找到...你为什么不打开 pig(shell 文件) 在哪里可以看到它是如何设置 hadoop 变量的路径的。 【参考方案1】:

在安装 Pig(我假设是 v0.10.0)时,您必须说明它将如何连接到 HDFS。 我不知道您是如何做到的,但通常这是通过将 hadoop conf dir 路径添加到 PIG_CLASSPATH 环境变量来完成的。也可以设置HADOOP_CONF_DIR

如果您正在启动 grunt shell,Pig 将找到 Hadoop 配置 XML 的目录,并获取 fs.default.name (core-site.xml) 和 mapred.job.tracker (mapred-site.xml) 的值,即: Namenode 和 JobTracker 的位置。

作为参考,您可以查看 Pig shell 脚本以了解 env.变量被收集和评估。

【讨论】:

谢谢,是的,我使用 v0.10.0 ....我的 PIG 安装是下载 .tar 并将其解压缩(在我的 Mac 上) - 解压缩后我直接执行 /bin/pig 以获取 grunt 提示我收到消息“猪已成功连接到 HDFS”....我从未执行过任何用于 PIG 安装的 Java 命令.... 我到处寻找,而不是实际的 PIG (bin/pig) 脚本....我得到了有关 PIG 在初始化时如何使用 HADOOP_HOME 等的信息(当我执行 /bin/pig 时) - 谢谢 所以重点是,pig 没有自己的 URL 配置,它使用 hadoop/conf/core-site.xml 中定义的配置。【参考方案2】:

PIG 可以通过 3 种方式连接到底层 HDFS

1- Pig 使用 HADOOP_HOME 来查找要运行的 HADOOP 客户端。 你的 HADOOP_HOME 应该已经在你的 bash_profile 中设置好了 导出 HADOOP_HOME=~/myHadoop/hadoop-2.5.2

2- 否则可能您的 HADOOP_CONF_DIR 已经设置,其中包含用于 hadoop 配置的 xml 文件 导出 HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop/

3-如果未设置这些,您还可以连接到底层 hdfs 通过更改 PIG_HOME/conf 目录下的 pig.properties

【讨论】:

以上是关于PIG 自动与默认 HDFS 连接,如何?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 PIG 将 Avro 格式存储在 HDFS 中?

如何使用 PIG 将数据从本地系统加载到 hdfs

如何使用 Pig 将数据存储在 HDFS 上的多个分区文件中

用于压缩和解压缩 bzip2 中的 hdfs 数据的 Pig 脚本

如何读取pig运行结果part

如何在 PIG 中将变量与一些硬编码值连接起来