Hive安装与测试

Hive简介

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

    Hive不是数据库,更像是数据仓库,因为本质是HDFS+MR,所以它具备了HDFS的所有缺点,比如:不适合应用于实时系统、不能对行集数据进行增删改操作、用于处理离线批处理数据等。

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

    Hive的HQL和MySQL的SQL非常类似,很多命令都是通用的,比如创建数据库、创建表、查询、修改表结构等

Hive安装

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

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

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

    解压出来

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

    改一下文件目录名称(个人喜好)

    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数据库

    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不知道如何做分析并做出映射。

猜你喜欢

转载自my.oschina.net/u/3049601/blog/1816352