• 1.1- 1.2 hive入门


    一、hive是什么

    由Facebook开源用于解决海量结构化日志的数据统计;
    
    Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射成一张表,
    并提供类SQL查询功能;
    
    构建在Hadoop之上的数据仓库:
        使用HQL作为查询接口;
        使用HDFS存储;
        使用MapReduce计算;
    
    本质是:将HQL转化成MapReduce程序
    
    灵活性和扩展性比较好:支持UDF,自定义存储格式等;
    
    适合离线数据处理;


    二、为什么用hive?

    直接使用 MapReduce 所面临的问题:
    
      1、人员学习成本太高
    
      2、项目周期要求太短
    
      3、MapReduce实现复杂查询逻辑开发难度太大
    
    为什么要使用 Hive:
    
      1、更友好的接口:操作接口采用类 SQL 的语法,提供快速开发的能力
    
      2、更低的学习成本:避免了写 MapReduce,减少开发人员的学习成本
    
      3、更好的扩展性:可自由扩展集群规模而无需重启服务,还支持用户自定义函数


    三、hive特点

    优点:
    
      1、可扩展性,横向扩展,Hive 可以自由的扩展集群的规模,一般情况下不需要重启服务 横向扩展:通过分担压力的方式扩展集群的规模 纵向扩展:一台服务器cpu i7-6700k 4核心8线程,8核心16线程,内存64G => 128G
    
      2、延展性,Hive 支持自定义函数,用户可以根据自己的需求来实现自己的函数
    
      3、良好的容错性,可以保障即使有节点出现问题,SQL 语句仍可完成执行
    
    缺点:
    
      1、Hive 不支持记录级别的增删改操作,但是用户可以通过查询生成新表或者将查询结 果导入到文件中(当前选择的 hive-2.3.2 的版本支持记录级别的插入操作)
    
      2、Hive 的查询延时很严重,因为 MapReduce Job 的启动过程消耗很长时间,所以不能 用在交互查询系统中。
    
      3、Hive 不支持事务(因为不没有增删改,所以主要用来做 OLAP(联机分析处理),而 不是 OLTP(联机事务处理),这就是数据处理的两大级别)。


    四、hive与RDBMS对比

    image

    Hive 只适合用来做海量离线数 据统计分析,也就是数据仓库。


    五、hive架构

    image

    描述:

    #
    用户接口/界面                     
    Hive是一个数据仓库基础工具软件,可以创建用户和HDFS之间互动。
    用户界面,Hive支持是Hive的Web UI,Hive命令行,HiveHD洞察(在Windows服务器)。
              
    #
    元存储              
    Hive选择各自的数据库服务器,用以储存表,数据库,列模式或元数据表,它们的数据类型和HDFS映射。
    元数据包括:表名、表所属的数据库(默认是default)、表的拥有者、列分区字段、表的类型(是否是外部表)、表的数据所在目录等;
        
    默认存储在自带的derby数据库中,推荐使用采用MySQL存储Metastore;    
            
    #
    HiveQL处理引擎              
    HiveQL类似于SQL的查询上Metastore模式信息。这是传统的方式进行MapReduce程序的替代品之一。
    相反,使用Java编写的MapReduce程序,可以编写为MapReduce工作,并处理它的查询。
        
    
    #
    执行引擎              
    HiveQL处理引擎和MapReduce的结合部分是由Hive执行引擎。执行引擎处理查询并产生结果和MapReduce的结果一样。
    它采用MapReduce方法。
            
    
    #
    HDFS 或 HBASE              
    Hadoop的分布式文件系统或者HBASE数据存储技术是用于将数据存储到文件系统。
    
    
    #
    驱动器:Driver
    包含:解析器、编译器、优化器、执行器;
      解析器:将SQL字符串转换成抽象语法树AST,这一步一般都用第三方工具库完成,比如antlr;
             对AST进行语法分析,比如表是否存在、字段是否存在、SQL语义是否有误(比如select中被判定为聚合的字段在group by中是否有出现);
      编译器:将AST编译生成逻辑执行计划;
      优化器:对逻辑执行计划进行优化;
      执行器:把逻辑执行计划转换成可以运行的物理计划。对于Hive来说,就是MR/TEZ/Spark;
  • 相关阅读:
    Linux 下的类似Windows下Everything的搜索工具
    windows和linux环境下制作U盘启动盘
    程序调试手段之gdb, vxworks shell
    LeetCode 1021. Remove Outermost Parentheses (删除最外层的括号)
    LeetCode 1047. Remove All Adjacent Duplicates In String (删除字符串中的所有相邻重复项)
    LeetCode 844. Backspace String Compare (比较含退格的字符串)
    LeetCode 860. Lemonade Change (柠檬水找零)
    LeetCode 1221. Split a String in Balanced Strings (分割平衡字符串)
    LeetCode 1046. Last Stone Weight (最后一块石头的重量 )
    LeetCode 746. Min Cost Climbing Stairs (使用最小花费爬楼梯)
  • 原文地址:https://www.cnblogs.com/weiyiming007/p/10730678.html
Copyright © 2020-2023  润新知