初识HIVE
Hive是构建在hadoop之上的数据仓库。不是用来增删改查的那种数据库,那是数据库。
1)数据计算是MapReduce
2)数据存储是HDFS
认识 Hive
Hive 是基于 Hadoop 构建的一套数据仓库分析系统,它提供了丰富的 SQL 查询方式来分析存储在 Hadoop 分布式文件系统中的数据, 可以将结构化的数据文件映射为一张数据库表,并提供完整的 SQL 查询功能,可以将 SQL 语句转换为 MapReduce 任务进行运行,通过自己的 SQL 去 查询分析需要的内容,这套 SQL 简称 Hive SQL,使不熟悉 MapReduce 的用户很方便地利用 SQL 语言查询、汇总、分析。核心仍然是mapreduce作业。
Hive常见的应用场景
1、日志分析
1)统计网站一个时间段内的pv、uv
2)从不同维度进行数据分析
2、海量结构化数据离线分析
Hive的优点
1、简单容易入手
2、它是为超大数据集而设计的计算和扩展能力
3、提供统一的元数据管理
Hive的缺点
1、Hive的HQL的表达能力有限
1)迭代式算法无法表达,比如pagerank。
2)数据挖掘方面,比如kmeans。
2、Hive的效率比较低
1)hive自动生成的MapReduce作业,通常情况下不够智能化。
2)hive调优比较困难
3)hive可控性比较差
Hive的基本框架
Hive的组成部分
1、用户接口
CLI、JDBC/ODBC、WebUI
2、元数据存储(MetaStore)
默认derby数据库,真实环境一般使用mysql数据库
3、驱动器(Driver)
解释器、编译器、优化器、执行器
4、hadoop分布式集群
利用MapReducer分布式计算,利用HDFS分布式存储
Hive工作原理
MapReduce 开发人员可以把自己写的 Mapper 和 Reducer 作为插件支持 Hive 做更复杂的数据分析。 它与关系型数据库的 SQL 略有不同,但支持了绝大多数的语句(如 DDL、DML)以及常见的聚合函数、连接查询、条件查询等操作。
Hive 不适合用于联机(online) 事务处理,也不提供实时查询功能。它最适合应用在基于大量不可变数据的批处理作业。Hive 的特点是可 伸缩(在Hadoop 的集群上动态的添加设备),可扩展、容错、输入格式的松散耦合。Hive 的入口是DRIVER ,执行的 SQL 语句首先提交到 DRIVER 驱动,然后调用 COMPILER 解释驱动, 最终解释成 MapReduce 任务执行,最后将结果返回。