Hive简介、应用场景及架构原理
Hive背景介绍
Hive最初是Facebook为了满足对海量社交网络数据的管理和机器学习的需求而产生和发展的。马云在退休的时候说互联网现在进入了大数据时代,大数据是现在互联网的趋势,而hadoop就是大数据时代里的核心技术,但是hadoop的mapreduce操作专业性太强,所以facebook在这些基础上开发了hive框架,毕竟世界上会sql的人比会java的人多的多,hive可以说是学习hadoop相关技术的一个突破口,那些志立于投身hadoop技术开发的童鞋们,可以先从hive开始哦。那么,hive是什么呢?
Hive简介
简单的说:hive是基于hadoop的数据仓库。
那么为什么说hive是基于Hadoop的呢?
之所以说hive是构建在Hadoop之上的数据仓库,简单的说是因为:
①数据存储在hdfs上
②数据计算用mapreduce
下面我们来深入分析一下:
Hive是一种建立在Hadoop文件系统上的数据仓库架构,并对存储在HDFS中的数据进行分析和管理;它可以将结构化的数据文件映射为一张数据库表,并提供完整的 SQL 查询功能,可以将 SQL 语句转换为 MapReduce 任务进行运行,通过自己的 SQL 去查询分析需要的内容,这套 SQL 简称 Hive SQL(HQL),使不熟悉 MapReduce 的用户也能很方便地利用 SQL 语言对数据进行查询、汇总、分析。同时,这个语言也允许熟悉 MapReduce 开发
者们开发自定义的mappers和reducers来处理内建的mappers和reducers无法完成的复杂的
分析工作。Hive还允许用户编写自己定义的函数UDF,用来在查询中使用。Hive中有3种
UDF:User Defined Functions(UDF)、User Defined Aggregation
Functions(UDAF)、User Defined Table Generating Functions(UDTF)。也就是说对
存储在HDFS中的数据进行分析和管理,我们不想使用手工,我们建立一个工具吧,那么这个工具就可以是hive。
Hive常见的应用场景
Hive 并不适合那些需要低延迟的应用;
Hive 的最佳使用场合是大数据集的批处理作业,例如,网络日志分析。
(1)日志分析:大部分互联网公司使用hive进行日志分析,包括百度、淘宝等。
1)统计网站一个时间段内的pv、uv
2)多维度数据分析
(2)海量结构化数据离线分析
Hive的特点(优缺点)
(一)hive的优点
(1)简单容易上手:提供了类SQL查询语言HQL
(2)可扩展:为超大数据集设计了计算/扩展能力(MR作为计算引擎,HDFS作为存储系统)
一般情况下不需要重启服务Hive可以自由的扩展集群的规模。
(3)提供统一的元数据管理
(4)延展性:Hive支持用户自定义函数,用户可以根据自己的需求来实现自己的函数
(5)容错:良好的容错性,节点出现问题SQL仍可完成执行
(二)hive的缺点(局限性)
(1)hive的HQL表达能力有限
1)迭代式算法无法表达,比如pagerank
2)数据挖掘方面,比如kmeans
(2)hive的效率比较低
1)hive自动生成的mapreduce作业,通常情况下不够智能化
2)hive调优比较困难,粒度较粗
3)hive可控性差
Hive最后总结
简单容易上手:提供了类SQL查询语言HQL
可扩展:为超大数据集设计了计算/扩展能力(MR作为计算引擎,HDFS作为存储系统)
延展性:Hive支持用户自定义函数,用户可以根据自己的需求来实现自己的函数
容错:良好的容错性,节点出现问题SQL仍可完成执行
hive的HQL表达能力有限,比如迭代式算法无法表达
hive自动生成的mapreduce作业,通常情况下不够智能化
hive调优比较困难,粒度较粗
hive可控性差
Hive的默认存储格式:TEXTFILE