Hive和RDBMS数据库有什么异同
Hive是基于Hadoop的一个数据仓库,底层运用HDFS进行数据存储,运用MapReduce进行任务运行,是面向分析的数据仓库,不支持实时查询.
- 区别:
- Hive是面向分析的,RDBMS是面向事务的
- Hive不支持事务,但是RDBMS支持
- Hive延时高,RDBMS延时低
- Hive是读模式,RDBMS是写模式
- Hive可以多表插入,RDBMS不支持多表插入
- 相同:语法类似,所以Hive学习成本低
Hive的特点
是大数据数仓,不生产数据
数据来源有
- 数据库
- 日志数据
- 爬虫数据
- 其他数据
数仓不消费数据
分析之后的结果给各个不同的数据应用使用
- 数据可视化
- 即席查询
- 数据挖掘
数仓和数据库的不同之处
数据库是OLTP,面向事务
数仓是OLAP面向分析
数仓不是所谓的大型数据库,也没有取代数据库的能力,对事务支持极弱
数仓的分层
根据数据的流入流出的特点,对数仓进行分层
ODS:源数据层
相当于数据的临时存储中转站,其数据来自于各个不同的数据源,不会对源数据进行修改,由于不同的数据之间是存在差异的,所以不会直接用于分析.
DW:数仓层
其数据是从ods经过ETL处理而来,一般是干净规整结构统一的数据,可以用于各种分析,构建各种模型.
DA:数据应用层
消费数仓层分析的结果进行应用
数仓分层的好处是什么?
- 解耦合
- 以空间换时间
为什么说Hive是基于Hadoop的软件
- Hive的存储能力是基于HDFS的
- Hive的分析能力是基于MapReduce的
Hive的最大魅力在哪里?我们为什么要用Hive
Hive可以将结构化文件映射成为一张表,提供了基于表Sql查询的分析能力
HIve的安装部署模式
对于Hive来说,有两种方式可以保持元数据
- hive内置一个数据库 derby (内存级轻量级数据库)
- 使用第三方数据库集中管理元数据(mysql) 推荐使用
-
内嵌模式
-
使用内置derby存储元数据
-
metastore内置集成好,不需要单独配置
适合测试体验使用
-
-
本地模式
-
使用mysql来存储元数据
-
metastore 内置集成好,不需要单独配置
弊端:每次启动hive服务,都会内置一个metastore服务,会造成重复启动
-
-
远程模式
-
使用mysql存储元数据
-
metastore 自己单独配置,单独启动,全局唯一
任何客户端访问hive都是通过唯一的一个metastore服务进行访问,企业中也是用此模式
-
启动hive之间的注意事项
- mysql启动了吗
- hadoop启动了吗
- hdfs是否已经退出安全模式
Hive的建表语句
create table tbn(id int,name string,age int) row format delimited fields terminated by &