0

私はScalaコードからHBaseに接続しようとしていますが、エラーが発生しています。ClouderaでのHbase Scala接続の問題クイックスタートVM CDH5.8.0

17/03/28 11:40:53 INFO client.RpcRetryingCaller: Call exception, tries=30, retries=35, started=450502 ms ago, cancelled=false, msg= 
17/03/28 11:41:13 INFO client.RpcRetryingCaller: Call exception, tries=31, retries=35, started=470659 ms ago, cancelled=false, msg= 
17/03/28 11:41:33 INFO client.RpcRetryingCaller: Call exception, tries=32, retries=35, started=490824 ms ago, cancelled=false, msg= 
17/03/28 11:41:53 INFO client.RpcRetryingCaller: Call exception, tries=33, retries=35, started=510834 ms ago, cancelled=false, msg= 
17/03/28 11:42:13 INFO client.RpcRetryingCaller: Call exception, tries=34, retries=35, started=530956 ms ago, cancelled=false, msg= 
[error] (run-main-0) org.apache.hadoop.hbase.client.RetriesExhaustedException: Failed after attempts=35, exceptions: 
[error] Tue Mar 28 11:33:22 PDT 2017, RpcRetryingCaller{globalStartTime=1490726002560, pause=100, retries=35}, org.apache.hadoop.hbase.MasterNotRunningException: com.google.protobuf.ServiceException: java.lang.NoClassDefFoundError: org/apache/hadoop/net/SocketInputWrapper 
[error] Tue Mar 28 11:33:23 PDT 2017, RpcRetryingCaller{globalStartTime=1490726002560, pause=100, retries=35}, org.apache.hadoop.hbase.MasterNotRunningException: com.google.protobuf.ServiceException: java.lang.NoClassDefFoundError: org/apache/hadoop/net/SocketInputWrapper 
[error] Tue Mar 28 11:33:23 PDT 2017, RpcRetryingCaller{globalStartTime=1490726002560, pause=100, retries=35}, org.apache.hadoop.hbase.MasterNotRunningException: com.google.protobuf.ServiceException: java.lang.NoClassDefFoundError: org/apache/hadoop/net/SocketInputWrapper 
[error] Tue Mar 28 11:33:24 PDT 2017, RpcRetryingCaller{globalStartTime=1490726002560, pause=100, retries=35}, org.apache.hadoop.hbase.MasterNotRunningException: com.google.protobuf.ServiceException: java.lang.NoClassDefFoundError: org/apache/hadoop/net/SocketInputWrapper 
. 
. 
. 
. 
at org.apache.hadoop.hbase.client.RpcRetryingCaller.callWithRetries(RpcRetryingCaller.java:147) 
    at org.apache.hadoop.hbase.client.HBaseAdmin.executeCallable(HBaseAdmin.java:4117) 
    at org.apache.hadoop.hbase.client.HBaseAdmin.executeCallable(HBaseAdmin.java:4110) 
    at org.apache.hadoop.hbase.client.HBaseAdmin.listTables(HBaseAdmin.java:427) 
    at org.apache.hadoop.hbase.client.HBaseAdmin.listTables(HBaseAdmin.java:411) 
    at Hi$.main(hw.scala:12) 
    at Hi.main(hw.scala) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:606) 
Caused by: org.apache.hadoop.hbase.MasterNotRunningException: com.google.protobuf.ServiceException: java.lang.NoClassDefFoundError: org/apache/hadoop/net/SocketInputWrapper 
    at org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation$StubMaker.makeStub(ConnectionManager.java:1560) 
    at org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation$MasterServiceStubMaker.makeStub(ConnectionManager.java:1580) 
    at org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation.getKeepAliveMasterService(ConnectionManager.java:1737) 
    at org.apache.hadoop.hbase.client.MasterCallable.prepare(MasterCallable.java:38) 
    at org.apache.hadoop.hbase.client.RpcRetryingCaller.callWithRetries(RpcRetryingCaller.java:124) 
    at org.apache.hadoop.hbase.client.HBaseAdmin.executeCallable(HBaseAdmin.java:4117) 
    at org.apache.hadoop.hbase.client.HBaseAdmin.executeCallable(HBaseAdmin.java:4110) 
    at org.apache.hadoop.hbase.client.HBaseAdmin.listTables(HBaseAdmin.java:427) 
    at org.apache.hadoop.hbase.client.HBaseAdmin.listTables(HBaseAdmin.java:411) 
    at Hi$.main(hw.scala:12) 
    at Hi.main(hw.scala) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:606) 
