• Hive简介


    Hive简介

    第一节:hive的产生背景

          mapreduce处理的绝大多数的数据,都是格式化的数据。格式化的数据的处理sql最擅长。mapjoin  reducejoin的开发代码要写40行,而sql就一个sql语句就可以了,例如:select * from a join b on a.id=b.id;。

          mapreduce:开发周期比较长,人员成本高。

          Sql:成本低(时间,金钱)

          而hive是faceback开发的一个工具,实现用户写sql语句进行代码开发,最终执行转换mapreduce | tez (分布式计算),是基于hadoop的想让hadoop的开发更加轻便。

    第二节:hive的介绍

    一、概念

          基于hadoop,数据存储在hdfs,并且对客户端提供hql支持,将hql语句转换为mapreduce任务,hql方言版的sql。

    二、特点

          1、Hive 由 Facebook 实现并开源

          2、是基于 Hadoop 的一个数据仓库工具

          3、可以将结构化的数据映射为一张数据库表

          结构化的一条数据 --- 表中一行数据

          结构化每一个字段 --- 表中的一个列

          4、并提供 HQL(Hive SQL)查询功能

          对客户端提供hql查询

          5、底层数据是存储在 HDFS 上

          6、Hive的本质是将 SQL 语句转换为 MapReduce 任务运行

          hql----mapreduce

          7、使不熟悉 MapReduce 的用户很方便地利用 HQL 处理和计算 HDFS 上的结构化的数据

          8、适用于离线的批量数据计算。

    三、基于hadoop

          hive的表中的数据是存储在hdfs上的,存储完全依赖于hdfs;hive最终计算使用的默认mapreduce,资源调度用yarn。

    四、数据仓库

    1、数据仓库工具

          用于存储数据的,更加像一个数据的管理工具。用户存储各种用于分析的数据,存储的数据量比较庞大、结构复杂。大数据集的管理工具。

    2、数据库和数据仓库的区别

    (1)数据类型

          数据库: 一般存储某一个分析结果(可以直接进行sql的查询出结果,不用再进行数据的清洗)

          数据仓库: 面向主题,过程的 (存储原始数据,经过清洗的各个层次的数据,以及最后的结果数据,都可以进行存储)

          数据分析过程,各个层级的数据

          原始日志:flow.log

          抽层:etl ,对原始数据进行加工,对数据进行细化将需要分析的字段抽出来存储在一个个表中。

          分析是基于仓库中的数据。

    (2)使用场景上

          OLTP  On line Transaction Processing  联机事务处理(增、删、改)

          OLAP  On line analysis Processing  联机分析处理(查询)

          数据库:更加倾向于OLTP

          数据仓库:更加倾向于OLAP

          hive不支持数据的delete、update 支持insert,但是insert的效率极低

    (3)模式上

          数据库:mysql --- 写模式

    数据写入的时候进行校验(例如数据库中5个字段都是int类型的,在写的时候插入String类型就插不进去,所以是写入的时候进行校验的)

          hbase nosql 无严格模式

          数据仓库:hive --- 读模式

          数据读取的时候再校验的(表中只有3个字段,在写入要5个字段的时候是可以的,但最终在读取结果的还是只呈现3个,所以是在进行读的时候进行校验的)

    (4)事务支持

          数据仓库:不擅长事务的,hive不支持事务

          数据库:擅长事务的,mysql支持事务的

    第三节:hive的架构

    一、用户接口层

    1、概念

    给客户端使用的

    2、CLI(命令行)

          hive>

    hive的命令行操作界面

    3、JDBC/ODBC

          Java或其他语言操作hive需要进行jdbc/odbc的连接。一般是使用jdbc

    4、web ui

          一般不用,因为界面太丑、配置繁琐。

    二、跨语言服务层(thrift server)

          在用户接口层可以利用不同的语言,例如hql,java等语言来进行操作,但最终要经过thrift server进行语言的转换,使得hive可以对其进行识别。但其中CLI、web ui是可以直接去操作核心驱动的,不需要经过thrift server,而JDBC/ODBC是要经过转换的。

    三、元数据存储层(meta store)

          元数据:描述数据(hive表数据)的数据

          描述hive真实存储数据的数据,hive的表数据存储在hdfs的。

          hive中表的相关信息有:

    表和hdfs数据的路径对应关系

    表中的字段类型

    表中字段的顺序

    表的创建时间。。。

          这些信息就叫做hive的元数据信息(除了hive表中的数据信息)

          hive的元数据信息在存储的时候采用的是格式化存储。存储在关系型数据库,默认的元数据存储数据库derby,但derby存储的时候有缺陷的,一般生产上换成mysql。

    hive 表数据存储hdfs,元数据存储在关系型数据库。

    四、核心驱动层(Driver)

          (1) 解释器:解释器的作用是将 HiveSQL 语句转换为抽象语法树(AST)。解释hql语句中的核心的关键词,如:select  group by  order by  limit

          (2) 编译器:编译器是将语法树编译为逻辑执行计划。一个hql语句会转换为多个mapreduce任务、多个job。

          (3) 优化器:优化器是对逻辑执行计划进行优化。

          (4) 执行器:执行器是调用底层的运行框架执行,同时优化器优化完成的结果。

    第四节:hive的优缺点

    一、缺点

    (1)延时性高

    基于hadoop

    (2)hive对事务的支持很弱

          不擅长。行级别一般很少使用

    (3)hive不支持update、delete

          表数据 hdfs上,hdfs不支持修改,支持insert将insert的数据写入一个新的文件效率低。

    二、优点

          延展性好,内部提供271个内置函数,支持自定义函数。

  • 相关阅读:
    vs2010 在函数级别设置优化
    从快速排序开始的代码演化
    pocket API学习笔记
    工作笔记:复制文件--从windows到ubuntu,再到fedora
    Win10 64位 Apache 2.4+MySQL 5.7+PHP 7环境搭建
    Json简介
    TCP/IP 协议详解和运作过程
    PHP 编程中 10 个最常见的错误,你犯过几个?
    php中的扩展解析
    php.ini设置详解
  • 原文地址:https://www.cnblogs.com/lizm166/p/13354921.html
Copyright © 2020-2023  润新知