zoukankan      html  css  js  c++  java
  • Hive——简介

    Hive——简介

    Hive 是基于 Hadoop 构建的一套数据仓库分析系统,它提供了丰富的 SQL 查询方式来分析存储在 Hadoop 分布式文件系统中的数据, 可以将结构化的数据文件映射为一张数据库表,并提供完整的 SQL 查询功能.可以将 SQL 语句转换为 MapReduce 任务进行运行,通过自己的 SQL 去 查询分析需要的内容,这套 SQL 简称 Hive SQL。

    Hive的产生背景及介绍

    产生背景

    1)MapReduce编程的不便性(MapReduce编程十分繁琐,而且不方便修改)

    2)HDFS上缺少Schema

    Hive是什么

            1)由FaceBook开源,最初用于解决海量结构化的日志数据统计问题

    2)构建在hadoop上的数据仓库

    3)Hive定义了一种类SQL查询语言:HQL(类似sql但不完全相同)

    4)通常用于进行离线数据处理(早期底层采用mapreduce)

    5)底层支持多种不同执行引擎

    6)支持多种不同的压缩格式、存储格式以及自定义函数

    (Hive现在的底层执行引擎支持很多包括spark(Hive on spark),mapreduce(Hive on mapreduce)、Tez(Hive on Tez))

    为什么要用Hive(Hive的优势)

            1)简单、容易上手(提供了类似sql查询语言hql)

    2)为超大数据集设计的计算/存储扩展能力(MR计算,HDFS存储)

    3)统一的元数据管理(可于Presto/Impala/SparkSQL等共享数据)

    Hive的发展历程

        在Hive的发展历程中,不得不提的就是Stinger 

        Stinger分了几个阶段来做:Phase 1、2、3 ,Stringer.next;这几个阶段对Hive性能的提升是非常至关重要的

        07/08 facebook 

        13/05 hive-0.11 Stinger Phase 1 加入了ORC/HiveServer2 

        13/10 hive-0.12 Stinger Phase 2 ORC improvement(对ORC做了些改善) 

        14/04 hive-0.13 Stinger Phase 3 Tez/Vectorized query engine(加入了Tez和支持向量化的查询) 

        14/11 hive-0.14 Stinger.next Phase 1 Cost-based optimizer(Cost-based简称CBO)

        (The Stinger Initiative making Apache Hive 100 times faster)

    Hive系统架构

        20171005232424576.png

    Command-line shell:shell操作客户端

    Trift/JDBC:Thrift代表一种协议/服务端启起来,客户端可以通过JDBC的方式去访问

    Driver:接收sql做相应的分析处理:

        1)首先将SQL语句转换成抽象语法树(抽象语法树拿到是不能执行的)

         2)将抽象语法树转换成逻辑执行计划

         3)对逻辑执行计划进行优化,形成物理执行计划,优化之后才能够变成作业去运行

    MapReduce:底层执行引擎

    HadoopStorage:计算结果输出存储

    Metastore:元数据存储

        1)metastore默认是存放在derby库中,通常现实中部署都是存放在mysql库中。其中生产上存储metastore的mysql要做HA.

         2)metastore包括的内容:

            1>:database: name,location,owner,name 

            2>:table: name,owner,location,column name/type/index,createtime

         3)hive的metastore是和Spark/impala通用的,例如在hive中创建一张表,在Spark/impala中也能使用,反之Spark/impala创建的表在hive中也能使用。

        

     Hive部署架构

    $8OXL1GPTSDA7O6ZXDI_$AI.png

    注意点:1)生产上部署时Hive的元数据存储的数据库要做主备。

                  2)Hive不需要部署在每台机器上,一台就行,他就是一个客户端,解析你的sql生成mr交给yarn运行

  • 相关阅读:
    开发3dMax插件的方法和应用
    实现X*N
    fork与vfork的区别
    使用递归算法写一段程序
    宏和函数的区别
    多线程学习(一)
    [算法天天练]堆排序
    [转][算法天天练]堆与堆排序
    [转]快速排序 挖坑讲解方法
    [算法天天练]选择排序法
  • 原文地址:https://www.cnblogs.com/jnba/p/10670888.html
Copyright © 2011-2022 走看看