由facebook 开源用以帮用户解决海量数据etl,构建于hadoop的 数据仓库。
使用hql作为查询接口
使用hdfs作为底层存储
使用mr作为执行层
1、为什么使用hive?
1)在大数据的挑战下,传统的数据库不堪负重
2)使用mr编程繁琐
3)人员成本考虑
2、hive和hbase的区别
hive是基于hadoop的数据仓库工具,是为简化mr编程而生的
hive非常适合数据仓库的统计分析
HBASE 是一个分布式的开源的数据库,为查询而生,是物理表
3、hive 和hbase 结合试用
hive 访问hbase 表数据,实际上是通过mr来读取hbase,自定义的hiveHbaseTableinputFormat 来完成hbase 切分,获取recordreader
4、Raw Device 裸设备
Raw Device 裸设备不通过操作系统管理访问
裸设备(raw device),也叫裸分区(原始分区),是一种没有经过格式化,不被Unix通过文件系统来读取的特殊块设备文件。由应用程序负责对它进行读写操作。不经过文件系 统的缓冲。它是不被操作系统直接管理的设备。这种设备少了操作系统这一层,I/O效率更高。不少数据库都能通过使用裸设备作为存储介质来提高I/O效率。
5、数据仓库和数据库的区别
有两个层面/角度来回答这个有趣的问题:
1)逻辑层面/概念层面:数据库和数据仓库其实是一样的或者及其相似的,都是通过某个数据库软件,基于某种数据模型来组织、管理数据。但是,数据库通常更关注业务交易处理(OLTP),而数据仓库更关注数据分析层面(OLAP),由此产生的数据库模型上也会有很大的差异。
数据库通常追求交易的速度,交易完整性,数据的一致性,等等,在数据库模型上主要遵从范式模型(1NF,2NF,3NF,等等),从而尽可能减少数据冗余,保证引用完整性;而数据仓库强调数据分析的效率,复杂查询的速度,数据之间的相关性分析,所以在数据库模型上,数据仓库喜欢使用多维模型,从而提高数据分析的效率。
2)产品实现层面:数据库和数据仓库软件是有些不同的,数据库通常使用行式存储,如SAP ASE,Oracle, Microsoft SQL Server,而数据仓库倾向使用列式存储,如SAP IQ,SAP HANA
数据库:面向业务,保存事务型数据
数据仓库:面向主题(数据分析的需求目的),保存分析型数据
本质有区别。
1:数据库是个软件,是技术层面的。知名的有,Oracle,MySQL,MS SQL,DB2等等。
2:数据仓库是业务层面的,是给分析和展示,提供数据支撑,的一个数据平台。
3:数据仓库一般是由数据库来实现的。按照“粒度”和业务逻辑,把数据梳理成对应的模块,存放在数据仓库中。分析需求来了的时候,直接去数据仓库里拿数据,进行分析就行了。
那么为什么说hive是数据仓库工具而不是数据库呢?
数据仓库是逻辑上的概念,底层还是数据库。数据仓库中的数据有这样的特点:最全的历史数据,而且相对稳定。所谓相对稳定,就是只会做大量查询操作,很少有更新和删除操作,而hive也是具备这个特点的,所以称hive为数据仓库而不是数据库