Caused by: com.google.protobuf.ServiceException: java.lang.NoClassDefFoundError: org/apache/hadoop/net/SocketInputWrapper 
    at org.apache.hadoop.hbase.ipc.AbstractRpcClient.callBlockingMethod(AbstractRpcClient.java:239) 
    at org.apache.hadoop.hbase.ipc.AbstractRpcClient$BlockingRpcChannelImplementation.callBlockingMethod(AbstractRpcClient.java:331) 
    at org.apache.hadoop.hbase.protobuf.generated.MasterProtos$MasterService$BlockingStub.isMasterRunning(MasterProtos.java:58383) 
    at org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation$MasterServiceStubMaker.isMasterRunning(ConnectionManager.java:1591) 
    at org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation$StubMaker.makeStubNoRetries(ConnectionManager.java:1529) 
    at org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation$StubMaker.makeStub(ConnectionManager.java:1551) 
    at org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation$MasterServiceStubMaker.makeStub(ConnectionManager.java:1580) 
    at org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation.getKeepAliveMasterService(ConnectionManager.java:1737) 
    at org.apache.hadoop.hbase.client.MasterCallable.prepare(MasterCallable.java:38) 
    at org.apache.hadoop.hbase.client.RpcRetryingCaller.callWithRetries(RpcRetryingCaller.java:124) 
    at org.apache.hadoop.hbase.client.HBaseAdmin.executeCallable(HBaseAdmin.java:4117) 
    at org.apache.hadoop.hbase.client.HBaseAdmin.executeCallable(HBaseAdmin.java:4110) 
    at org.apache.hadoop.hbase.client.HBaseAdmin.listTables(HBaseAdmin.java:427) 
    at org.apache.hadoop.hbase.client.HBaseAdmin.listTables(HBaseAdmin.java:411) 
    at Hi$.main(hw.scala:12) 
    at Hi.main(hw.scala) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:606) 
Caused by: java.lang.NoClassDefFoundError: org/apache/hadoop/net/SocketInputWrapper 
    at org.apache.hadoop.hbase.ipc.RpcClientImpl.createConnection(RpcClientImpl.java:138) 
    at org.apache.hadoop.hbase.ipc.RpcClientImpl.getConnection(RpcClientImpl.java:1316) 
    at org.apache.hadoop.hbase.ipc.RpcClientImpl.call(RpcClientImpl.java:1224) 
    at org.apache.hadoop.hbase.ipc.AbstractRpcClient.callBlockingMethod(AbstractRpcClient.java:226) 
    at org.apache.hadoop.hbase.ipc.AbstractRpcClient$BlockingRpcChannelImplementation.callBlockingMethod(AbstractRpcClient.java:331) 
    at org.apache.hadoop.hbase.protobuf.generated.MasterProtos$MasterService$BlockingStub.isMasterRunning(MasterProtos.java:58383) 
    at org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation$MasterServiceStubMaker.isMasterRunning(ConnectionManager.java:1591) 
    at org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation$StubMaker.makeStubNoRetries(ConnectionManager.java:1529) 
    at org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation$StubMaker.makeStub(ConnectionManager.java:1551) 
    at org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation$MasterServiceStubMaker.makeStub(ConnectionManager.java:1580) 
    at org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation.getKeepAliveMasterService(ConnectionManager.java:1737) 
    at org.apache.hadoop.hbase.client.MasterCallable.prepare(MasterCallable.java:38) 
    at org.apache.hadoop.hbase.client.RpcRetryingCaller.callWithRetries(RpcRetryingCaller.java:124) 
    at org.apache.hadoop.hbase.client.HBaseAdmin.executeCallable(HBaseAdmin.java:4117) 
    at org.apache.hadoop.hbase.client.HBaseAdmin.executeCallable(HBaseAdmin.java:4110) 
    at org.apache.hadoop.hbase.client.HBaseAdmin.listTables(HBaseAdmin.java:427) 
    at org.apache.hadoop.hbase.client.HBaseAdmin.listTables(HBaseAdmin.java:411) 
    at Hi$.main(hw.scala:12) 
    at Hi.main(hw.scala) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:606) 
