Hive(一) 简单介绍 功能 优缺点
1.Hive概述Hive是基于Hadoop的开源的数据仓库框架,提供了一种类SQL的语言HQL来处理数据,使熟悉SQL的用户能查询数据。其原理是将HiveQL转换为MapReduce任务,从而完成海量数据的查询和分析。HiveQL能通过实现用户自定义函数(UDF)、用户自定义聚合函数(UDAF)、用户自定义表函数(UDTF)进行扩展。基于Hadoop,Hive具有以下特点:易于进行数据抽取、转换和
·
1.Hive概述
Hive是基于Hadoop的开源的数据仓库框架,提供了一种类SQL的语言HQL来处理数据,使熟悉SQL的用户能查询数据。其原理是将HiveQL转换为MapReduce任务,从而完成海量数据的查询和分析。Hive适合于数据仓库应用程序,使用该应用程序进行相关的静态数据分析,不需要快速响应给出结果,而且数据本身不会频繁变化。HiveQL能通过实现用户自定义函数(UDF)、用户自定义聚合函数(UDAF)、用户自定义表函数(UDTF)进行扩展。
基于Hadoop,Hive具有以下特点:
-
易于进行数据抽取、转换和加载(ETL)
-
支持多样的数据存储格式
-
能直接访问存储在HDFS上或者其他的数据存储系统(如HBase)上的文件
-
多种使用方式,支持shell交互式命令、JDBC、WebUI等
2.Hive的优点和缺点
优点:
-
支持海量数据的分析
-
有良好的可扩展性
-
有很好的容错性
-
使用HiveQL就能实现复杂的MapReduce程序,减少了开发难度
缺点:
-
延迟高,不能支持实时查询(MapReduce任务启动过程需要消耗较长的时间)
-
不支持记录级别的更新、插入或者删除操作(联机事务处理OLTP)
-
不支持事务
3.应用场景
Hive常用于以下方面:
-
大量数据的非实时分析(日志的统计分析)
-
数据挖掘(用户行为分析、关注点推荐)
-
数据汇总(统计用户每天、每周的点击数)
4.架构
(1)用户接口
shell/CLI,jdbc/odbc,web UI
-
shell/CLI:终端命令行,采用交互式使用Hive命令行与Hive进行交互,常用
-
jbc/odbc:是Hive的基于JDBC操作提供的客户端
-
Web UI:游览器访问
(2)Driver
所有的命令和查询都会进入到Driver(驱动模块),通过该模块对输入进行解析编译,对需求的计算进行优化,然后按照指定的步骤执行(通常是启动多个MapReduce任务来执行)
Hive 的核心是驱动引擎, 驱动引擎由四部分组成:
-
解释器:解释器的作用是将 HiveSQL 语句转换为抽象语法树(AST)
-
编译器:编译器是将语法树编译为逻辑执行计划
-
优化器:优化器是对逻辑执行计划进行优化
-
执行器:执行器是调用底层的运行框架执行逻辑执行计划
(3)Metastore(元数据存储)
是一个独立的关系型数据库(通常是一个Mysql实例)
元数据:存储在 Hive 中的数据的描述信息
Hive 中的元数据通常包括:表的名字,表的列和分区及其属性,表的属性(内部表和 外部表),表的数据所在目录
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
已为社区贡献3条内容
所有评论(0)