4

質問する前に、まずシナリオを説明させてください。3 つのインスタンスでhbaseクラスターをセットアップしました。ec2

i-xxxxxxx-- master, zookeeper1, regionserver1
i-xxxxxxx-- slave1, zookeeper2, regionserver2
i-xxxxxxx-- slave2, zookeeper3, regionserver3. 

これは完全に正常に機能していました。ここで、ハイブがインストールされたリモート EMR インスタンスを使用して、このクラスターのマスターに接続しようとしました。そこで、Amazon aws ドキュメントの次のリンクをたどりました。

http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/emr-hbase-access-hive.html

これは、テーブルを作成する前に言います。ハイブにリモート hbase マスターのパブリック DNS を認識させます。hbase.zookeeper.quorum=パブリック DNS 名を設定します。私は言及されていることを正確に行いました。しかし、マスターに接続できませんでした。次のスクリプトを使用して1つのテーブルを作成しようとしました:

CREATE TABLE hauto(cookie string, timespent string, pageviews string, visit string, logdate string) 
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
WITH SERDEPROPERTIES ("hbase.columns.mapping" = "m:timespent, m:pageviews, m:visit, m:logdate")
TBLPROPERTIES ("hbase.table.name" = "hauto");

したがって、このエラーが発生しました:

FAILED: Error in metadata: MetaException(message:org.apache.hadoop.hbase.MasterNotRunningException: Retried 10 times
    at org.apache.hadoop.hbase.client.HBaseAdmin.<init>(HBaseAdmin.java:127)
    at org.apache.hadoop.hive.hbase.HBaseStorageHandler.getHBaseAdmin(HBaseStorageHandler.java:74)
    at org.apache.hadoop.hive.hbase.HBaseStorageHandler.preCreateTable(HBaseStorageHandler.java:148)
    at org.apache.hadoop.hive.metastore.HiveMetaStoreClient.createTable(HiveMetaStoreClient.java:467)
    at org.apache.hadoop.hive.metastore.HiveMetaStoreClient.createTable(HiveMetaStoreClient.java:460)
    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)
    at org.apache.hadoop.hive.metastore.RetryingMetaStoreClient.invoke(RetryingMetaStoreClient.java:74)
    at com.sun.proxy.$Proxy14.createTable(Unknown Source)
    at org.apache.hadoop.hive.ql.metadata.Hive.createTable(Hive.java:600)
    at org.apache.hadoop.hive.ql.exec.DDLTask.createTable(DDLTask.java:3791)
    at org.apache.hadoop.hive.ql.exec.DDLTask.execute(DDLTask.java:258)
    at org.apache.hadoop.hive.ql.exec.Task.executeTask(Task.java:144)
    at org.apache.hadoop.hive.ql.exec.TaskRunner.runSequential(TaskRunner.java:57)
    at org.apache.hadoop.hive.ql.Driver.launchTask(Driver.java:1355)
    at org.apache.hadoop.hive.ql.Driver.execute(Driver.java:1139)
    at org.apache.hadoop.hive.ql.Driver.run(Driver.java:945)
    at org.apache.hadoop.hive.cli.CliDriver.processLocalCmd(CliDriver.java:310)
    at org.apache.hadoop.hive.cli.CliDriver.processCmd(CliDriver.java:231)
    at org.apache.hadoop.hive.cli.CliDriver.processLine(CliDriver.java:466)
    at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:819)
    at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:674)
    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)
    at org.apache.hadoop.util.RunJar.main(RunJar.java:187)
)
FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask

参考までに、EMRHive にインストールされたインスタンスと EC2Hbase-clusterは同じセキュリティ グループに属しています。EMR から EC2 へ、および EC2 から EMR へ、2181、60000、60010、60020 ポートに telnet で接続できます。そして、そのグループでは、グループ内のすべてのポートで tcp、udp、および ICMP 接続を許可しました。

マスターの /etc/hosts ファイルは次のようになります。

XXXXXXXXXXX master localhost
XXXXXXXXXXX zkserver1 rgserver1 
XXXXXXXXXXX zkserver2 rgserver2
XXXXXXXXXXX zkserver3 rgserver3 

hadoop 1.0.1hbase 0.94.11hive 0.11.0およびを使用していzookeeper-3.4.3ます。そして、飼育係は外部の管理者です。

また、その後、私は別の方法を試しました。今回はEC2 Hbaseクラスターにインストールしたhive CLIからEMR Hbaseに接続してみました。これで、EMR hbase に同じテーブルを作成できました。

更新された質問:

これはAmazon ec2の問題のようです。これらの問題のスナップショットとリンクを提供しています。

http://hbase.apache.org/book.html#trouble.log.gc

ここに画像の説明を入力

4

0 に答える 0