Caused by: java.lang.ClassNotFoundException: org.apache.hadoop.net.SocketInputWrapper 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366) 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:425) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:358) 
    at org.apache.hadoop.hbase.ipc.RpcClientImpl.createConnection(RpcClientImpl.java:138) 
    at org.apache.hadoop.hbase.ipc.RpcClientImpl.getConnection(RpcClientImpl.java:1316) 
    at org.apache.hadoop.hbase.ipc.RpcClientImpl.call(RpcClientImpl.java:1224) 
    at org.apache.hadoop.hbase.ipc.AbstractRpcClient.callBlockingMethod(AbstractRpcClient.java:226) 
    at org.apache.hadoop.hbase.ipc.AbstractRpcClient$BlockingRpcChannelImplementation.callBlockingMethod(AbstractRpcClient.java:331) 
    at org.apache.hadoop.hbase.protobuf.generated.MasterProtos$MasterService$BlockingStub.isMasterRunning(MasterProtos.java:58383) 
    at org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation$MasterServiceStubMaker.isMasterRunning(ConnectionManager.java:1591) 
    at org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation$StubMaker.makeStubNoRetries(ConnectionManager.java:1529) 
    at org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation$StubMaker.makeStub(ConnectionManager.java:1551) 
    at org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation$MasterServiceStubMaker.makeStub(ConnectionManager.java:1580) 
    at org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation.getKeepAliveMasterService(ConnectionManager.java:1737) 
    at org.apache.hadoop.hbase.client.MasterCallable.prepare(MasterCallable.java:38) 
    at org.apache.hadoop.hbase.client.RpcRetryingCaller.callWithRetries(RpcRetryingCaller.java:124) 
    at org.apache.hadoop.hbase.client.HBaseAdmin.executeCallable(HBaseAdmin.java:4117) 
    at org.apache.hadoop.hbase.client.HBaseAdmin.executeCallable(HBaseAdmin.java:4110) 
    at org.apache.hadoop.hbase.client.HBaseAdmin.listTables(HBaseAdmin.java:427) 
    at org.apache.hadoop.hbase.client.HBaseAdmin.listTables(HBaseAdmin.java:411) 
    at Hi$.main(hw.scala:12) 
    at Hi.main(hw.scala) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:606) 
[trace] Stack trace suppressed: run last compile:run for the full output. 
17/03/28 07:56:55 ERROR zookeeper.ClientCnxn: Event thread exiting due to interruption 
java.lang.InterruptedException 
    at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.reportInterruptAfterWait(AbstractQueuedSynchronizer.java:2017) 
    at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2052) 
    at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442) 
    at org.apache.zookeeper.ClientCnxn$EventThread.run(ClientCnxn.java:494) 
17/03/28 07:56:55 INFO zookeeper.ClientCnxn: EventThread shut down 
java.lang.RuntimeException: Nonzero exit code: 1 
    at scala.sys.package$.error(package.scala:27) 
[trace] Stack trace suppressed: run last compile:run for the full output. 
[error] (compile:run) Nonzero exit code: 1 
[error] Total time: 544 s, completed Mar 28, 2017 7:56:56 AM 

•ホストOSは、8 GBのRAMと64ビットのアーチを持つWindows 7です。インテル®Core i5
•ClouderaクイックスタートVM CDH 5.8.0を使用しています。私のWndowsで。
?VMは6GBのRAM、2つのプロセッサーを使用しています& 64 GBのハードディスク。サービス•
は、Clouderaのマネージャーで実行されている:サービス•

Hbase 
    HDFS 
    YARN 
    Zookeeper 
    Key-Value Indexer 

は、Clouderaのマネージャーで停止:

Hive 
    Hue 
    Impala 
    Oozie 
    Solar 
    Spark 
    Sqoop 1 Client 
    Sqoop 2 

私のクライアントコード•
がVMであるHBaseのバージョン1.2.0-cdh5.8.0•のみ。
•sbtプロジェクトを作成しました。
•HbaseとScalaとの接続については、このURL https://hbase.apache.org/book.html#scalaを参照しました。
CLASSPATHを設定する。私はCLASSPATHに "/path/to/scala-library.jar"というリンクを記述していませんでした。 build.sbtは、次のようになります私は/ home/Clouderaの/デスクトップ/ PLAY-SBT-プロジェクト•

