在Amazon AWS上将Hadoop连接到Cassandra - netty版本冲突?

时间:2013-07-17 21:41:02

标签: hadoop cassandra netty amazon-emr

我有一个在Amazon EMR上运行的Hadoop map reduce类,并输出到HDFS flatfile。一切都很好,但现在我需要输出到也在AWS上运行的Cassandra DB。我构建并运行了一个本地客户端并将其工作,然后将Cassandra编写代码移到我的Hadoop项目中。看来,问题是亚马逊为{1}提取了Hadoop 1.0.3,但在AWS上运行的Cassandra为1.2.6并使用/home/hadoop/lib/netty-3.2.4.Final.jar

我可以做些什么来预防或规避这种冲突?我可以在Amazon EMR引入的新版本的netty中绘制吗?

我在EMR上运行jar时得到的错误如下:

netty-3.5.9.Final.jar

1 个答案:

答案 0 :(得分:2)

我的一个内部模块遇到了类似的问题,它使用了缺少功能的netty-3.2.4.jar。

最终我必须对jar文件进行心脏直视手术。

  1. 使用jar -xvf oldlibrary.jar
  2. 展开嵌入旧netty库的jar文件
  3. 删除文件夹org / jboss / netty。
  4. 然后将新的netty jar文件展开到一个单独的文件夹
  5. 将新的org / jboss / netty文件夹及其内容复制到旧位置cp -prf netty .
  6. 创建新的JAR包jar -cvf ../new_jarfile.jar *
  7. 这是一种罕见的情况,但您可以应用此方法来克服库不兼容的问题。确保您的程序仍然运行。如果以这种方式更改基础库,则会发生原始程序无法运行的更改。设计良好的图书馆应该不知道这些变化。