我在一个2节点的hadoop上运行hive和hbase。 我使用的是hadoop-0.20.205.0,hive-0.9.0,hbase-0.92.0和zookeeper-3.4.2。
hive和hbase分别正常工作。然后我按照本手册整合了hive和hbase。 https://cwiki.apache.org/confluence/display/Hive/HBaseIntegration
hive启动没有错误,我创建了示例表
CREATE TABLE hbase_table_1(key int, value string)
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,cf1:val")
TBLPROPERTIES ("hbase.table.name" = "xyz");
hive中的 show tables
和hbase中的list
或scan
效果很好。
但是当我在蜂巢中select * from hbase_table_1;
时,我会收到错误
2012-09-12 11:25:56,975 ERROR ql.Driver (SessionState.java:printError(400)) - FAILED: Hive Internal Error: java.lang.RuntimeException(Error while making MR scratch directory - check filesystem config (null))
java.lang.RuntimeException: Error while making MR scratch directory - check filesystem config (null)
...
Caused by: java.lang.IllegalArgumentException: Wrong FS: hdfs://10.10.10.15:54310/tmp/hive-hadoop/hive_2012-09-12_11-25-56_602_1946700606338541381, expected: hdfs://hadoop01:54310
它说fs是错误的,但我不认为将fs配置到这样的路径是正确的,我应该在哪里配置它?
这是我的配置文件。 hadoop01的IP地址是10.10.10.15。
HBase的-site.xml中
<configuration>
<property>
<name>hbase.zookeeper.property.clientPort</name>
<value>2222</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>10.10.10.15</value>
<description>The directory shared by RegionServers.
</description>
</property>
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/home/hadoop/datas/zookeeper</value>
<description>Property from ZooKeeper's config zoo.cfg.
The directory where the snapshot is stored.
</description>
</property>
<property>
<name>hbase.rootdir</name>
<value>hdfs://hadoop01:54310/hbase</value>
<description>The directory shared by RegionServers.
</description>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
<description>The mode the cluster will be in. Possible values are
false: standalone and pseudo-distributed setups with managed Zookeeper
true: fully-distributed with unmanaged Zookeeper Quorum (see hbase-env.sh)
</description>
</property>
任何人都可以帮忙吗?
答案 0 :(得分:0)
我自己解决了。
修改$ HADOOP_HOME / conf / core-site.xml,将dfs.default.name
从ip更改为hostname。像这样
<property>
<name>fs.default.name</name>
<value>hdfs://hadoop01:54310/</value>
</property>
确保hbase-site.xml中的此属性和hbase.rootdir
属性使用相同的主机名或IP。