Hive的概念
来源:互联网 发布:手机淘宝店铺店招白色 编辑:程序博客网 时间:2024/06/15 16:16
1.Hive的概念
Hive 由Facebook实现并开源, 基于Hadoop 的一个数据仓库工具,可以将结构化的数据映射为一张数据库表,并提供HQL(Hive SQL)查询功能, 底层数据是存储在HDFS上。 Hive的本质是将 HQL语句转换为 MapReduce 任务运行,使不熟悉MapReduce 的用户很方便地利用HQL进行数据ETL(Extraction-Transformation-Loading) 操作。
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的容错性:单点故障的解决和数据块的冗余存储)。
缺点:
1、 hive不支持记录级别的增删改操作,但是用户可以通过查询生成新表或者将查询结果导入到文件中(当前选择的hive-1.2.1 的版本支持记录级别的插入操作);
2、 Hive的查询延时很严重,因为MapReduce Job的启动过程消耗很长时间,所以不能用在交互查询系统中;
3、 hive 对事务支持较弱(因为不没有增删改, 所以主要用来做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架构的基本组成
用户接口:
CLI, Shell终端命令行,最常用(学习,调试,生产),JDBC/ODBC是Hive 的基于 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、数据库存储的数据量小,存储精细
数据仓库存储的数据量极大,粗粒度的存储机制
- Hive分区的概念
- Hive的概念
- hive概念
- Hive基础概念
- 整理一下HIVE概念
- 4-hive 表概念
- Hive分桶概念
- Hadoop Hive概念学习系列之hive的数据压缩(七)
- 【Hive】hive的数据压缩
- Hadoop中Zookeeper,HDFS,Hbase,Hive,Pig的概念介绍与比较
- 使用odps 和 hive 后对数据库与数据仓库概念的理解
- Hadoop中Zookeeper,HDFS,Hbase,Hive,Pig的概念介绍与比较
- Hive基础(1)概念、安装、使用笔记
- hive概念、安装和配置、常见异常
- Hive基础概念之Metadata和MetaStore
- Hive核心概念剖析及示例
- #Hive#Hive的一点认识
- 【hive】hive的扩展特性
- js实现数字变动效果
- 如何优化tomcat配置(从内存、并发、缓存3个方面)优化
- HTML/JS 简单计算器
- 离散随机分布
- 程序员励志名言
- Hive的概念
- jvm整理
- RUDP传输那些事儿
- 安装CentOS6.4教程
- AngularJS $http
- curl 问题集锦
- 解决vmware在桥接模式下网络异常问题
- CentOS 6.9 虚拟机下载(LNMP开发环境 + Postfix/Dovecot邮件系统 + TPShop商城系统)
- 零拷贝技术