step:
1.准备好hadoop环境
2.准备MySQL环境 (因为hive的元数据数据库是derby 不能多用户操作(在不同目录底下启动hive derby将在该目录底下创建数据库文件但不同目录数据不互通) 所以切换MySQL作为元数据数据库 )
3.创建源数据库metastore
4.安装hive并配置hive的安装环境 (解决架包冲突mv $HIVE_HOME/lib/log4j-slf4j-impl-2.10.0.jar $HIVE_HOME/lib/log4j-slf4j-impl-2.10.0.bak)
5.将mysql的jdbc驱动加入hive的lib目录底下
6.在hive的目录conf底下新建文件hive-site.xml
7.初始化
error:
1.Exception in thread "main" java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkArgument(ZLjava/lang/String;Ljava/lang/Object;)V
reason:
1.HIVE和HADOOP内置的jar包版本(guava-19.0.jar )不一致导致
- /usr/local/hive/lib/ (hive架包目录)
- /usr/local/hadoop/share/hadoop/common/lib/ (Hadoop架包目录)
solve: 1.高版本覆盖低版本
start hive
1.bin/hive
2.开启元数据服务(前台) 再去连接
3.开启元数据服务再开启hiveserver2 通过jdbc的形式连接
error:
Could not open client transport with JDBC Uri: jdbc:hive2://127.0.0.1:10000/test:
Failed to open new session: java.lang.RuntimeException: org.apache.hadoop.ipc.RemoteException
(org.apache.hadoop.security.authorize.AuthorizationException): User: tanzhengqiang is not allowed to impersonate hive (state=08S01,code=0)
reason:
hadoop引入了一个安全伪装机制,使得hadoop 不允许上层系统直接将实际用户传递到hadoop层,而是将实际用户传递给一个超级代理,由此代理在hadoop上执行操作,避免任意客户端随意操作hadoop
solve:
在etc/hadoop/core-site.xml文件中修改为如下方式即可解决:
<property>
<name>hadoop.proxyuser.tanzhengqiang.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.tanzhengqiang.groups</name>
<value>*</value>
</property>