5

Sqoop を使用して MySQL から HBase にテーブルをインポートする際に問題があります。3 つのノード (マスター 1 つ、スレーブ 2 つ) を持つクラスターで作業しています。

このコマンドを実行しようとしたとき:

    sqoop import --hbase-create-table --hbase-table (any_tablename)

   --column-family (any_cf) --hbase-row-key (any_rowkey) --connect 
   jdbc:mysql://(mysqlserver_machine_IP)/(any_db) --username root -P --table (any_table) 

-m 1

次のエラーが表示されます。

...13/07/30 12:13:36 INFO zookeeper.ZooKeeper: Session: 0x1402df83cc5000a closed
13/07/30 12:13:36 INFO zookeeper.ClientCnxn: EventThread shut down
13/07/30 12:13:42 INFO mapred.JobClient: Running job: job_201307301159_0001
13/07/30 12:13:43 INFO mapred.JobClient:  map 0% reduce 0%
13/07/30 12:28:12 INFO mapred.JobClient: Task Id : attempt_201307301159_0001_m_000000_0, Status : FAILED
java.lang.RuntimeException: Could not access HBase table mypop
    at org.apache.sqoop.hbase.HBasePutProcessor.setConf(HBasePutProcessor.java:121)
    at org.apache.hadoop.util.ReflectionUtils.setConf(ReflectionUtils.java:62)
    at org.apache.hadoop.util.ReflectionUtils.newInstance(ReflectionUtils.java:117)
    at org.apache.sqoop.mapreduce.DelegatingOutputFormat$DelegatingRecordWriter.<init>(DelegatingOutputFormat.java:107)
    at org.apache.sqoop.mapreduce.DelegatingOutputFormat.getRecordWriter(DelegatingOutputFormat.java:82)
    at org.apache.hadoop.mapred.MapTask$NewDirectOutputCollector.<init>(MapTask.java:628)
    at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:753)
    at org.apache.hadoop.mapred.MapTask.run(MapTask.java:370)
    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:415)
    at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1121)
    at org.apache.hadoop.mapred.Child.main(Child.java:249)
Caused by: org.apache.hadoop.hbase.client.NoServerForRegionException: Unable to find region for mypop,,99999999999999 after 10 tries.
    at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:991)
    at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:896)
    at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:998)
    at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:900)
    at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:857)
    at org.apache.hadoop.hbase.client.HTable.finishSetup(HTable.java:233)
    at org.apache.hadoop.hbase.client.HTable.<init>(HTable.java:173)
    at org.apache.hadoop.hbase.client.HTable.<init>(HTable.java:132)
    at org.apache.sqoop.hbase.HBasePutProcessor.setConf(HBasePutProcessor.java:119)
    ... 12 more
4

1 に答える 1

0

Sqoop は、このテーブルのリージョンを保持する RegionServer に接続できないようです。RegionServer が正常に動作していること、およびネットワーク関連の問題がないことを確認してください。hbase-*.jar を SQOOP_HOME/lib フォルダーに追加します。

Web ブラウザーでhmaster_machine:60010を指定してHBase WebUIにアクセスし、RegionServer がそこにリストされているかどうかを確認します。実行されていない場合は、RegionServer ログを掘り下げてみてください。

于 2013-07-30T07:49:25.473 に答える