0
点赞
收藏
分享

微信扫一扫

hive搭建

哈哈镜6567 2022-03-16 阅读 48

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>
 

举报

相关推荐

0 条评论