Hive学习--架构和基本组成
2017-10-12 17:27
519 查看
参考链接:深入浅出学Hive
本质是将SQL转换为MapReduce程序
Hive与Hadoop的关系
Hive与传统数据库对比
主要有三个:CIL(命令行),JDBC/ODBC(java),WebUI(浏览器访问)
•元数据:Hive的用户信息与表的MetaData
Hive将元数据存储在数据库中,目前只支持mysql,derby.
元数据包括:表名字,表的列和分区及其属性,表的数据所在目录。
•解释器,编译器,优化器:分析翻译、编译、优化HQL的组件
完成HQL查询语句从词法分析、语法分析、编译、优化及查询计划的生成。生成的查询计划存储在HDFS中,并随后由MapReduce调用执行。
Hive的数据存储在HDFS中,大部分查询有MapReduce完成。(包含的查询,例如select from不会生成mapreduce任务)
•Metastore
是系统目录,保存Hive中表的元数据信息。
metastore包含:
Database, 是表(table)的名字空间。默认的数据库(database)名为‘default’
Table 表的元数据,包含信息有:列(list of columns)和它们的类型(types),拥有者(owner),存储空间(storage)和SerDei信息
Partition, 每个分区(partition)都有自己的列(columns),SerDe和存储空间(storage)。这一特征将被用来支持Hive中的模式演变(schema evolution)
•Driver
1)Driver调用编译器处理HiveQL字串
2)编译器将HQL转化为策略(plan)
3)策略由元数据操作和HDFS操作组成。元数据操作只包含DDL(create,drop,alter)语句,HDFS操作只包含LOAD语句。
4)对插入和查询而言,策略由map-reduce任务中有向非循环图组成(DAG directed acyclic graph)。
设置方式:
SET mapred.job.tracker=local
或者
SET mapred.job.tracker=192.168.1.2:9001
tinyint - 1byte
smallint - 2 byte
int - 4 byte
bigint - 8 byte
boolean
float
double
string
复杂数据类型:
structs
maps
arrays
timestamp
默认可以直接加载文本文件。创建表时可指定列分隔符航分隔符,hive可解析数据。
•Table 内部表
每个内部表在hive中有一个对应的目录存储数据。例如:表student在HDFS中的路径为“/warehouse/student”,warehouse是在hive-site.xml中由${hive.metastore.warehouse.dir}指定的数据仓库目录。
创建内部表:
create table student(id int,name string)
加载数据:
load data inpath ‘filepath’ into table student
删除内部表时,元数据和数据都会被删除。
drop table student
•Partition 分区表
在hive中,表中的一个partition对应于表下的一个目录,partition中的数据存储在对应目录下。
例如:student表中包含age和score两个partition,对应age=15,score=80的HDFS子目录为:warehouse/student/age=15/score=80
分区示例:
create table student(id int,name string) partitioned by (age int)
load data inpath ‘filepath’ into table student partition(age=15)
•External Table 外部表
指向hdfs中已经存在的数据。
与内部表的区别:
1)内部表在load数据的过程中,实际数据会被移动到数据仓库目录中。删除时元数据和数据都会删除。
2)外部表加载数据时,数据并不会被移动到数据仓库目录,只是与外部数据建立一个连接。删除表时仅删除元数据和该连接,不会删除数据。
创建外部表示例:
create external table teacher(id int,name string)
load data inpath ‘filepath’ into table teacher
drop table teacher
•Bucket Table
将表的列通过hash算法分解成不同的文件存储。
例如:将id分散成20个文件,对id进行hash,对应为0的写入/warehouse/student/age=15/score=80/part-0000
示例:
create table student(id int,name string) clustered by (id) into 20 buckets
load date inpath ‘filepath’ into table student
set hive.enforce.bucketing=true
一、Hive简介
Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供类SQL查询功能。本质是将SQL转换为MapReduce程序
Hive与Hadoop的关系
Hive与传统数据库对比
Hive | RDBMS | |
查询语言 | HQL | SQL |
数据存储 | HDFS | Raw Device or Local FS |
执行 | MapReduce | Excutor |
执行延迟 | 高 | 低 |
处理数据规模 | 大 | 小 |
索引 | 0.8版本后加入位图索引 | 有复杂的索引 |
二、Hive架构与基本组成
1、各组件基本功能
• 用户接口:用户访问Hive的入口主要有三个:CIL(命令行),JDBC/ODBC(java),WebUI(浏览器访问)
•元数据:Hive的用户信息与表的MetaData
Hive将元数据存储在数据库中,目前只支持mysql,derby.
元数据包括:表名字,表的列和分区及其属性,表的数据所在目录。
•解释器,编译器,优化器:分析翻译、编译、优化HQL的组件
完成HQL查询语句从词法分析、语法分析、编译、优化及查询计划的生成。生成的查询计划存储在HDFS中,并随后由MapReduce调用执行。
Hive的数据存储在HDFS中,大部分查询有MapReduce完成。(包含的查询,例如select from不会生成mapreduce任务)
•Metastore
是系统目录,保存Hive中表的元数据信息。
metastore包含:
Database, 是表(table)的名字空间。默认的数据库(database)名为‘default’
Table 表的元数据,包含信息有:列(list of columns)和它们的类型(types),拥有者(owner),存储空间(storage)和SerDei信息
Partition, 每个分区(partition)都有自己的列(columns),SerDe和存储空间(storage)。这一特征将被用来支持Hive中的模式演变(schema evolution)
•Driver
1)Driver调用编译器处理HiveQL字串
2)编译器将HQL转化为策略(plan)
3)策略由元数据操作和HDFS操作组成。元数据操作只包含DDL(create,drop,alter)语句,HDFS操作只包含LOAD语句。
4)对插入和查询而言,策略由map-reduce任务中有向非循环图组成(DAG directed acyclic graph)。
2、Hive运行模式
本地和集群两种模式。设置方式:
SET mapred.job.tracker=local
或者
SET mapred.job.tracker=192.168.1.2:9001
3、数据类型
原始数据类型:tinyint - 1byte
smallint - 2 byte
int - 4 byte
bigint - 8 byte
boolean
float
double
string
复杂数据类型:
structs
maps
arrays
timestamp
4、Hive元数据存储
5、Hive的数据模型
Hive的数据存储建立在Hadoop的HDFS之上。默认可以直接加载文本文件。创建表时可指定列分隔符航分隔符,hive可解析数据。
•Table 内部表
每个内部表在hive中有一个对应的目录存储数据。例如:表student在HDFS中的路径为“/warehouse/student”,warehouse是在hive-site.xml中由${hive.metastore.warehouse.dir}指定的数据仓库目录。
创建内部表:
create table student(id int,name string)
加载数据:
load data inpath ‘filepath’ into table student
删除内部表时,元数据和数据都会被删除。
drop table student
•Partition 分区表
在hive中,表中的一个partition对应于表下的一个目录,partition中的数据存储在对应目录下。
例如:student表中包含age和score两个partition,对应age=15,score=80的HDFS子目录为:warehouse/student/age=15/score=80
分区示例:
create table student(id int,name string) partitioned by (age int)
load data inpath ‘filepath’ into table student partition(age=15)
•External Table 外部表
指向hdfs中已经存在的数据。
与内部表的区别:
1)内部表在load数据的过程中,实际数据会被移动到数据仓库目录中。删除时元数据和数据都会删除。
2)外部表加载数据时,数据并不会被移动到数据仓库目录,只是与外部数据建立一个连接。删除表时仅删除元数据和该连接,不会删除数据。
创建外部表示例:
create external table teacher(id int,name string)
load data inpath ‘filepath’ into table teacher
drop table teacher
•Bucket Table
将表的列通过hash算法分解成不同的文件存储。
例如:将id分散成20个文件,对id进行hash,对应为0的写入/warehouse/student/age=15/score=80/part-0000
示例:
create table student(id int,name string) clustered by (id) into 20 buckets
load date inpath ‘filepath’ into table student
set hive.enforce.bucketing=true
相关文章推荐
- Hive简介、什么是Hive、为什么使用Hive、Hive的特点、Hive架构图、Hive基本组成、Hive与Hadoop的关系、Hive与传统数据库对比、Hive数据存储(来自学习资料)
- Hive体系结构(一)架构与基本组成
- Hive 架构与基本组成
- 《TomCat与Java Web开发技术详解》(第二版) 第一章节的学习总结--HTTP组成+基本访问方式
- 第二节 HTML基本架构学习
- spring基础学习一 : 搭建spring基本架构
- 大数据学习[20]---Spark基本架构及原理[转]
- 【IBM Tivoli Identity Manager 学习文档】3 基本架构
- TIM学习文档4——TIM基本架构
- 走向云计算之Hive基本架构和使用详解
- 从头学习Drupal--基本架构三
- JQuery的基本架构学习
- (6)hadoop学习——hive的文件存储和基本数据类型
- hive学习之基本语法篇(一)
- Hive体系结构(一)架构与基本组成
- Flume+Hadoop+Hive的离线分析系统基本架构
- Apache Pig入门 –介绍/基本架构/与Hive对比(转)
- (转载)Hive学习笔记--Hive Shell基本操作
- 跟着小王学习wpf系列二 基本的wpf程序架构
- Hive入门学习之一:Hive的简述与架构