1

在工作中,我们正在尝试执行以下操作:

  • 通过 Amazon 运行 Elastic MapReduce 作业,它将 Hadoop 冻结在 0.20.205 版本
  • 将输出写入在 EC2 上运行的 HBase,特别是来自 Cloudera 的 0.92.1-cdh4.0.1

到目前为止,我发现当我在 Hadoop 作业(通过 maven 打包)中使用 Apache HBase 0.92.1 时,我的 WordCount 测试似乎有效。我担心这是意外工作,并且随着我的使用成熟可能会爆炸。

但是,当我在 Hadoop 作业中打包 HBase 0.92.1-cdh4.0.1 时,我得到ClassNotFoundException

https://emr-qa.eventbrite.com.s3.amazonaws.com/logs/j-RWJ75VR11SLB/steps/1/stderr

  • Apache HBase jar 能否与 CDH Hbase 服务器很好地配合使用?
  • 像这样混合版本和软件包是可怕的主意吗?
4

1 回答 1

1

我有同样的问题,而且似乎它们不兼容(连接有问题)。解决方案是更改maven依赖以使用cloudera的jar:

 <properties>
   <hbase.version>0.92.1-cdh4.0.1</hbase.version>
   <hadoop.version>2.0.0-cdh4.0.1</hadoop.version>
 </properties>

 <repositories>
   <repository>
       <id>cloudera</id>
       <url>https://repository.cloudera.com/artifactory/cloudera-repos/</url>
    </repository>
 </repositories>    

稍后在依赖项中:

 <dependency>
 <groupId>org.apache.hbase</groupId>
      <artifactId>hbase</artifactId>
      <version>${hbase.version} </version>
      <exclusions>
          <exclusion>
              <artifactId>thrift</artifactId>
              <groupId>org.apache.thrift</groupId>
          </exclusion>
      </exclusions>
  </dependency>

当您想将代码与另一个发行版一起使用时,您可以更改属性并重新打包

于 2012-08-09T03:41:18.163 回答