zoukankan      html  css  js  c++  java
  • Hive入门--1.简介与环境搭建

    Hive入门

      hive是一个数据仓库,用于存储海量格式化数据,方便开发人员对其使用SQL语言进行数据分析。
      它的所有表中的数据存放在 hdfs 文件系统中,保证了数据的可靠性,安全性
      它的表的描述信息 metastore(包括表字段定义、文件在hdfs中的映射位置)存放在单独的数据库中,默认的是derby本地文件数据库,大多情况下使用 mysql 进行存储

    7.1.1 derby数据库的特点

    derby数据库以metastore_db文件形式存储在本地HIVE_HOME/bin目录下,因为是以当前启动hive脚本的目录作为参照的。如果切换至其他目录下,重新启动hive脚本,则会在该目录下重新创建一个metastore_db文件。

    该数据库的缺点

    1.只支持一个连接
    2. 不能共享数据
    

    所以一般应用中,我们使用mysql最为hive的metastore

    下面将介绍hive(数据仓库)+mysql(metastore)的安装

    安装Hive

    Hive只在一个节点上安装即可

    1 上传tar包

    2 解压

    tar -zxvf hive-0.9.0.tar.gz -C /itcast/
    

    3 配置mysql metastore(需切换到root用户)

    **安装mysql Server**
    

    使用

    rpm -ivh MySQL-server-5.1.73-1.glibc23.i386.rpm
    

    命令安装mysqlserver 出现包冲突的解决方法:
    这里写图片描述
    1)切换到 /root目录下,执行如下命令:

    rpm -qa | grep mysql
    

    找到mysql的安装目录
    2)强制擦除该安装包并解除依赖

    rpm -e mysql-libs-5.1.66-2.el6_3.i686 –nodeps
    

    3)再次安装server

    rpm -ivh MySQL-server-5.1.73-1.glibc23.i386.rpm 
    

    为了配置方便,我们将客户端也安装上去

    rpm -ivh MySQL-client-5.1.73-1.glibc23.i386.rpm 
    

    mysql安装时配置
    1)修改mysql的密码
    使用默认的提示初始化mysql:

    /usr/bin/mysql_secure_installation
    (注意:删除匿名用户,允许用户远程连接)
    

    注:如果出现mysql.sock找不到的错误
    先在/usr/share/mysql目录下尝试启动mysql.server后再次尝试初始化mysql配置

    删除匿名用户:Y
    不允许远程连接:n
    
    登陆mysql
    mysql -u root -p
    password:***(由自己设定)
    

    4 配置hive,将mysql作为hive的metastore

    vim  hive-site.xml 
    

    修改hive-site.xml,删除其他内容,只留如下内容:

    <?xml version="1.0"?>
    <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
    
    <configuration>
        <property>
        </property>
    </configuration>

    添加如下内容:

        数据库不存在时创建该数据库
        <property>
            <name>javax.jdo.option.ConnectionURL</name>
        <value>jdbc:mysql://itcast**:3306/hive?createDatabaseIfNotExist=true</value>
            <description>JDBC connect string for a JDBC metastore</description>
        </property>
        Jdbc名称
        <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>123</value>
          <description>password to use against metastore database</description>
        </property>
    (可选配置)
    //Metastore在hdfs上自定义的路径
    hive.metastore.warehouse.dir
    //每次执行hive所产生的log存放路径
    hive.querylog.location
    

    5 安装hive和mysql完成后,将mysql的连接jar包拷贝到$HIVE_HOME/lib目录下

    如果出现没有权限的问题,在mysql**授权**(在安装mysql的机器上执行)

    mysql -uroot -p
    #(执行下面的语句  *.*:所有库下的所有表   %:任何IP地址或主机都可以连接)
    GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123' WITH GRANT OPTION;
    


    为了安全起见,可以缩小授权范围,例如只允许itcast03连接该数据库 :

        mysql>GRANT ALL PRIVILEGES ON hive.* TO 'root'@'itcast03' IDENTIFIED BY '123' WITH GRANT OPTION; 
    代表授权itcast03访问hive数据库下的所有表
    *.*  ---》 数据库名.表名
    

    刷新数据库配置:

        mysql> FLUSH PRIVILEGES; 

    6 访问hive的方式

    1、 hive 命令行模式

    直接输入 /$HiveHome/bin/hive 启动hive程序,进入hive命令行,如果在环境变量中已经配置了HIVE_HOME,那么输入:

    # hive

    就可以启动
    hive –service cli
    用于linux平台命令行查询,查询语句基本跟mysql查询语句类似
      1.1 hive中“一次使用”命令:hive -e “SQL…”
      这种方式的优点在于可以不进入hive命令行,就可以执行Hql语句
    例如:

    [root@itcast05 ~]# hive -e "select * from student"
    
    Logging initialized using configuration in file:/itcast/apache-hive-0.13.0-bin/conf/hive-log4j.properties
    OK
    1       tom
    2       jerry
    3       jim
    Time taken: 1.568 seconds, Fetched: 3 row(s)
    

    配合linux的数据重定向,还可以将这个查询数据输出到本地文件中:

    [root@itcast05 ~]# hive -S -e "select * from student" > /root/qout1.txt
    [root@itcast05 ~]# cat qout1.txt 
    1       tom
    2       jerry
    3       jim


      1.2 hive中“一次使用”命令:hive -f 本地文件路径
      首先需要准备好文件,里面写好了SQL语句内容,比如:

    [root@itcast05 ~]# cat hivequery.hql 
    select * from student;

       接着,我们用一下这个 hive -f 命令,像这样: 

    [root@itcast05 ~]# hive -f /root/hivequery.hql 
    
    Logging initialized using configuration in file:/itcast/apache-hive-0.13.0-bin/conf/hive-log4j.properties
    OK
    1       tom
    2       jerry
    3       jim
    Time taken: 2.114 seconds, Fetched: 3 row(s)


      1.3 小技巧:使用hive -e 命令模糊查找hive配置属性名
      当用户不能完整记清楚某个属性名时,可以使用下面这个技巧模糊获取这个属性名,免除使用set命令查找。假设用户没记清哪个属性指定了管理表的“warehouse”的路径,通过如下命令可以查看到:

    [root@itcast05 ~]# hive -S -e "set" | grep warehouse
    hive.metastore.warehouse.dir=/user/hive/warehouse
    hive.warehouse.subdir.inherit.perms=false

    -S:屏蔽无用提示信息,只显示结果

    2、 hive web界面的启动方式(不太常用)

    hive –service hwi  
    用于通过浏览器来访问hive
    


    3、 hive 远程服务 (端口号10000) 启动方式

    # hive –service hiveserver  &


      用java等程序实现通过jdbc等驱动的访问hive就用这种起动方式了,这个是程序员最需要的方式了
      也可以自己指定端口 hive --service hiveserver -p 50000 & (&表示后台运行)
      输入完这些指令后终端就在运行hiveserver了,会卡住不动。其实已经在运行了,不用担心。

    使用经验:1、3方式居多,2很少用

    ## 7.8 Hive与传统数据库比较 ##

    查询语言 HiveQL SQL
    数据存储位置 HDFS Raw Device or 本地FS
    数据格式 用户定义 系统决定
    数据更新 不支持 支持
    索引 新版本有,但弱
    执行 MapReduce Executor
    执行延迟
    可扩展性
    数据规模
  • 相关阅读:
    python 计时累积超过24小时时继续往上累加
    linux 下获取文件最后几行
    unbuntu 安装python包提示E: Unable to locate package python-timeout
    python 计时器
    jquery中html()、text()、val()的区别
    DESC和 ACS
    jQuery自动截取文字长度,超过部分
    Spring MVC 注解
    注解笔记
    Spring Data JPA初使用 *****重要********
  • 原文地址:https://www.cnblogs.com/shiguangmanbu2016/p/5932843.html
Copyright © 2011-2022 走看看