1、hive:建立在Hadoop上的数据仓库基础架构,可以存储、查询、分析存储在Hadoop中的大规模数据,提供了简单的类SQL查询语言,称为QL,允许用户开发自定义的mapper、reducer来处理复杂的分析工作
2、Hive架构:
用户接口,包括CLI、Client、WUI
元数据存储在关系数据库中,如mysql
执行顺序:解释器-编译器-优化器-执行器,前3个完成HQL查询语句从词法分析、语法分析、编译、优化及查询计划,生成的查询计划存储在HDFS中,并在随后有MR调用执行
使用HDFS进行存储,使用MR进行计算
3、和普通关系数据库的区别
Hive |
RDBMS |
|
查询语言 |
HQL |
SQL |
数据存储 |
HDFS |
Raw Device or Local FS |
索引 |
无 |
有 |
执行 |
MapReduce |
Excutor |
执行延迟 |
高 |
低 |
处理数据规模 |
大 |
小 |
4、数据格式:hive中没有定义专门的数据格式,可以由用户指定,需要指定三个属性:(1)列分隔符(空格、\t、\x001)、(2)行分隔符("\n"、\x002)、(3)读取数据的方法
hive中文件有3种格式:TextFile、SequenceFile、RCFile
hive在进行加载时不需要进行数据格式的转换,只是将数据复制到相应的HDFS目录,所以数据加载速度相对数据库要快一些
5、Hive中的数据不允许修改,在加载的时候就已经确定
6、索引:由于Hive中没有索引,当要访问hive数据中满足条件的特定值时,需要暴力扫描整个数据,因此访问延迟要高,但是由于MR的引入,可以并行访问数据,但是不适合在线数据查询
7、hive中除了select * from语句不需要生成MR任务执行外,其它都需要
8、hive包含以下几种数据模型:
(1)table:
每个table在hive中都有一个相应的目录存储数据,如table a的hdfs目录为/warehouse/a,其中warehouse是hive-site.xml中由hive.metastore.warehouse.dir属性指定,所有的table数据都保存在这个目录下
(2)external table:
数据存储在hdfs中,可以创建分区,并不会将数据移动到仓库目录中
(3)partition:表table的一个partition对应表下的一个目录,所有partition的数据都对应在相应的目录下,如表a包含dt、city两个partition,则对应于 dt = 20100801, ctry = US 的 HDFS 子目录为:/ warehouse /xiaojun/dt=20100801/ctry=US;对应于 dt = 20100801, ctry = CA 的 HDFS 子目录为;/ warehouse /xiaojun/dt=20100801/ctry=CA
(4)buckets:对指定列进行hash,根据hash值切分数据,每个bucket对应一个文件,例如将表a中 user 列分散至 32 个 bucket,首先对 user 列的值计算 hash,对应 hash 值为 0 的 HDFS 目录为:/ warehouse /xiaojun/dt =20100801/ctry=US/part-00000;hash 值为 20 的 HDFS 目录为:/ warehouse /xiaojun/dt =20100801/ctry=US/part-00020
原文:http://www.cnblogs.com/zhli/p/4852570.html