hive hbase 配置
标签(空格分隔): hive
##Hive2.x 版本的安装及配置参考
##hive2.x 安装
###环境变量
export HIVE_HOME=/application/hive
export PATH=$HIVE_HOME/bin:$PATH
##hive和hbase整合
在hive-site.xml中添加,$HIVE_HOME改成hive的目录,不能使用HIVE_HOME,system:user.name替换成自己的用户名
<property>
<name>system:java.io.tmpdir</name>
<value>$HIVE_HOME/tmpdir</value>
</property>
<property>
<name>system:user.name</name>
<value>hadoop</value>
</property>
加入hive-hbase-handler引用
<property>
<name>hive.aux.jars.path</name>
<value>/home/hadoop/application/hive/lib/hive-hbase-handler-2.3.2.jar</value>
在hive 2.3.2的lib目录中已包含hbase相关的jar包,如果没有,参考以下配置
<property>
<name>hive.aux.jars.path</name>
<value>
file:///home/hadoop/hive/lib/hive-hbase-handler-2.3.2.jar,
file:///home/hadoop/hive/lib/guava-14.0.1.jar,
file:///home/hadoop/hbase/lib/hbase-common-1.1.4.jar,
file:///home/hadoop/hbase/lib/hbase-client-1.1.4.jar,
file:///home/hadoop/hbase/lib/hbase-server-1.1.4.jar,
file:///home/hadoop/hbase/lib/hbase-hadoop2-compat-1.1.4.ja,
file:///home/hadoop/hbase/lib/netty-all-4.0.23.Final.jar,
file:///home/hadoop/hbase/lib/hbase-protocol-1.1.4.jar,
file:///home/hadoop/zookeeper/zookeeper-3.4.5.jar
</value>
</property>
###创建表
hive内部表
create table hive2(row_key string, fpdm string, fphm string, kprq string, xhdwsbh string);
hbase外部表
CREATE EXTERNAL TABLE hive_test1(row_key string, fpdm string,fphm string ,kprq string,xhdwsbh string)
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
WITH SERDEPROPERTIES ("hbase.columns.mapping"=":key, i:fpdm, i:fphm, i:kprq, i:xhdwsbh")
TBLPROPERTIES("hbase.table.name" = "iw:test01");
##HIVE ON SPARK
hive2.x官方已经不推荐使用Hive on MR,于是集成Spark
基于Spark 2.0.0搭建Hive on Spark环境
Hive on Spark: Getting Started
hive只支持特定关系的spark版本,详细可以看官方文档Version Compatibility章节,本文使用hive-2.3.2、spark-2.0.2和hadoop-2.6
###编译spark
spark官网提供的spark已经集成了hive-1.2.1,使用hive on spark必须编译一个不集成hive的版本,编译命令如下
./dev/make-distribution.sh --name "hadoop2-without-hive" --tgz "-Pyarn,hadoop-provided,hadoop-2.6,parquet-provided"
##问题记录
###1、hive日志路径
根据启动的用户不同,位于一下路径:
/tmp/hadoop/hive.log
/tmp/root/hive.log
###2、java.lang.RuntimeException: java.lang.RuntimeException: org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.security.authorize.AuthorizationException): User: hadoop is not allowed to impersonate hadoop
beeline无法连接时有多种可能,首先进入beeline使用**!connect jdbc:hive2:// hadoop**命令,密码为空,测试是否能连接上,如果不行则hiveserver没有启动
本地连接成功后,远程连接仍然报错,需要配置hadoop的core-site.xml,以下为使用通配的方式。
<property>
<name>hadoop.proxyuser.hadoop.groups</name>
<value>*</value>
<description>Allow the superuser oozie to impersonate any members of the group group1 and group2</description>
</property>
<property>
<name>hadoop.proxyuser.hadoop.hosts</name>
<value>*</value>
<description>The superuser can connect only from host1 and host2 to impersonate a user</description>
</property>
或者配置具体的用户和hosts。
<property>
<name>hadoop.proxyuser.hadoop.groups</name>
<value>hadoop</value>
<description>Allow the superuser oozie to impersonate any members of the group group1 and group2</description>
</property>
<property>
<name>hadoop.proxyuser.hadoop.hosts</name>
<value>127.0.0.1,localhost</value>
<description>The superuser can connect only from host1 and host2 to impersonate a user</description>
</property>
然后再使用!connect jdbc:hive2://ip:port/default
###3、json serde
hive2提供自带的json serde,使用命令可以临时加入会话中
ADD JAR /HIVE_HOME/hcatalog/share/hcatalog/hive-hcatalog-core-2.1.1.jar;
hive2自带的serde
###4、永久add jar
在hive根目录下创建目录auxlib,将jar包放入该目录下
重启hiveserver
###5、Hbase integration (整合) 出现zk始终连接 localhost:2181
需要在hive的conf hive-site.xml加入一个hbase zk的属性
<property>
<name>hbase.zookeeper.quorum</name>
<value>host1,host2</value>
<description></description>
</property>
###6、hive可以访问base,beeline不行,提示错误ConnectionClosingException
权限问题造成,修改hive-site.xml
<property>
<name>hive.server2.enable.doAs</name>
<value>false</value>
</property>