Hive的概念

1.Hive的概念

       Hive Facebook 实现并开源, 基于Hadoop 的一个数据仓库工具,可以将结构化的数据映射为一张数据库表,并提供HQL(Hive SQL)查询功能, 底层数据是存储在HDFS 上。 Hive的本质是将 HQL 语句转换为 MapReduce 任务运行,使不熟悉MapReduce 的用户很方便地利用HQL进行数据 ETLExtraction-Transformation-Loading) 操作。

注: Hive 依赖于 HDFS 存储数据, Hive HQL 转换成 MapReduce 执行 , 所以说 Hive 是基于 hadoop 的一个数据仓库工具,实质就是一款基于 HDFS MapReduce 计算框架 。


2.使用Hive的原因

(1)直接使用 MapReduce 所面临的问题:
 学习成本太高
 项目周期要求太短
 MapReduce 实现复杂查询逻辑开发难度太大


(2)为什么要使用
Hive
 更友好的接口: 操作接口采用类
SQL 的语法,提供快速开发的能力
 更低的学习成本: 避免了写
MapReduce,减少开发人员的学习成本
 更好的扩展性: 可自由扩展集群规模而无需重启服务, 还支持用户自定义函数


3.Hive的特点

优点:
1、 可扩展性,横向扩展,Hive 可以自由的扩展集群的规模, 一般情况下不需要重启服务:
横向扩展: 通过分担压力的方式扩展集群的规模
纵向扩展:一台服务器
cpu i7-6700k 4 核心8 线程,8核心 16 线程,内存64G => 128G;
2
、 延展性, Hive 支持自定义函数,用户可以根据自己的需求来实现自己的函数;
3、 良好的容错性,可以保障即使有节点出现问题,SQL 语句仍可完成执行 (这里的容错性是基于hdfs的容错性:单点故障的解决和数据块的冗余存储)。

缺点:
1hive不支持记录级别的增删改操作,但是用户可以通过查询生成新表或者将查询结果导入到文件中(当前选择的 hive-1.2.1 的版本支持记录级别的插入操作);
2Hive的查询延时很严重,因为 MapReduce Job的启动过程消耗很长时间,所以不能用在交互查询系统中;
3hive 对事务支持较弱(因为不没有增删改, 所以主要用来做OLAP(联机分析处理),而不是 OLTP(联机事务处理),这就是数据处理的两大级别)。

4.Hive架构


CLI:command line interface

ODBC:开放数据库连接(Open Database Connectivity,ODBC)

JDBC:java数据库连接(Java DataBase Connectivity,JDBC)

JDBC/ODBC:将hive启动为后台服务,用客户端连接就能使用

hive的元数据库在刚开始创建的时候有29张表,但是随着操作的增多,表也会增多

hive的四大组件:
 驱动器 Thrift  Server
 编译器 Compiler
 优化器 Optimizer
 执行器 Executor

Hive架构的基本组成

用户接口:
CLIShell 终端命令行,最常用(学习,调试,生产),JDBC/ODBCHive 的基于 JDBC 操作提供的客户端, 用户(开发员,运维人员) 通过这连接至 Hive server Web UI,通过浏览器访问 Hive;
元数据存储:元数据,通俗的讲, 就是存储在 Hive 中的数据的描述信息,

                       Hive 中的元数据通常包括:表的名字,表的列和分区及其属性,表的属性(内部表和外部表),表的数据所在目录,hive的元数据库只会存表所对应的hdfs上的目                        录, 不会存该表当中存储了哪些文件。

                       Metastore 默认存在自带的 Derby 数据库中。缺点就是不适合多用户操作,并且数据存储目录不固定。数据库跟着 Hive 走,极度不方便管理,

                      例如:hive在哪个目录下面启动的,就会在哪个目录下面生成一个元数据库,如:第一次在/home/hadoop/下面启动的,就会在这个目录下面生成一个元数据库,                                    第二次在/home/hadoop/hive/目录下面启动的就会在这个目录下面生成一个新的数据库。这样在使用上会带来很多的不便。
                       解决方案:通常存我们自己创建的
MySQL 库(本地 或 远程)


解释器,编译器,优化器,执行器:
这四大组件完成
HQL 查询语句从词法分析,语法分析,编译,优化,以及生成查询计划的生成。生成的查询计划存储在 HDFS 中,并随后由 MapReduce 调用执行。

执行流程:

HiveQL 通过命令行或者客户端提交,经过 Compiler 编译器,运用 Metastore 中的元数据进行类型检测和语法分析,生成一个逻辑方案(logical plan),然后通过的优化处理,产生一个 MapReduce 任务。

5. Hive RDBMS 的对比

数据库(写时模式)------数据仓库(读时模式)
1、模式问题: 数据库是  写时模式,    数据库仓库 是  读时模式
 数据库主要的操作针对 单挑记录的 CRUD
 数据库在插入数据的时候会进行各种校验:类型检查,int类型的字段如果插入例如qwer234这种数据,很明显会报错, 不让插入
 数据仓库是针对大批量数据的存储和计算, hive根本不管你导入进某张hive表的数据是不是合法,当HQL语句被翻译成MR程序执行的时候,那么就会校验这个数据了。
 

2、数据库存储的数据量小,存储精细
      数据仓库存储的数据量极大,粗粒度的存储机制

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值