Hive安装与测试

2021年11月21日 阅读数:7
这篇文章主要向大家介绍Hive安装与测试,主要内容包括基础应用、实用技巧、原理机制等方面,希望对大家有所帮助。

Hive简介

    学习Hive以前得先学习hdfs和mr,当学完mr以后会发现,操做数据仍是很麻烦,首先得具有必定的开发能力,还得对mr的原理有必定的了解才能写出对应的代码获得想要的结果,效率确实有点低下,不利于hadoop的发展,后来大神们就搞出了一套像写sql同样操做hdfs数据的分布式计算框架Hive。java

    Hive不是数据库,更像是数据仓库,由于本质是HDFS+MR,因此它具有了HDFS的全部缺点,好比:不适合应用于实时系统、不能对行集数据进行增删改操做、用于处理离线批处理数据等。mysql

    Hive是一套实现了类SQL的接口sql

    Hive的HQL和MySQL的SQL很是相似,不少命令都是通用的,好比建立数据库、建立表、查询、修改表结构等数据库

Hive安装

    从apache官方网站http://mirrors.shu.edu.cn/apache/hive/下载想要的版本,我下的1.2.2apache

    在虚拟机中可使用以下命令下载压缩包框架

    wget http://mirrors.shu.edu.cn/apache/hive/hive-1.2.2/apache-hive-1.2.2-bin.tar.gzeclipse

    解压出来分布式

    tar -xf apache-hive-1.2.2-bin.tar.gzoop

    改一下文件目录名称(我的喜爱)学习

    mv apche-hive-1.2.2-bin apache-hive-1.2.2

安装JDK

    这个就不详细写了,大概描述一下过程

    1.下载jdk

    2.解压

    3.在/etc/profile中配置环境变量

    4.使环境变量生效

        source /etc/profile

安装mysql

    参考MySQL安装与主从配置 的前半部分

    在mysql中建立hive数据库,用于存储Hive的元数据,好比数据库信息、表信息、表的列信息、表的分区信息、表的分桶信息等。

    mysql -uroot -p12340101

    mysql>create database hive character set latin1;//记住必定要将字符集设置为latin1,不然Hive不能正常工做

    hive目前支持derby和mysql来存储元数据,默认也是derby,可是它很是很差用,建议你们不要偷懒,仍是装一个MYSQL而后配置一下URL、USERNAME、PASSWORD就OK

配置Hive

    进入到Hive的安装目录

    cd conf

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

    vi hive-site.xml

    将以下内容粘贴到Hive中

<configuration>
<property>
  <name>javax.jdo.option.ConnectionURL</name>
    <value>jdbc:mysql://hadoop00:3306/hive?createDatabaseIfNotExist=true</value>
      <description>JDBC connect string for a JDBC metastore</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>12340101</value>
      <description>password to use against metastore database</description>
      </property>
</configuration>

    将mysql-connector-java-5.1.32.jar(mysql的驱动包)复制到Hive安装目录下的lib中

启动Hive

    进入到Hive安装目录的bin目录下

    ./hive

    

    建立一个数据库

    

    到eclipse可视化界面中查看hdfs结构上的变化

    

    能够看到建立一个数据库,就是在user/hive/warehouse下面新建了一个testdb.db的目录

    再看看建立一个表

    

    像mysql同样,得先选一个数据库,而后才能进行操做。

    再看看hdfs里面的变化

    

    能够看到一张表也是新增了一个目录,而后你们应该能够想到数据,最终在hdfs就是一个最小的单位文件了。

    在Hive中加载文件数据

    

    numFiles=1说明能够再添加更多的文件

    

    截图证实了上面的猜想。

    总结:Hive提供的HQL,本质上是执行的HDFS命令或者MR程序。数据利用文件存储,其余逻辑概念都是用目录实现,好比数据库、表、分区、分桶等

    注:上面命令都还只是为了说明Hive实现原理,若是使用select * from test_tbl查不出来数据,只有全部值为NULL的行,由于尚未告诉Hive数据文件的分隔符是什么,Hive不知道如何作分析并作出映射。