目录
8、table(内部表)和external table(外部表)
1、Hive 的概念
- 1、Hive 由 Facebook 实现并开源 ;
- 2、Hive 是基于 Hadoop 的一个数据仓库工具 ;
- 3、Hive 存储的数据其实底层存储在 HDFS 上 ;
- 4、Hive 将 HDFS 上的结构化的数据映射为一张数据库表;
- 5、Hive 提供 HQL(Hive SQL)查询功能 ;
- 6、Hive 的本质是将 SQL 语句转换为 MapReduce 任务运行,使不熟悉 MapReduce 的用户很方便地利用 HQL 处理和计算 HDFS 上的结构化的数据,适用于离线的批量数据计算 ;
- 7、Hive 使用户可以极大简化分布式计算程序的编写,而将精力集中于业务逻辑 。
注释:
①hive是基于hadoop(Hadoop 是 Apache 旗下的一套开源软件平台)的一个数据仓库工具;
②数据的存储媒介有:
- 磁盘【优点:安全(掉电数据不丢失)、单价低;缺点:随机读写慢。】
- 内存【优点:随机读写快;缺点:掉电丢失数据,单价高】
③存储数据有那些方式:
- 数据库【底层是基于文件系统来实现的,但是数据经过特定格式的组织。优点:底层媒介是磁盘(数据安全),格式特殊(操作快速);缺点:当单表遇到的数据记录条数超过千万级的时候,一般来说,必须要进行分库分表进行存储(麻烦),不能存储非常大量的数据】
- 文件系统【直接存储成普通的文件;(分布式文件系统HDFS:一台服务器不能解决的存储问题,组织多台服务器成一个存储整体来解决,管理员把数据文件拆分成多个小文件进行存储,每台服务器存储其中的一个小文件,为了防止一个分布式系统中的某个服务器宕机造成数据丢失,对数据小块进行冗余备份。优点:能存储大量文件(大文件),支持大规模并发读取;劣势:不能针对单条记录进行增删改查,大规模并发写入比较差,HDFS不支持超多的小文件的存储】
④分布式的并行计算框架MapReduce:
- 针对大批量的数据库难以处理的数据,有了hadoop软件平台的分布式文件系统HDFS对数据进行分布式存储,那么还需有分布式并行计算框架( MapReduce) 来解决超大文件的计算问题。Map分布式并行计算,Reduce再将计算结果进行整合。但是mapreduce 代码复杂,学习成本高,同时mapreduce的执行效率是比较低下的。
⑤hadoop的核心组件
- RPC:主管这个整体中的多台服务器之间的网络通信
- HDFS:分布式文件系统,用来解决超大文件的存储问题
- MapReduce:分布式并行计算框架,用来解决超大文件的计算问题
- YARN:运算资源调度器。如果我碰到一个超大的超级复杂的计算业务,那么需要很多的计算资源来执行计算,就是为对应的用户的庞大复杂计算任务提供计算资源的
⑥为什么使用 Hive
- 直接使用 MapReduce 的问题:人员学习成本太高,项目周期要求太短,MapReduce 实现复杂查询逻辑开发难度太大。
- 为什么要使用 Hive:更友好的接口(操作接口采用类 SQL 的语法,提供快速开发的能力);更低的学习成本(避免了写MapReduce,减少开发人员的学习成本);更好的扩展性(可自由扩展集群规模而无需重启服务,还支持用户自定义函数)。
⑦Hive的执行效率
- Hive 依赖于 HDFS 存储数据,Hive 将 HQL 转换成 MapReduce 执行。那么Hive就只是减轻编程压力,并不会解决执行效率低的问题;spark -----> mapreduce 就会提升执行效率。
2、Hive 的特点
优点:
- 可扩展性,横向扩展。Hive 可以自由的扩展集群的规模,一般情况下不需要重启服务。横向扩展:通过分担压力的方式扩展集群的规模;纵向扩展: 一台服务器cpu i7-6700k 4核心8线程, 8核心16线程,内存64G => 128G
- 延展性。Hive 支持自定义函数,用户可以根据自己的需求来实现自己的函数
- 良好的容错性。可以保障即使有节点出现问题,SQL 语句仍可完成执行
缺点:
- Hive 不支持记录级别的增删改操作。但是用户可以通过查询生成新表或者将查询结果导入到文件中( hive-2.3.X 的版本支持记录级别的插入操作)
- Hive 的查询延时很严重。因为 MapReduce Job 的启动过程消耗很长时间,所以不能用在交互查询系统中。
- Hive 不支持事务。因为没有增删改,所以主要用来做 OLAP(联机分析处理),而不是 OLTP(联机事务处理),这就是数据处理的两大级别
3、Hive 和 RDBMS(关系型数据库) 的对比
4、Hive 和 HBase 的差别
Hive | HBase |
Hive 是建立在 Hadoop 之上为了降低 MapReduce 编程复杂度的 ETL 工具。 | HBase 是为了弥补 Hadoop 对实时操作的缺陷 |
Hive 表是纯逻辑表,因为 Hive 的本身并不能做数据存储和计算,而是完全依赖 Hadoop | HBase 是物理表,提供了一张超大的内存 Hash 表来存储索引,方便查询 |
Hive 是数据仓库工具,需要全表扫描,就用 Hive,因为 Hive 是文件存储 | HBase 是数据库,需要索引访问,则用 HBase,因为 HBase 是面向列的 NoSQL 数据库 |
Hive 表中存入数据(文件)时不做校验,属于读模式存储系统 | HBase 表插入数据时,会和 |