Hive的概念工作流程优劣势架构介绍
Posted 互联网IT信息
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Hive的概念工作流程优劣势架构介绍相关的知识,希望对你有一定的参考价值。
1. Hive的简介
概念:
Hive是一个基于Hadoop的开源数据仓库解决方案。它使用HDFS作为数据存储层;提供一种类SQL的语言HiveQL,通过将HiveQL语句编译成MapReduce完成数据的计算。同时,对于复杂的分析工作,Hive支持用户自定义MapReduce任务。
在Facebook,Hive数据仓库包括几千张表和超过700T的数据,并被超过100个用户用于报表和即时查询。
2. Hive设计的目的:
Hive设计目的就是用来管理和查询结构化数据,它屏蔽了底层将sql语句转换为MapReduce任务过程,为用户提供的简单的SQL语句,将用户从复杂的MapReduce编程中解脱出来。
简单来说,Hive就是在Hadoop上架了一层SQL接口,可以将SQL翻译成MapReduce去Hadoop上执行,这样就使得数据开发和分析人员很方便的使用SQL来完成海量数据的统计和分析,而不必使用编程语言开发MapReduce那么麻烦。
3. Hive工作流程图
Hive提供了一系列的工具,可以用来进行数据提取转化加载(ETL),这是一种可以存储、查询和分析存储在 Hadoop 中的大规模数据的机制。Hive 定义了简单的类 SQL 查询语言,称为 HQL,它允许熟悉 SQL 的用户查询数据。同时,这个语言也允许熟悉 MapReduce 开发者开发自定义的 mapper 和 reducer 来处理内建的 mapper 和 reducer 无法完成的复杂的分析工作
4. 使用Hive的原因
1)简单易上手。提供了类sql查询语言HQL,提供快速开发的能力。
2)避免了去写MapReduce,减少开发人员的学习成本。
3)统一的元数据管理(Hcalalog),可与pig,presto等共享。
4)为超大数据集设计的计算/扩展能力。MR作为计算引擎,HDFS作为存储系统。
5. Hive的特点
1)可扩展Hive可以自由的扩展集群的规模,一般情况下不需要重启服务。
2)延展性Hive支持用户自定义函数,用户可以根据自己的需求来实现自己的函数。
3)容错良好的容错性,节点出现问题SQL仍可完成执行。
6. Hive与SQL的比较
1 查询语言
1)hive使用类SQL的HQL
2)sql使用sql
2 数据存储位置
1) hive是将数据存储在HDFS中
2) sql可以将数据保存在块设备或者本地文件系统中
3 数据格式
1) Hive 中没有定义专门的数据格式,数据格式可以由用户指定,用户定义数据格式需要指定三个属性:列分隔符(通常为空格、”\t”、”\x001″)、行分隔符(”\n”) 2)以及读取文件数据的方法(Hive 中默认有三个文件格式 TextFile,SequenceFile 以及 RCFile)
数据库中,不同的数据库有不同的存储引擎,定义了自己的数据格式
4 数据更新
1) Hive 中不支持对数据的改写和添加,所有的数据都是在加载的时候中确定好的
2) sql支持数据更新
5 执行延迟
1) hive延迟性高
2) sql延迟性低
6 扩展性
1) hive扩展性好
2) sql扩展性有限
7 索引
hive和sql都支持索引
8 分区
hive和sql都支持分区
7. Hive的架构
8. Hive核心概念解释
元数据仓库(MetaStore):
1)存储元数据的组件,Hive的元数据保存了表的属性和服务信息,为查询操作提供依据。
2)使用RDBMS存储元数据;
3)默认使用Deby存储,常用mysql进行存储;
驱动(Driver):
1)包括:解析器,编译器,优化器,执行器
2)当执行一个HiveQL时,控制HiveQL的生命周期,同时维护着会话句柄及进行会话统计。
3)查询编译器(Query Compiler):
将HiveQL编译成有向无环图形式的map/reduce任务,当有HiveQL经过Driver,HiveQL会先经过Query Compiler
4)优化器(Opeimizer)
5)执行引擎(Execution Engine):按照顺序执行由编译器产生的任务;
Thrift 服务(Thrift Server):
一种跨语言服务的可伸缩软件框架;
客户端接口
1)JDBC/ODBC接口:还不成熟,不支持所有的JDBC/ODBC API;
2)命令行接口(Command Line Interface)
3)Web Interface
以上是关于Hive的概念工作流程优劣势架构介绍的主要内容,如果未能解决你的问题,请参考以下文章