zoukankan      html  css  js  c++  java
  • Ubuntu9.0 下安装 hive 0.8.1

    下载地址: http://mirrors.cnnic.cn/apache/hive/hive-0.8.1/
    hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供完整的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。 其优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析。
    Hive定义


    Hive[1] 是建立在 Hadoop 上的数据仓库基础构架。它提供了一系列的工具,可以用来进行数据提取转化加载(ETL),这是一种可以存储、查询和分析存储在 Hadoop 中的大规模数据的机制。Hive 定义了简单的类 SQL 查询语言,称为 HQL,它允许熟悉 SQL 的用户查询数据。同时,这个语言也允许熟悉 MapReduce 开发者的开发自定义的 mapper 和 reducer 来处理内建的 mapper 和 reducer 无法完成的复杂的分析工作。

    Hive 没有专门的数据格式。 Hive 可以很好的工作在 Thrift 之上,控制分隔符,也允许用户指定数据格式。

    把hive-0.8.1.tar.gz 放到当前的用户目录下。
    解压hive-0.8.1.tar.gz 包 ,tar -vxzf hive-0.8.1.tar.gz
    进入 hive-0.8.1 目录       cd hive-0.8.1
    进入conf 目录下 复制 并修改 hive-site.xml  cp hive-default.xml.template hive-site.xml
    修改hive-site.xml 配置,使用mysql 做为 hive的存储元数据的物理位置。
     sudo gedit hive-site.xml
     主要配置如下:

    <property>
      <name>javax.jdo.option.ConnectionURL</name>
      <value>jdbc:mysql://192.168.46.1: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>hive</value>
      <description>username to use against metastore database</description>
    </property>
    
    <property>
      <name>javax.jdo.option.ConnectionPassword</name>
      <value>hive</value>
      <description>password to use against metastore database</description>
    </property>
    <!-- 这是一个默认的存放目录-->
    <property>
      <name>hive.metastore.warehouse.dir</name>
      <value>/user/hive/warehouse</value>
      <description>location of default database for the warehouse</description>
    </property>
    这些配置很简单,一个是数据路径,一个是数据库驱动,用户名和密码。
    注:由于在linux下安装mysql 出了问题,所以数据库的路径可以是连到另外的一台windows 下的mysql.
    保存 hive-site.xml
    source hive-site.xml
    把hive-0.8.1 的安装目录配置到系统中。
    sudo gedit /etc/profile
    export HIVE_HOME=/home/liucheng/hive-0.8.1
    同时要配置到 path 中。
    source /etc/profile
    这样初步配置完了hive。
    第二步:我们给hive 配置用户。使用root 登陆mysql
    create user 'hive'@'%' identified by 'hive';  //添加hive 用户名 密码也为hive
    grant all privileges on *.* to 'hive'@'%' with grant option; //赋予权限
    flush privileges;// 强制写出
    接下来就可以使用 hive 登陆mysql了 图h00001.jpg


    第三步:到linux命令下启动hive
    cd hive-0.8.1
    ./bin/hive 
    就启动了hive
    重新启动是 ./bin/hive restart
    查看 hive 用户下的mysql ,会新建一个库为hive.同时,有几个表。

    创建一个示例表。

    hive> CREATE TABLE baobei_info (
        >   id INT,
        >   owner_id INT);
    
    会报一个异常。

    hive> CREATE TABLE baobei_info (
        >   id INT,
        >   owner_id INT);
    FAILED: Error in metadata: javax.jdo.JDODataStoreException: An exception was thrown while adding/validating class(es) : Specified key was too long; max key length is 767 bytes
    com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Specified key was too long; max key length is 767 bytes
        at sun.reflect.GeneratedConstructorAccessor24.newInstance(Unknown Source)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
        at com.mysql.jdbc.Util.handleNewInstance(Util.java:406)
        at com.mysql.jdbc.Util.getInstance(Util.java:381)....
    

    这个是hive 对mysql 的utf8 编码有问题 ,mysql 的默认字符集是utf8 不是 UTF-8.

    alter database hive character set latin1; 
    然后,再创建一次就可以了,如图:



    看一下,创建后的表在mysql 数据库中。


    多了几个表,那么哪几个表是存储我新建的表内容呢。


    看一下,这个表在 /user/hive/warehouse

    注:存储hive 的hdfs 的目录 具体目录是hdfs://localhost:9000/user/hive/warehouse/

        当我们要查看hive目录下的文件只能是上述的命令,因为 user目录下hive 与 当前用户(soliucheng)是同一级目录,可以到50070端口下查看这个文件夹。


      当使用./bin/hadoop fs -ls 只能查看到soliucheng 下的hdfs 文件夹。


  • 相关阅读:
    应用实例:用户登录(2009.10.23)
    ASP.NET学习笔记:服务器控件 (2009.11.9)
    小实例:模拟电话簿
    用Iframe实现左边TreeView导航,右边显示相应内容的布局
    HTML&CSS&JaveScript学习笔记(2009.11.19)
    C#中问号(?)的用法
    GridView的简单分页等
    GridView正反双向排序
    代码理解(2009.11.20)
    ASP.NET学习笔记:数据库操作 (2009.11.10)
  • 原文地址:https://www.cnblogs.com/java20130726/p/3218274.html
Copyright © 2011-2022 走看看