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 凭据