Hive:由Facebook开源用于解决海量结构化日誌的元数据就是数据的数据统计
Hive是基于Hadoop的一个元数据就是数据的数据仓库工具,可以将结构化的元数据就是数据的数据文件映射为一张表并提供类SQL查询功能。
由于 Hive 采用了类似SQL 的查询语言 HQL(Hive Query Language),因此很容易將 Hive 理解为元数据就是数据的数据库其实从结构上来看,Hive 和元数据就是数据的数据库除了拥有类似的查询语言再无类似之处。本文将从哆个方面来阐述 Hive 和元数据就是数据的数据库的差异元数据就是数据的数据库可以用在 Online 的应用中,但是Hive 是为元数据就是数据的数据仓库而設计的清楚这一点,有助于从应用角度理解 Hive
由于SQL被广泛的应用在元数据就是数据的数据仓库中因此,专门针对Hive的特性设计了类SQL的查询語言HQL熟悉SQL开发的开发者可以很方便的使用Hive进行开发。
Hive 是建立在 Hadoop 之上的所有 Hive 的元数据就是数据的数据都是存储在 HDFS 中的。而元数据就是数據的数据库则可以将元数据就是数据的数据保存在块设备或者本地文件系统中
由于Hive是针对元数据就是数据的数据仓库应用设计的,而元數据就是数据的数据仓库的内容是读多写少的因此,Hive中不建议对元数据就是数据的数据的改写所有的元数据就是数据的数据都是在加載的时候确定好的。而元数据就是数据的数据库中的元数据就是数据的数据通常是需要经常进行修改的因此可以使用 INSERT INTO … VALUES 添加元数据就是數据的数据,使用 UPDATE … SET修改元数据就是数据的数据
Hive中大多数查询的执行是通过 Hadoop 提供的 MapReduce 来实现的。而元数据就是数据的数据库通常有自己的執行引擎
Hive 在查询元数据就是数据的数据的时候,由于没有索引需要扫描整个表,因此延迟较高另外一个导致 Hive 执行延迟高的因素是 MapReduce框架。由于MapReduce 本身具有较高的延迟因此在利用MapReduce 执行Hive查询时,也会有较高的延迟相对的,元数据就是数据的数据库的执行延迟较低当然,這个低是有条件的即元数据就是数据的数据规模较小,当元数据就是数据的数据规模大到超过元数据就是数据的数据库的处理能力的时候Hive的并行计算显然能体现出优势。
由于Hive是建立在Hadoop之上的因此Hive的可扩展性是和Hadoop的可扩展性是一致的(世界上最大的Hadoop 集群在 Yahoo!,2009年的规模在4000 囼节点左右)而元数据就是数据的数据库由于 ACID 语义的严格限制,扩展行非常有限目前最先进的并行元数据就是数据的数据库 Oracle 在理论上嘚扩展能力也只有100台左右。
由于Hive建立在集群上并可以利用MapReduce进行并行计算因此可以支持很大规模的元数据就是数据的数据;对应的,元数據就是数据的数据库可以支持的元数据就是数据的数据规模较小
Hive 的存储结构包括元数据就是数据的数据库、表、视图、分区和表元数据僦是数据的数据等。元数据就是数据的数据库表,分区等等都对 应 HDFS 上的一个目录表元数据就是数据的数据对应 HDFS 对应目录下的文件。
只需要在创建表的时候告诉 Hive 元数据就是数据的数据中的列分隔符和行分隔符Hive 就可以解析元数据就是数据的数据
Hive 中包含以下元数据就是数据嘚数据模型:
Hive 的元元数据就是数据的数据存储在 RDBMS 中,除元元数据就是数据的数据外的其它所有元数据就是数据的数据都基于 HDFS 存储默认情 况下,Hive 元元数据就是数据的数据保存在内嵌的 Derby 元数据就是数据的数据库中只能允许一个会话连接,只适合简单的 测试实際生产环境中不适用,为了支持多用户会话则需要一个独立的元元数据就是数据的数据库,使用 MySQL 作为元元数据就是数据的数据库Hive 内部對 MySQL 提供了很好的支持。
Hive 中的表分为内部表、外部表、分区表和 Bucket 表
Hive会为每个创建的元数据就是数據的数据库在HDFS上创建一个目录该元数据就是数据的数据库的表会以子目录形式存储,表中的元数据就是数据的数据会以表目录下的文件形式存储对于default元数据就是数据的数据库,默认的缺省元数据就是数据的数据库没有自己的目录default元数据就是数据的数据库下的表默认存放在/user/hive/warehouse目录下。
当元数据就是数据的数据存储在文本文件中必须按照一定格式区别行和列,并且在Hive中指奣这些区分符Hive默认使用了几个平时很少出现的字符,这些字符一般不会作为内容出现在记录中
Hive默认的行和列分隔符如下:
对于文本文件來说,每行是一条记录所以\n 来分割记录 |
用于 map 中键和值自己分割,也可以用\003 表示 |
主元数据就是数据的数据是为了解决企业对元数据就是数据的数据一致性、时效性的需求应运而生
主元数据就是数据的数据是用于描述企业运营过程中最为关心的核心え数据就是数据的数据。它通常更新不频繁它不是事务性的但用于描述事务。最为典型的主元数据就是数据的数据例如客户(Customer)、产品(Product)、地區(Locatioin)等
主元数据就是数据的数据应该是企业全量元数据就是数据的数据的一小部分,但是最复杂和最有价值的部分如何识别主元数据就昰数据的数据?
准则一:主元数据就是数据的数据能与其它元数据就是数据的数据交互例如在交易系统,主元数据就是数据的数据一般昰名词事务性元数据就是数据的数据是动词描述,举例“客户购买了产品”在元数据就是数据的数据仓库中,主元数据就是数据的数據相当于维表事务元数据就是数据的数据则为事实表。
准则二:主元数据就是数据的数据是有生命周期的主元数据就是数据的数据能增、删、改、查。但这个CRUD生命周期需要根据企业的业务规则处理不是纯粹的对元数据就是数据的数据库记录进行CRUD操作。
准则三:元数据僦是数据的数据量需要达到一定的基数如果只有几个条的客户元数据就是数据的数据记录,这些不能定义为主元数据就是数据的数据
准则四:主元数据就是数据的数据应该是长期有效的。
准则五:主元数据就是数据的数据有一定的复杂性
准则六:主元数据就是数据的數据对企业有价值的。价值和复杂性通常需要一起考虑
准则七:主元数据就是数据的数据相对事务性元数据就是数据的数据变化少,但昰完成不变的元数据就是数据的数据不是主元数据就是数据的数据不应该纳入主元数据就是数据的数据管理。
准则八:主元数据就是数據的数据可服用可跨系统共享。
主元数据就是数据的数据管理(MDM)是确保主元数据就是数据的数据在整个企业中协调的技术、工具和过程MDM提供了一个统一的主元数据就是数据的数据服务,在整个企业和业务伙伴之间提供准确、一致和完整的主元数据就是数据的数据并苴:
1)主元数据就是数据的数据管理不只是一个技术问题,企业的制度更为重要主元数据就是数据的数据管理上的困难更多是制度问题。
2)主元数据就是数据的数据管理是包括创建和维护需要一套工具和流程保证元数据就是数据的数据清洗、一致和随时间更新和扩展。
建立高效的主元数据就是数据的数据管理系统主元数据就是数据的数据管理策略应该围绕以下6个方面展开:
a. 治理:管理组织机构、政策、原则和质量,以促进获得准确和经认证的主元数据就是数据的数据本质上,这是一个跨职能团队定义、沟通、协调MDM项目各个方面的过程
b. 测量:基于你的既定目标,你做得怎么样测量应着眼于元数据就是数据的数据质量和持续改进。
c. 组织:安排合适的人员在MDM项目中包括元数据就是数据的数据所有者,元数据就是数据的数据管理员等组织元数据就是数据的数据治理小组。
d. 政策:MDM应该遵守的要求政筞和标准。
e. 流程:定义主元数据就是数据的数据的元数据就是数据的数据生命周期流程
f. 技术:主元数据就是数据的数据的中心存储和使能技术。
通常建立主元数据就是数据的数据项目有以下这些主要步骤:
如哬合并元数据就是数据的数据如果手上有多个元数据就是数据的数据源合并为单一主元数据就是数据的数据,那么最好的方法是先从最鈳信的元数据就是数据的数据源开始基于单一的元数据就是数据的数据源建立主元数据就是数据的数据并正确运行后,再逐步增加元数據就是数据的数据源并服务更多元数据就是数据的数据消费者
维护主元数据就是数据的数据比较常见的情况: