4

在我问我的问题之前,让我先解释一下这个场景。我已经使用 3 个实例设置了hbase集群:ec2

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

这工作得很好。现在,我尝试使用安装了 hive 的远程 EMR 实例连接到该集群的主服务器。所以,我点击了亚马逊 AWS 文档的链接:

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

在你创建一些表之前说。让 hive 知道远程 hbase master 的 public-DNS。设置 hbase.zookeeper.quorum=public-DNS-name;我确实做了已经提到的。但是,我无法连接到主人。我尝试使用以下脚本创建一个表:

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 端口。在那个组中,我允许组内所有端口上的 tcp、udp 和 ICMP 连接。

我的 master 的 /etc/hosts 文件如下所示:

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

我正在使用hadoop 1.0.1, hbase 0.94.11和. Zookeeper 是外部的管理者。hive 0.11.0zookeeper-3.4.3

另外,在那之后我尝试了其他方法。这次我尝试从安装在 EC2 Hbase 集群上的 hive CLI 连接到 EMR Hbase。现在,我能够在 EMR hbase 上创建同一个表。

更新的问题:

这似乎是亚马逊 ec2 的问题。我正在为您提供这些问题的快照以及链接:

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

在此处输入图像描述

4

0 回答 0