0%

Ubuntu16安装HIVE全程记录

为了方便的使用hdfs,我安装个hive,记录如下。

什么是 Hive

  • Hive 由 Facebook 实现并开源,是基于 Hadoop 的一个数据仓库工具,可以将结构化的数据映射为一张数据库表,并提供 HQL(Hive SQL)查询功能,底层数据是存储在 HDFS 上。
  • Hive 本质: 将 SQL 语句转换为 MapReduce 任务运行,使不熟悉 MapReduce 的用户很方便地利用 HQL 处理和计算 HDFS 上的结构化的数据,是一款基于 HDFS 的 MapReduce 计算框架
  • 主要用途:用来做离线数据分析,比直接用 MapReduce 开发效率更高。但是运行还是一样的慢~

安装-数据获取

1
wget https://mirrors.tuna.tsinghua.edu.cn/apache/hive/hive-3.1.2/apache-hive-3.1.2-bin.tar.gz

然后解压

1
tar -zxvf apache-hive-3.1.2-bin.tar.gz

image-20190904154919744

安装-配置

  1. hive conf 配置

    进入到 解压后的hive目录 找到 conf目录, 修改配置文件

    1
    2
    cp hive-env.sh.template hive-env.sh
    vi hive-env.sh

    在hive-env.sh中指定hadoop的路径

    1
    HADOOP_HOME=/home/parallels/app/hadoop-3.1.2

    image-20190904155205013

    在系统环境变量里添加(我的是在 ~/.bashrc) 并 source该文件,使其生效。

    1
    2
    export HIVE_HOME=/home/hadoop/app/hive-1.1.0-cdh5.7.0
    export PATH=$HIVE_HOME/bin:$PATH
  1. 数据库参数配置

    1. 配置日志(不管有没有问题,先把日志配上,不然后面不好定位问题)

      1
      2
      3
      4
      5
      6
      $ cp hive-log4j2.properties.template hive-log4j2.properties
      $ vi hive-log4j2.properties

      配置property.hive.log.dir
      property.hive.log.dir =/opt/hive/apache-hive-3.1.1/logs
      ##注意:logs需要自己创建,在hive目录下mkdir logs)
    2. 配置hive-site.xml

      配置与mysql的连接。包括 MySql用户、密码、连接地址、驱动。

      其中驱动需要下载、解压jar至hive目录的lib下。

      下载驱动。解压后放入lib目录下

      l
      1
      wget https://mirrors.tuna.tsinghua.edu.cn/mysql/downloads/Connector-J/mysql-connector-java-5.1.48.tar.gz

      下面配置连接信息。

      1
      cp hive-default.xml.template   hive-site.xml

      找到以下节点并修改

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
       <property>
      <name>javax.jdo.option.ConnectionUserName</name>
      <value>hive</value><!-- 指定mysql用户名 -->
      </property>
      <property>
      <name>javax.jdo.option.ConnectionPassword</name>
      <value>hive</value><!-- 指定mysql密码 -->
      </property>
      <property>
      <name>javax.jdo.option.ConnectionURL</name>
      <value>jdbc:mysql://127.0.0.1:3306/hive</value>
      </property><!-- 指定mysql数据库地址 -->
      <property>
      <name>javax.jdo.option.ConnectionDriverName</name>
      <value>com.mysql.jdbc.Driver</value><!-- 指定mysql驱动 -->
      </property>

      在最前面添加以下2个节点,其中system:java.io.tmpdir对应的value值是你自己建立目录的路径。

      1
      2
      3
      4
      5
      6
      7
      8
      <property>
      <name>system:java.io.tmpdir</name>
      <value>你自己建立的目录</value>
      </property>
      <property>
      <name>system:user.name</name>
      <value>${user.name}</value>
      </property>

      hive.metastore.schema.verification value值改为false

  2. mySql中的Hive需要初始化

    该操作是初始化hive数据库中的与元数据相关的表。不要忘记!

    1
    schematool -dbType mysql -initSchema

启动

首先,执行hive —service metastore 启动Thrift服务端

1
hive --service metastore

然后执行hive命令

1
hive

image-20190904212215830

如果没有得到你想要的结果,请在你配置的property.hive.log.dir路径下查看日志,比上网查找原因有用多了,因为配置项比较多,每个人的原因不尽相同。

比如我,进入hive后,在show databases; 总是提示:Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient,后面经过排查是没有初始化mysql的元数据信息。同时,网上因版本问题,配置的方法可能并不适用,自己多看日志多思考。

其他

ubuntu16.04中开启和关闭防火墙

  1. 开启防火墙

    ufw enable

  2. 关闭防火墙

    ufw disable

参考&致谢

https://blog.csdn.net/weixin_44105991/article/details/97780778

https://blog.csdn.net/zhangvalue/article/details/84282827

觉得不错?