$ export CLASSPATH=$CLASSPATH:/usr/lib/hadoop/lib/native:/usr/lib/hbase/lib/native/Linux-amd64-64 

•プロジェクトのルートディレクトリ= /ホーム/ Clouderaの/デスクトップ/ PLAY-SBT-プロジェクト
/。自分の環境ごとに依存ライブラリのバージョンを変更しました。エラーの一部として "hbase-client"、 "hbase-common" & "hbase-server"のような依存関係をいくつか追加しましたが、まだ成功しませんでした。 /home/cloudera/Desktop/play-sbt-project/src/main/scala/pw.scalaマイの/ etc•この

import org.apache.hadoop.hbase.HBaseConfiguration 
import org.apache.hadoop.hbase.client.{ConnectionFactory,HBaseAdmin,HTable,Put,Get} 
import org.apache.hadoop.hbase.util.Bytes 

object Hi { 
def main(args: Array[String]) = { 
println("Hi!") 
val conf = new HBaseConfiguration() 
val connection = ConnectionFactory.createConnection(conf); 
val admin = connection.getAdmin(); 

// list the tables 
val listtables=admin.listTables() 
listtables.foreach(println) 
} 
} 

のように見えるHBaseの接続のための私の主なコード•

name := "play-sbt-project" 
version := "1.0" 
scalaVersion := "2.10.2" 
resolvers += "Apache HBase" at "https://repository.apache.org/content/repositories/releases" 
resolvers += "Thrift" at "http://people.apache.org/~rawson/repo/" 
libraryDependencies ++= Seq(
"org.apache.hadoop" % "hadoop-core" % "1.2.1", 
"org.apache.hbase" % "hbase" % "1.2.0", 
"org.apache.hbase" % "hbase-client" % "1.2.0", 
"org.apache.hbase" % "hbase-common" % "1.2.0", 
"org.apache.hbase" % "hbase-server" % "1.2.0" 
) 

/hbase/conf/hbase-site.xmlは次のようになります。

<?xml version="1.0" encoding="UTF-8"?> 

<!--Autogenerated by Cloudera Manager--> 
<configuration> 
    <property> 
    <name>hbase.rootdir</name> 
    <value>hdfs://quickstart.cloudera:8020/hbase</value> 
    </property> 
    <property> 
    <name>hbase.replication</name> 
    <value>true</value> 
    </property> 
    <property> 
    <name>hbase.client.write.buffer</name> 
    <value>2097152</value> 
    </property> 
    <property> 
    <name>hbase.client.pause</name> 
    <value>100</value> 
    </property> 
    <property> 
    <name>hbase.client.retries.number</name> 
    <value>35</value> 
    </property> 
    <property> 
    <name>hbase.client.scanner.caching</name> 
    <value>100</value> 
    </property> 
    <property> 
    <name>hbase.client.keyvalue.maxsize</name> 
    <value>10485760</value> 
    </property> 
    <property> 
    <name>hbase.ipc.client.allowsInterrupt</name> 
    <value>true</value> 
    </property> 
    <property> 
    <name>hbase.client.primaryCallTimeout.get</name> 
    <value>10</value> 
    </property> 
    <property> 
    <name>hbase.client.primaryCallTimeout.multiget</name> 
    <value>10</value> 
    </property> 
    <property> 
    <name>hbase.coprocessor.region.classes</name> 
    <value>org.apache.hadoop.hbase.security.access.SecureBulkLoadEndpoint</value> 
    </property> 
    <property> 
    <name>hbase.regionserver.thrift.http</name> 
    <value>false</value> 
    </property> 
    <property> 
    <name>hbase.thrift.support.proxyuser</name> 
    <value>false</value> 
    </property> 
    <property> 
    <name>hbase.rpc.timeout</name> 
    <value>60000</value> 
    </property> 
    <property> 
    <name>hbase.snapshot.enabled</name> 
    <value>true</value> 
    </property> 
    <property> 
    <name>hbase.snapshot.master.timeoutMillis</name> 
    <value>60000</value> 
    </property> 
    <property> 
    <name>hbase.snapshot.region.timeout</name> 
    <value>60000</value> 
    </property> 
    <property> 
    <name>hbase.snapshot.master.timeout.millis</name> 
    <value>60000</value> 
    </property> 
    <property> 
    <name>hbase.security.authentication</name> 
    <value>simple</value> 
    </property> 
    <property> 
    <name>hbase.rpc.protection</name> 
    <value>authentication</value> 
    </property> 
    <property> 
    <name>zookeeper.session.timeout</name> 
    <value>60000</value> 
    </property> 
    <property> 
    <name>zookeeper.znode.parent</name> 
    <value>/hbase</value> 
    </property> 
    <property> 
    <name>zookeeper.znode.rootserver</name> 
    <value>root-region-server</value> 
    </property> 
    <property> 
    <name>hbase.zookeeper.quorum</name> 
    <!-- <value>quickstart.cloudera</value> --> 
    <value>127.0.0.1</value> 
    </property> 
    <property> 
    <name>hbase.zookeeper.property.clientPort</name> 
    <value>2181</value> 
    </property> 
    <property> 
    <name>hbase.rest.ssl.enabled</name> 
    <value>false</value> 
    </property> 
