Java自学者论坛

 找回密码
 立即注册

手机号码,快捷登录

恭喜Java自学者论坛(https://www.javazxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,会员资料板块,购买链接:点击进入购买VIP会员

JAVA高级面试进阶训练营视频教程

Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程Go语言视频零基础入门到精通Java架构师3期(课件+源码)
Java开发全终端实战租房项目视频教程SpringBoot2.X入门到高级使用教程大数据培训第六期全套视频教程深度学习(CNN RNN GAN)算法原理Java亿级流量电商系统视频教程
互联网架构师视频教程年薪50万Spark2.0从入门到精通年薪50万!人工智能学习路线教程年薪50万大数据入门到精通学习路线年薪50万机器学习入门到精通教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程MySQL入门到精通教程
查看: 1022|回复: 0

Hadoop 3.1.3伪分布式环境安装Hive 3.1.2的异常总结

[复制链接]
  • TA的每日心情
    奋斗
    5 天前
  • 签到天数: 803 天

    [LV.10]以坛为家III

    2053

    主题

    2111

    帖子

    72万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    726482
    发表于 2021-4-27 12:04:26 | 显示全部楼层 |阅读模式

      背景:hadoop版本为3.1.3, 且以伪分布式形式安装,hive版本为3.1.2,hive为hadoop的一个客户端。

    1. 安装简要步骤

    (1) 官网下载apache-hive-3.1.2-bin.tar.gz,并解压缩

    (2) 进入conf配置文件夹,将hive-env.sh.template重命名为hive-env.sh,并在其中增加如下配置

    a. hadoop安装目录:export HADOOP_HOME=/home/ws/module/hadoop

    b. hive配置目录:export HIVE_CONF_DIR=/home/ws/module/hive/conf

    c. hive依赖包:export HIVE_AUX_JARS_PATH=/home/ws/module/hive/lib

    (3) 将hive-default.xml.template重命名为hive-site.xml

    1) 如果想使用默认的derby数据库,可以修改如下地方:

    a. 将配置文件中如下文本中for和transactional的非法字符删除或替换

    Ensures commands with OVERWRITE (such as INSERT OVERWRITE) acquire Exclusive locks fortransactional tables. This ensures that inserts (w/o overwrite) running concurrently are not hidden by the INSERT OVERWRITE.

    防止报异常:Hive throws: WstxParsingException: Illegal character entity: expansion character (code 0x8)

    b. 将配置文件中所有的${system:java.io.tmpdir}/${system:user.name}修改为绝对路径如/tmp/scratchdir,同理将${system:java.io.tmpdir}/${hive.session.id}_resources中的${system:java.io.tmpdir}也替换为一个绝对路径,否则会报异常:Caused by: java.net.URISyntaxException: Relative path in absolute URI: ${system:java.io.tmpdir%7D/$%7Bsystem:user.name%7D**

    c. 在javax.jdo.option.ConnectionURL属性中增加derby的路径,如下所示:

    jdbc:derby:/home/ws/module/hive/metastore_db;databaseName=metastore_db;create=true

    d. 配置好之后需要创建metada schema: schematool -initSchema -dbType derby

    e. 然后执行hive即可对hive命令行进行测试

    2) 因为derby数据库默认同时只允许一个用户连接,因此通常hive会使用mysql数据库,具体配置如下:

    a. 由于需要链接mysql,因此需要将mysql的jar包(博主采用mysql-connector-java-5.1.47.jar)放置在hive安装目录的lib文件夹下

    b. 可以不使用默认的hive-site.xml,而是直接在hive-site.xml只需要录入需要的属性配置信息:

    <configuration>
      <property>
        <name>javax.jdo.option.ConnectionURL</name>
        <value>jdbc:mysql://localhost:3306/metastore?createDatabaseIfNotExist=true&amp;useUnicode=true&amp;characterEncoding=UTF-8&amp;useSSL=false</value>
        <description>
          JDBC connect string for a JDBC metastore.
          To use SSL to encrypt/authenticate the connection, provide database-specific SSL flag in the connection URL.
          For example, jdbc:postgresql://myhost/db?ssl=true for postgres database.
        </description>
      </property>
    
      <property>
        <name>javax.jdo.option.ConnectionDriverName</name>
        <value>com.mysql.jdbc.Driver</value>
        <description>Driver class name for a JDBC metastore</description>
      </property>
    
      <property>
        <name>javax.jdo.option.ConnectionUserName</name>
        <value>root</value>
        <description>Username to use against metastore database</description>
      </property>
    
      <property>
        <name>javax.jdo.option.ConnectionPassword</name>
        <value>111</value>
        <description>password to use against metastore database</description>
      </property>
    
      <property>
        <name>hive.metastore.schema.verification</name>
        <value>false</value>
      </property>
    
            <property>
                    <name>datanucleus.readOnlyDatastore</name>
                    <value>false</value>
            </property>
            <property>
                    <name>datanucleus.fixedDatastore</name>
                    <value>false</value>
            </property>
            <property>
                    <name>datanucleus.autoCreateSchema</name>
                    <value>true</value>
            </property>
            <property>
                    <name>datanucleus.schema.autoCreateAll</name>
                    <value>true</value>
            </property>
            <property>
                    <name>datanucleus.autoCreateTables</name>
                    <value>true</value>
            </property>
    <property>
                    <name>datanucleus.autoCreateColumns</name>
                    <value>true</value>
            </property>
            <property>
                    <name>hive.metastore.local</name>
                    <value>true</value>
            </property>
            <!-- 显示表的列名 -->
            <property>
                    <name>hive.cli.print.header</name>
                    <value>true</value>
            </property>
            <!-- 显示数据库名称 -->
            <property>
                    <name>hive.cli.print.current.db</name>
                    <value>true</value>
            </property>
    </configuration>
    View Code

    c. 创建metada schema: schematool -initSchema -dbType mysql

    d. 然后执行hive即可对hive命令行进行测试

    2. 异常汇总

    (1) 部分遇到的异常,已在如上安装步骤中列出

    (2) 异常FAILED: HiveException java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient

    解决方案:需要创建metada schema:schematool -initSchema -dbType derby/mysql

    (3) 关于guava的异常:java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkArgument(ZLjava/lang/String;Ljava/lang/Object;)V

    解决方案:hive 3.1.2中默认的guava包为guava-19.0.jar,在https://mvnrepository.com/artifact/com.google.guava/guava下载比较新的guava包替换即可,博主使用的是guava-27.0-jre.jar

    3. 参考

    (1) https://askubuntu.com/questions/1073035/failed-hiveexception-java-lang-runtimeexception-unable-to-instantiate-org-apac

    (2) https://stackoverflow.com/questions/52783323/hive-throws-wstxparsingexception-illegal-character-entity-expansion-character

    (3) hive3.1.2安装 

    如有问题,留言联系!

     

     

    哎...今天够累的,签到来了1...
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|小黑屋|Java自学者论坛 ( 声明:本站文章及资料整理自互联网,用于Java自学者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-11-22 04:12 , Processed in 0.626706 second(s), 27 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表