HCatalog架构分析--官网中文翻译

HCatalog作为Hadoop的数据管理层,提供表和存储管理功能,简化网格上数据的读写操作。支持多种数据处理工具,如Pig和MapReduce,提供统一的数据视图,使用户无需关注数据的具体存储位置和格式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

 

概览

HCatalog 架构

接口

数据模型

数据流实例

HCatalog Web API


概览

HCatalog是Hadoop的表和存储管理层,允许使用不同数据处理工具(Pig和MapReduce)的用户更容易地在网格上读写数据。HCatalog的表抽象为用户提供了Hadoop分布式文件系统(HDFS)中数据的关系视图,并确保用户不必担心数据存储在何处或以何种格式存储——RCFile格式、文本文件、SequenceFiles或ORC文件。

HCatalog支持以任何可以编写SerDe(序列化器-反序列化器)的格式读写文件。默认情况下,HCatalog支持RCFile、CSV、JSON、SequenceFile和ORC文件格式。要使用自定义格式,必须提供InputFormat、OutputFormat和SerDe。

HCatalog 架构

HCatalog构建在Hive metastore之上,并集成了Hive的DDL。HCatalog为Pig和MapReduce提供读写接口,并使用Hive的命令行接口来发出数据定义和元数据探索命令。

接口

Pig的HCatalog接口由HCatLoader和HCatStorer组成,它们分别实现了Pig的load和store接口。HCatLoader接受一个表来读取数据;您可以在load语句之后立即使用partition filter语句来指示要扫描哪些分区。HCatStorer接受一个要写入的表,也可以选择一个分区键的规范来创建一个新的分区。您可以通过在STORE子句中指定分区键和值来写入单个分区;如果分区键是正在存储的数据中的列,则可以写入多个分区。HCatLoader是在HCatInputFormat之上实现的,HCatStorer是在HCatOutputFormat之上实现的。(参见加载和存储接口。)

MapReduce的HCatalog接口——HCatInputFormat和HCatOutputFormat——是Hadoop InputFormat和OutputFormat的实现。HCatInputFormat接受一个表来读取数据,还可以选择一个选择谓词来指示要扫描哪些分区。HCatOutputFormat接受要写入的表和可选的分区键规范,以创建新分区。您可以通过在setOutput方法中指定分区键和值来写入单个分区;如果分区键是正在存储的数据中的列,则可以写入多个分区。(参见输入和输出接口。)

注意:没有特定于蜂巢的界面。由于HCatalog使用Hive的metastore, Hive可以直接读取HCatalog中的数据。

数据是使用HCatalog的命令行接口(CLI)定义的。HCatalog CLI支持所有不需要执行MapReduce的Hive DDL,允许用户创建、修改、删除表等。CLI还支持Hive命令行中的数据探索部分,如显示表、描述表等。不支持Hive DDL,包括导入/导出,ALTER TABLE的重建和连接选项,CREATE TABLE AS SELECT, analysis TABLE…计算统计数据。(参见命令行接口。)

 

数据模型

HCatalog提供数据的关系视图。数据存储在表中,这些表可以放在数据库中。表也可以在一个或多个键上进行哈希分区;也就是说,对于一个键(或一组键)的给定值,将有一个分区包含具有该值(或一组值)的所有行。例如,如果一个表是按日期分区的,并且表中有三天的数据,那么表中将有三个分区。可以将新分区添加到表中,也可以从表中删除分区。分区表在创建时没有分区。未分区表实际上有一个必须在表创建时创建的默认分区。在删除分区时,没有保证读取一致性。

分区包含记录。一旦创建了分区,就不能向其中添加、删除或更新记录。分区是多维的,而不是分层的。记录被分成几列。列具有名称和数据类型。HCatalog支持与Hive相同的数据类型。有关数据类型的更多信息,请参见加载和存储接口。

 

数据流实例

这个简单的数据流示例展示了HCatalog如何帮助网格用户共享和访问数据。

  • 首先:将数据复制到网格

  • hadoop distcp file:///file.dat hdfs://data/rawevents/20100819/data
    
    hcat "alter table rawevents add partition (ds='20100819') location 'hdfs://data/rawevents/20100819/data'"

     

  • 第二:准备数据

  • Sally在数据处理中使用Pig来清理和准备数据。

    如果没有HCatalog, Sally必须在数据可用时由Joe手动通知,或者在HDFS上进行轮询。

  • A = load '/data/rawevents/20100819/data' as (alpha:int, beta:chararray, ...);
    B = filter A by bot_finder(zeta) = 0;
    ...
    store Z into 'data/processedevents/20100819/data';

    使用HCatalog, HCatalog将发送数据可用的JMS消息。Pig 的工作就可以开始了。

  • A = load '/data/rawevents/20100819/data' as (alpha:int, beta:chararray, ...);
    B = filter A by bot_finder(zeta) = 0;
    ...
    store Z into 'data/processedevents/20100819/data';

     

第三:分析数据

客户管理部门的Robert使用Hive分析客户的结果。

如果没有HCatalog, Robert必须修改表来添加所需的分区。

alter table processedevents add partition 20100819 hdfs://data/processedevents/20100819/data

select advertiser_id, count(clicks)
from processedevents
where date = '20100819'
group by advertiser_id;

 

使用HCatalog, Robert不需要修改表结构。

select advertiser_id, count(clicks)
from processedevents
where date = ‘20100819’
group by advertiser_id;

 

HCatalog Web API

WebHCat是HCatalog的一个REST API。(REST代表“具象状态传输”,是一种基于HTTP谓词的API样式)。WebHCat最初的名字是Templeton。有关更多信息,请参阅WebHCat手册。

Navigation Links

Next: HCatalog Installation

General: HCatalog Manual – WebHCat Manual – Hive Wiki Home – Hive Project Site

参考链接:

https://cwiki.apache.org/confluence/display/Hive/HCatalog+UsingHCat

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值