Hive常见的报错信息

             Hive常见的报错信息

                                   作者:尹正杰

版权声明:原创作品,谢绝转载!否则将追究法律责任。

 

 

 

一.FAILED: SemanticException org.apache.hadoop.hive.ql.metadata.HiveException: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient

1>.错误复现

2>.错误原因

  Metastore默认存储在自带的derby数据库中,此时只需要去查看hive的安装目录是否有"derby.log(文件)""metastore_db(目录)",若没有则其实导致本报错的直接原因。

  生产环境中,推荐使用MySQL存储Metastore;

3>.解决方案

  参考我的部署笔记即可:
    https://www.cnblogs.com/yinzhengjie2020/p/13912307.html

 

二.FAILED: SemanticException org.apache.hadoop.hive.ql.metadata.HiveException: org.apache.hadoop.hive.ql.metadata.HiveException: MetaException(message:Hive metastore database is not initialized. Please use schematool (e.g. ./schematool -initSchema -dbType ...) to create the schema. If needed, don't forget to include the option to auto-create the underlying database in your JDBC connection string (e.g. ?createDatabaseIfNotExist=true for mysql))

1>.错误复现

2>.错误原因

  报错很明显了,说咱们未初始化元数据库,这时需要我们手动进行初始化操作,它提示咱们使用schematool工具来进行初始化哟~

3>.解决方案

  既然知道故障原因,解决起来就好办了,执行以下命令即可,而后重启Hive客户端。
    schematool -initSchema -dbType mysql

 

三.Error: Could not open client transport with JDBC Uri: jdbc:hive2://hadoop105.yinzhengjie.com:10000: Failed to open new session: java.lang.RuntimeException: org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.security.authorize.AuthorizationException): User: root is not allowed to impersonate jason (state=08S01,code=0)

1>.错误复现

2>.错误原因

  首先根据报错信息估计大家也能猜出来问题定位在哪里了,我们只需要捕捉关键字"AuthorizationException",说明就是认证出问题了。而Hive是需要访问Hadoop集群的,借助HDFS存储数据,借助MR集群,借助YARN进行资源调度。

  综上所述,我们需要为hive服务配置一个代理用户(该代理用户必须有权限访问Hadoop集群哟~),其代表其他用户的超级用户。我们先来看看官方是如何处理的,而后在模仿解决即可。

  官方配置代理用户案例:
    https://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-common/Superusers.html

3>.解决方案

  如果连接失败,请检查Hadoop的核心配置文件是否缺少下面2行参数,若没有请自行添加即可,添加后要重启Hadoop集群,否则可能并不生效哟~
    [root@hadoop101.yinzhengjie.com ~]# vim ${HADOOP_HOME}/etc/hadoop/core-site.xml 
    ......
        <!-- 当配置Hive时需要使用下面2个参数哟 -->
        <property>
            <name>hadoop.proxyuser.root.hosts</name>
            <value>*</value>
            <description>指定超级用户的代理主机,如果是"*"号,表示所有主机均可,此处的root对应的是root用户,你可以根据实际情况来进行修改哟~</description>
        </property>

        <property>
            <name>hadoop.proxyuser.root.groups</name>
            <value>*</value>
            <description>指定超级用户组,此处的root对应的是root组,你可以根据实际情况来进行修改哟~</description>
        </property>
    ......
    [root@hadoop101.yinzhengjie.com ~]#
  
  温馨提示:
    上述配置仅需在beeline客户端节点修改相应的配置信息即可,无需将配置同步到集群哟~   博主推荐阅读:     https:
//hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-common/Superusers.html

 

 

四.

 

 

五.

 

posted @ 2020-11-11 05:20  尹正杰  阅读(1451)  评论(0编辑  收藏  举报