Hive
简介
Hive由FaceBook开源用于解决海量结构化日志的数据统计技术
Hive是基与Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行
什么是Hive?
-
Hive是一个翻译器:SQL--->Hive引擎--->MapReduce程序
Hive是构建在HDFS上的一个数据仓库(Data Warehouse)
Hive | HDFS |
---|---|
表 | 目录 |
分区 | 目录 |
数据 | 文件 |
桶 | 文件 |
Hive支持SQL
为什么使用Hive
降低学习MapReduce的难度,使DBA,运维人员可以通过SQL来实现
-
Hive默认储存在HDFS上
-
Hive分析数据底层的默认实现时MapReduce
-
执行程序运行在yarn上
优点
- 操作接口采用了SQL语法,提供快速开发能力,简单易上手
- 避免了写MapReduce,减少了开发人员的学习成本
- Hive的执行延迟比较高,更适合对实时性要求不高的场合
- Hive适合于处理大数据量的统计
- Hive支持用户自定义函数,用户可以根据自己的需求来实现自己的函数
缺点
- Hive的HQL表达能力有限,迭代式算法无法表达,不擅长数据挖掘
- Hive的效率比较低,自动生成的MapReduce的作业,通常不够智能化,个性化
- Hive的调优难度较高
Hive体系结构
Hive的工作原理
Hive与数据库的对比
特性 | 数据库 | Hive |
---|---|---|
查询语言 | SQL | HQL |
存储位置 | 块设备或本地文件系统 | HDFS |
数据更新 | Update | 不建议修改,建议追加 |
索引 | 建立索引,提高效率降低延迟 | 没有索引,暴力搜索。使用MapReduce进行并行访问 |
执行引擎 | InnoDB等引擎 | MapReduce |
延迟 | 延迟较低 | 延迟较高 |
数据规模 | 较小 | 大数据(超出数据库处理能力) |
可扩展性 | 一般(Oracle理论最多100台) | 优秀(其实就是Hadoop的扩展性) |