HBaseに接続する必要のあるScaldingジョブを作成しようとしていますが、HBaseタップの使用に問題があります。このサンプルプロジェクトに従って、 Twitter Mapleが提供するタップを使用してみましたが、使用しているHadoop / HBaseバージョンと、Twitterでクライアントとして使用されているバージョンとの間に互換性がないようです。
私のクラスターは、HBase0.92およびHadoop2.0.0-cdh4.1.3でClouderaCDH4を実行しています。HBaseに接続するScaldingジョブを起動するたびに、例外が発生します
java.lang.NoSuchMethodError: org.apache.hadoop.net.NetUtils.getInputStream(Ljava/net/Socket;)Ljava/io/InputStream;
at org.apache.hadoop.hbase.ipc.HBaseClient$Connection.setupIOstreams(HBaseClient.java:363)
at org.apache.hadoop.hbase.ipc.HBaseClient.getConnection(HBaseClient.java:1046)
...
Twitter Mapleで使用されているHBaseクライアントはNetUtils
、クラスターにデプロイされているバージョンのHadoopには存在しないメソッドを想定しているようです。
不一致が正確に何であるかを追跡するにはどうすればよいですか?HBaseクライアントはどのバージョンを期待しますか?これらの問題を軽減する一般的な方法はありますか?
多くの場合、クライアントライブラリはハードコードされたバージョンのHadoop依存関係でコンパイルされており、それらを実際にデプロイされたバージョンと一致させるのは難しいようです。