Amazon の EMR サービスを使用して、スポット インスタンスで MapReduce ジョブを実行しようとしています。その目的は、S3 からファイルを読み取り、それらを MR ジョブで処理し、Reducer の Cassandra DB に行を出力することです。
私のカスタム jar は、私のマシンでホストされている単一ノードの Hadoop クラスターで正常に動作し、S3 からファイルを読み取り、クラウドでホストされている Cassandra クラスターに行を送信します。
EMR スポット インスタンスで実行すると、私のジョブは問題なく map フェーズを完了し、reduce フェーズで次のエラーがスローされます。
2013-07-09 17:23:46,598 FATAL org.apache.hadoop.mapred.Child (main): Error running child : java.lang.NoSuchMethodError: org.jboss.netty.handler.codec.frame.LengthFieldBasedFrameDecoder.<init>(IIIIIZ)V
at org.apache.cassandra.transport.Frame$Decoder.<init>(Frame.java:147)
at com.datastax.driver.core.Connection$PipelineFactory.getPipeline(Connection.java:616)
at org.jboss.netty.bootstrap.ClientBootstrap.connect(ClientBootstrap.java:212)
at org.jboss.netty.bootstrap.ClientBootstrap.connect(ClientBootstrap.java:188)
at com.datastax.driver.core.Connection.<init>(Connection.java:111)
at com.datastax.driver.core.Connection.<init>(Connection.java:56)
at com.datastax.driver.core.Connection$Factory.open(Connection.java:387)
at com.datastax.driver.core.ControlConnection.tryConnect(ControlConnection.java:211)
at com.datastax.driver.core.ControlConnection.reconnectInternal(ControlConnection.java:174)
at com.datastax.driver.core.ControlConnection.connect(ControlConnection.java:87)
at com.datastax.driver.core.Cluster$Manager.init(Cluster.java:609)
at com.datastax.driver.core.Cluster$Manager.access$100(Cluster.java:553)
at com.datastax.driver.core.Cluster.<init>(Cluster.java:67)
at com.datastax.driver.core.Cluster.buildFrom(Cluster.java:94)
at com.datastax.driver.core.Cluster$Builder.build(Cluster.java:534)
at com.fullcontact.photo_deduplication.metadata.MetaToCassandraReducer.setup(MetaToCassandraReducer.java:32)
at org.apache.hadoop.mapreduce.Reducer.run(Reducer.java:174)
at org.apache.hadoop.mapred.ReduceTask.runNewReducer(ReduceTask.java:663)
at org.apache.hadoop.mapred.ReduceTask.run(ReduceTask.java:426)
at org.apache.hadoop.mapred.Child$4.run(Child.java:255)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:396)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1132)
at org.apache.hadoop.mapred.Child.main(Child.java:249)
Gradle は、私の唯一の重要な依存関係がバージョン 3.6.3 にあると報告しています。これには、問題の ctor のバージョンがあります。
このエラーの原因となるマシンと EMR の違いは何ですか? それとも、まったく別のものでしょうか?