</configuration> 

私は、この問題を解決するために多くをグーグルが、成功事例の得ませんでした。
•環境ごとにbuild.sbtファイル内の依存ライブラリのバージョンを変更しました
•「hbase-client」、「hbase-common」&のほんの少数の依存ライブラリが追加されました。 "hbase-server"
• "hbase-site.xml"ファイルの "quickstart.cloudera"から "127.0.0.1"への "hbase.zookeeper.quorum"の値を変更しました。

この問題を解決するのを手伝ってください。ありがとうございました。

+0

は本当に 'Hadoopの-core'のバージョンは、あなたが使用していることですか? HadoopのバージョンはHBaseのバージョンと同じではありません。 CDH5.8はHadoop 2.6に基づいています。 –

+0

@Joe Pallas、コメントありがとうございます。私はこの問題を解決しました。 'hadoop-core'と互換性のあるjar依存バージョンは、いくつかのコード変更とともに私が行った変更の1つでした。私は私のソリューションを投稿しています。 – kumarhimanshu449

答えて

0

問題を解決しました。

  1. build.sbtファイル内の "hadoop-core"を "hadoop-common"に変更してください。最新のCDHバージョンでは、「hadoop-core」はMapReduce 1用のコードでのみサポートされています。
  2. build.sbtでのcloudera 5.8.0の互換性に従って、すべての依存バージョンを変更します。更新build.sbtは次のようになります。

    name := "play-sbt-project" 
    version := "1.0" 
    scalaVersion := "2.10.2" 
    resolvers += "Thrift" at "http://people.apache.org/~rawson/repo/" 
    resolvers += "Cloudera Repository" at "https://repository.cloudera.com/artifactory/cloudera-repos/" 
    
    libraryDependencies ++= Seq( 
    "org.apache.hadoop" % "hadoop-common" % "2.6.0-cdh5.8.0", 
    "org.apache.hbase" % "hbase" % "1.2.0-cdh5.8.0", 
    "org.apache.hbase" % "hbase-client" % "1.2.0-cdh5.8.0", 
    "org.apache.hbase" % "hbase-common" % "1.2.0-cdh5.8.0", 
    "org.apache.hbase" % "hbase-server" % "1.2.0-cdh5.8.0" 
    ) 
    
  3. HBaseConfiguration()クラスは廃止予定されています。代わりにcreate()メソッドを使用してください。また、メインコードのロジックを変更しました。以前はHBaseのテーブルを取得していましたが(これはいくつかの問題があったので、これを落としましたが、私はこれを次回試してみます)、私のモットーはHBase接続のスカラを確立することです。既に存在するHBaseテーブル。新しいコードは次のようになります。

    package main.scala 
    
    import org.apache.hadoop.conf.Configuration 
    import org.apache.hadoop.hbase.HBaseConfiguration 
    import org.apache.hadoop.hbase.client.{ConnectionFactory,HTable,Put} 
    import org.apache.hadoop.hbase.util.Bytes 
    
    object Hi { 
    
    def main(args: Array[String]) = { 
    println("Hi!") 
    val conf:Configuration = HBaseConfiguration.create() 
    val table:HTable = new HTable(conf, "emp1") 
    val put1:Put = new Put(Bytes.toBytes("row1")) 
    put1.add(Bytes.toBytes("personal_data"),Bytes.toBytes("qual1"),Bytes.toBytes("val1")) 
    table.put(put1) 
    println("Success") 
    } 
    }