Pig、Oozie 和 HBase - java.io.IOException: No FileSystem for scheme: hbase

Posted

技术标签:

【中文标题】Pig、Oozie 和 HBase - java.io.IOException: No FileSystem for scheme: hbase【英文标题】:Pig, Oozie, and HBase - java.io.IOException: No FileSystem for scheme: hbase 【发布时间】:2014-02-04 19:32:04 【问题描述】:

我的 Pig 脚本本身运行良好,直到我将其放入 Oozie 工作流程中,我收到以下错误:

ERROR 2043: Unexpected error during execution.

org.apache.pig.backend.executionengine.ExecException: ERROR 2043: Unexpected error during execution.
...
Caused by: java.io.IOException: No FileSystem for scheme: hbase

我成功注册了 HBase 和 Zookeeper jar,但收到了同样的错误。

我还尝试通过在 Pig 脚本中添加这些行的变体来设置 Zookeeper Quorum:

SET hbase.zookeeper.quorum 'vm-myhost-001,vm-myhost-002,vm-myhost-003'

互联网上的一些搜索指示我将其添加到我的 workflow.xml 的开头:

SET mapreduce.fileoutputcommitter.marksuccessfuljobs false

这解决了问题。我什至能够删除 HBase 和 Zookeeper jar 以及 Zookeeper quorum 的注册。

现在经过仔细检查后,我注意到我的工作确实完成了他们的工作:他们按预期将结果存储在 HBase 中。但是,Oozie 声称发生了故障,但实际上并没有。

我不认为将mapreduce.fileoutputcommitter.marksuccessfuljobs 设置为false 构成解决方案。

还有其他解决方案吗?

【问题讨论】:

我在写信给 Cassandra 时遇到了同样的问题。问题是 Oozie 默认会在完成作业后尝试创建一个 _SUCCESS 文件。因此,当您禁用此功能时,该作业将起作用,但如果之后有任何依赖于生成的 _SUCCESS 文件,Oozie 会将作业标记为失败。就我而言,我确保写入 Cassandra 的内容在其自己的工作流程操作中是独立的。不知道这如何转化为 HBase... 【参考方案1】:

目前似乎没有真正的解决方案。

但是,this answer 对另一个问题似乎表明最好的解决方法是“手动”创建成功标志。

【讨论】:

以上是关于Pig、Oozie 和 HBase - java.io.IOException: No FileSystem for scheme: hbase的主要内容,如果未能解决你的问题,请参考以下文章

在 oozie Java Action 中传递 HBase 凭据

Oozie&Azkaban区别

使用 Pig、Hive 和 unix 的 Oozie 工作流程

在 Oozie 或 pig 运行时重命名文件夹

如何在 oozie 中将 pig 选项作为参数传递?

从 oozie 以本地模式运行 PIG