• Hive的介绍及安装


    简介

    Hive 是基于 Hadoop 的一个数据仓库工具,可以将结构化的数据文件 映射为一张数据库表,并提供类 SQL 查询功能。  

    本质是将 SQL 转换为 MapReduce 程序。

      Hive组件

        用户接口:包括 CLI、JDBC/ODBC、WebGUI。其中,CLI(command lineinterface)为 shell 命令行;JDBC/ODBC 是 Hive 的 JAVA 实现,与传统数据库JDBC 类似;WebGUI 是通过浏览器访问 Hive。

        元数据存储:通常是存储在关系数据库如 mysql/derby 中。Hive 将元数据存储在数据库中。Hive 中的元数据包括表的名字,表的列和分区及其属性,表的属性(是否为外部表等),表的数据所在目录等。

        解释器、编译器、优化器、执行器:完成 HQL 查询语句从词法分析、语法分析、编译、优化以及查询计划的生成。生成的查询计划存储在 HDFS 中,并在随后有 MapReduce 调用执行。

      Hive 与 Hadoop  的关系

        Hive  利用HDFS 存储数据,利用 MapReduce  查询分析数据

      Hive 与传统数据库 对比

        hive 用于海量数据的离线数据分析。

        hive 具有 sql 数据库的外表,但应用场景完全不同,hive 只适合用来做批量数据统计分析。

          1、具备数据存储的能力,使用Hadoop hdfs来进行数据的存储

    ​       2、具备ETL的能力,使用Hadoop MapReduce进行数据的ETL (提供sql转化成MapReduce的能力)

      Hive数据模型

        Hive 中所有的数据都存储在 HDFS 中,没有专门的数据存储格式,在创建表时指定数据中的分隔符,Hive 就可以映射成功,解析数据。

        Hive 中包含以下数据模型:

          db :在 hdfs 中表现为 hive.metastore.warehouse.dir 目录下一个文件夹

          table :在 hdfs 中表现所属 db 目录下一个文件夹

          external table :数据存放位置可以在 HDFS 任意指定路径

          partition :在 hdfs 中表现为 table 目录下的子目录

          bucket :在 hdfs 中表现为同一个表目录下根据 hash 散列之后的多个文件

      一些专业术语

    增量(上次导出之后的新数据):i_s.Peking.orders_20130711_000.lzo
    加密:i_s.peking.orders_20130711_000.md5
    表结构:i_s.peking.orders_20130711_000.xml

    全量(表中所有的数据):a_s.Peking.orders_20130711_000.lzo
    加密:a_s.peking.orders_20130711_000.md5
    表结构:a_s.peking.orders_20130711_000.xml

    PV:页面访问量,即PageView,用户每次对网站的访问均被记录,用户对同一页面的多次访问,访问量累计。
    UV:独立访问用户数:即UniqueVisitor,访问网站的一台电脑客户端为一个访客。一天内相同的客户端只被计算一次。

    数据仓库:Data Warehouse,简写为 DW 或 DWH
    数据库:database,简写DB

    联机事务处理 OLTP(On-Line Transaction Processing) --> 关系型数据库RDBMS
    联机分析处理 OLAP(On-Line Analytical Processing) --> 数据仓库

    ETL(抽取 Extra, 转化 Transfer, 装载 Load)

    源数据层(ODS)
    数据仓库层(DW)
    数据应用层(DA 或 APP)

    元数据(Meta Date)

     


     

    Hive MySQL版本的安装

        内置derby版缺点:不同路径启动 hive,每一个 hive 拥有一套自己的元数据,无法共享 

    •   安装hive

        上传hive的安装包并解压

        切换到hive安装目录的配置文件路径中修改配置信息

    cd /export/servers/hive/conf
    vi hive-env.sh
    export  HADOOP_HOME=/export/servers/hadoop-2.7.4
    vi hive-site.xml
    <configuration>
    <property>
    <name>javax.jdo.option.ConnectionURL</name>
    <value>jdbc:mysql://localhost: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>hadoop</value>
    <description>password to use against metastore database</description>
    </property>
    </configuration>
    •   安装mysql

    yum install -y mysql mysql-server mysql-devel 
    #启动mysql服务
    /etc/init.d/mysqld start
    mysql
    USE mysql;
    #设置用户及密码
    UPDATE user SET Password=PASSWORD('hadoop') WHERE user='root';
    #刷新权限
    FLUSH PRIVILEGES;
    #设置权限
    GRANT ALL PRIVILEGES ON . TO 'root'@'%' IDENTIFIED BY 'hadoop' WITH GRANT OPTION;
    #设置开机启动mysql服务
    chkconfig mysqld on

      注意把mysql数据库驱动mysql-connector-java-5.1.32.jar放置在hive lib/目录中


    启动hive前,先启动HDFS及YARN集群

    Hive几种使用方式:

      1.Hive交互shell bin/hive

      2.Hive JDBC服务(参考java jdbc连接mysql)

      3.hive启动为一个服务器,来对外提供服务
        bin/hiveserver2
        nohup bin/hiveserver2 1>/var/log/hiveserver.log 2>/var/log/hiveserver.err &

        启动成功后,可以在别的节点上用beeline去连接
        bin/beeline -u jdbc:hive2://mini1:10000 -n root

      或者
        bin/beeline
        ! connect jdbc:hive2://mini1:10000

      4.Hive命令
        hive -e ‘sql’
        bin/hive -e 'select * from t_test'

  • 相关阅读:
    前缀判断 蓝桥杯
    dedecms 网站内容静态化和动态化的切换
    dedecms 频道标签 channel.lib.php的分析
    JavaScript通过闭包解决只能取得包含函数中任何变量最后一个值的问题
    JavaScript闭包 取for循环i 【转】
    JavaScript装饰模式
    JavaScript闭包意义谈
    JavaScriptjs闭包测试
    JavaScript闭包的作用谈(转)
    Zend Engine 简介
  • 原文地址:https://www.cnblogs.com/jifengblog/p/9278026.html
Copyright © 2020-2023  润新知