Hive学习第一章:基本概念
1.1 什么是hive?
hive由Facebook开源用于解决海量结构化日志的数据统计,是基于hadoop的一个数据仓库工具,可以将结构化数据文件映射成一张表,并提供类SQL查询功能
本质:将HQL转化成MapReduce程序
- hive的计算存储在hdfs上
- hive底层分析数据的方式是mapreduce
- hive执行程序运行在yarn上
1.2 hive的优缺点
1.2.1 优点
- 操作接口采用类SQL语句,开发速度快,简单,容易上手
- 避免了写MapReduce,减少了学习成本
- hive有执行延迟情况,不适合于实时性的数据,适合用于数据分析
- hive适合处理大数据,不适合处理小数据,因为它有执行延迟比较高
- hive支持用户自定义函数,灵活性高
1.2.2 缺点
- HQL表达能力有限,对于迭代式的算法无法表达,不擅长数据挖掘
- 自动生成MapReduce作业,不够智能化,粒度较粗,不利于优化
1.3 hive的架构原理
元数据包括:表名、表所属的数据库、表的拥有者、列/分区字段、表的类型(是否是外部表)、表的所在目录等。元数据默认存储在derby数据库中,推荐使用MySQL的 MetaStore
1.4 hive和数据库的比较
1.4.1 查询语句
由于SQL被广泛的应用于数据仓库,因此针对hive专门设计了类SQL的HQL查询语句,方便进行开发
1.4.2 数据存储位置
hive是建立在hadoop的基础上,hive的数据储存都是在hdfs中的,而数据库可以将数据保存在块设备或者自己的本地文件系统中
1.4.3 数据更新
hive是针对数据仓库应用设计的,数据仓库的内容是读多写少,因此hive不建议对已有的数据进行改写,因为数据都是在加载的时候确定好的
1.4.4 索引
hive没有索引,访问满足条件的特定值的时候,需要暴力扫描整个数据,因此访问延迟较高
1.4.5 执行
hive大多数的查询是通过hadoop提供的MapReduce来实现的,而数据库通常有自己的执行引擎
1.4.6 执行延迟
一方面hive访问数据的时候是扫描整个数据,另一方面他的执行是通过MapReduce框架执行的,该框架本身具有延迟性
1.4.7 可扩展性
hive是基于hadoop的,所以其扩展性和hadoop一致的
1.4.8 数据规模
hive建立在集群上,并且可以利用MapReduce进行并行计算