码迷,mamicode.com
首页 > 其他好文 > 详细

hive之简介

时间:2019-06-17 01:07:49      阅读:119      评论:0      收藏:0      [点我收藏+]

标签:join   str   mys   web   proc   信息   数据读取   语法   upd   

第一节: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个内置函数,支持自定义函数。

hive之简介

标签:join   str   mys   web   proc   信息   数据读取   语法   upd   

原文地址:https://www.cnblogs.com/zhangxiaofan/p/11037373.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!