Hive的安装+相应问题

Hive的安装

下载

http://mirror.bit.edu.cn/apache/hive/

wget http://mirror.bit.edu.cn/apache/hive/hive-3.1.1/apache-hive-3.1.1-bin.tar.gz

安装+配置

  • 安装

      tar -zxvf apache-hive-3.1.1-bin.tar.gz
      mv apache-hive-3.1.1-bin   hive
      rm apache-hive-3.1.1-bin.tar.gz
    
  • 配置

      vim  /etc/profile
      添加
    
      #hive的env
      export HIVE_HOME=/root/hive
      export PATH=$PATH:$HIVE_HOME/bin
    
      source /etc/profile
    

hive配置

  • 生成配置文件

      cd  hive/conf
      cp hive-default.xml.template hive-site.xml
      cp hive-env.sh.template hive-env.sh
    
  • 配置文件

      vim hive-env.sh
      HADOOP_HOME=${HADOOP_HOME}
    
    
    
      vim hive-site.xml 
      添加
    
      <!-- 插入一下代码 (文末添加)-->
      <property>
          <name>javax.jdo.option.ConnectionUserName</name>用户名(这4是新添加的,记住删除配置文件原有的哦!)
          <value>root</value>
      </property>
      <property>
          <name>javax.jdo.option.ConnectionPassword</name>密码
          <value>LLTllt19970518</value>
      </property>
      <property>
          <name>javax.jdo.option.ConnectionURL</name>mysql
          <value>jdbc:mysql://maoerfei.cn:3306/hive</value>
      </property>
      <property>
          <name>javax.jdo.option.ConnectionDriverName</name>mysql驱动程序
          <value>com.mysql.jdbc.Driver</value>
      </property>
      <!-- 到此结束代码 -->
    

下载mysql.driver驱动+创建相应mysql的database

    wget https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-5.1.47.zip

    把mysql-connector-java-5.1.18-bin.jar移动到hive/lib目录下

    mysql创建对应的database :hive   (没用到)

启动hadoop(或者启动hdfs)+hive

    hadoop的sbin路径下
    start-all.sh
    
    启动hive
    hive

尝试命令

    show databases;

错误处理

错误:3210行未知字符

  • 解决
    注释掉3210行

错误:{system:java.io.tmpdir}的URISyntax解析不了

  • 显示

      Exception in thread "main" java.lang.IllegalArgumentException: java.net.URISyntaxException: Relative path in absolute URI: ${system:java.io.tmpdir%7D/$%7Bsystem:user.name%7D
          at org.apache.hadoop.fs.Path.initialize(Path.java:254)
          at org.apache.hadoop.fs.Path.<init>(Path.java:212)
          at org.apache.hadoop.hive.ql.session.SessionState.createSessionDirs(SessionState.java:644)
          at org.apache.hadoop.hive.ql.session.SessionState.start(SessionState.java:563)
          at org.apache.hadoop.hive.ql.session.SessionState.beginStart(SessionState.java:531)
          at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:705)
          at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:641)
          at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
          at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
          at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
          at java.lang.reflect.Method.invoke(Method.java:498)
          at org.apache.hadoop.util.RunJar.run(RunJar.java:234)
          at org.apache.hadoop.util.RunJar.main(RunJar.java:148)
      Caused by: java.net.URISyntaxException: Relative path in absolute URI: ${system:java.io.tmpdir%7D/$%7Bsystem:user.name%7D
          at java.net.URI.checkPath(URI.java:1823)
          at java.net.URI.<init>(URI.java:745)
          at org.apache.hadoop.fs.Path.initialize(Path.java:251)
          ... 12 more
    
  • 解决

    vim /conf/hive-site.xml

      修改配置
    
      <property>
          <name>Hive.exec.local.scratchdir</name>
          <value>/root/hive/tmp//${system:user.name}</value>
          <description>Local scratch space for Hive jobs</description>
        </property>
      
        <property>
          <name>hive.downloaded.resources.dir</name>
          <value>/root/hive/tmp/${hive.session.id}_resources</value>
          <description>Temporary local directory for added resources in the remote file system.</description>
        </property>
      
      <property>
          <name>hive.server2.logging.operation.log.location</name>
          <value>/root/hive/tmp/root/operation_logs</value>
          <description>Top level directory where operation logs are stored if logging functionality is enabled</description>
        </property>
    
  • 博客

      https://blog.csdn.net/wodedipang_/article/details/72718138
    

错误:无法加载mysql元数据,只能使用默认的数据库(schematool -initSchema -dbType mysql)

  • 显示

      SLF4J: Class path contains multiple SLF4J bindings.
      SLF4J: Found binding in [jar:file:/root/hive/lib/log4j-slf4j-impl-2.10.0.jar!/org/slf4j/impl/StaticLoggerBinder.class]
      SLF4J: Found binding in [jar:file:/root/hadoop/share/hadoop/common/lib/slf4j-log4j12-1.7.25.jar!/org/slf4j/impl/StaticLoggerBinder.class]
      SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
      SLF4J: Actual binding is of type [org.apache.logging.slf4j.Log4jLoggerFactory]
      Metastore connection URL:        jdbc:derby:;databaseName=metastore_db;create=true
      Metastore Connection Driver :    org.apache.derby.jdbc.EmbeddedDriver
      Metastore connection User:       APP
      Starting metastore schema initialization to 3.1.0
      Initialization script hive-schema-3.1.0.mysql.sql
      
      
      Error: Syntax error: Encountered "<EOF>" at line 1, column 64. (state=42X01,code=30000)
      org.apache.hadoop.hive.metastore.HiveMetaException: Schema initialization FAILED! Metastore state would be inconsistent !!
      Underlying cause: java.io.IOException : Schema script failed, errorcode 2
      Use --verbose for detailed
    
  • 解决

      在hive-site.xml配置末尾添加以下配置(因为上边写了默认的配置,需要覆盖)
    
    
      <property>
      <name>javax.jdo.option.ConnectionUserName</name>
      <value>mysql用户</value>
      </property>
      <property>
      <name>javax.jdo.option.ConnectionPassword</name>
      <value>mysql密码</value>
      </property>
      <property>
      <name>javax.jdo.option.ConnectionURL</name>mysql
      <value>jdbc:mysql://localhost:3306/hive</value>
      </property>
      <property>
      <name>javax.jdo.option.ConnectionDriverName</name>
      <value>com.mysql.jdbc.Driver</value>
       </property>
      <!-- 到此结束代码 -->
      
      <property>
      <name>hive.metastore.schema.verification</name>
      <value>false</value>
      </property>
    
    
      然后初始化
      schematool -initSchema -dbType mysql
    

${system:java.io.tmpdir}表示查找不到

  • 描述

      hive> show databases;
      OK
      Failed with exception java.io.IOException:java.lang.IllegalArgumentException: java.net.URISyntaxException: Relative path in absolute URI: ${system:user.name%7D
    
  • 解决

      将hive-site.xml相应的引路径 -> /root/hive/tmp的绝对路径
    

博客引用

https://www.cnblogs.com/dxxblog/p/8193967.html
对其作了相应的完善
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值