在组织如何处理数据方面,Apache Hadoop展开了一场史无前例的革命——通过*可扩展的Hadoop,可以在比以往更短的时间内,通过新应用创造新价值,并从大数据中提取想要的数据。这次革命企图使企业建立以Hadoop为中心的数据处理模式,但是同时也提出一个挑战:我们如何在Hadoop的*下进行协作呢?我们如何对任意格式的数据进行存储和处理,并按照用户的希望来共享这些数据呢?此外,我们还需考虑,如何将不同工具以及其他系统集成在一起,组成数据中心即计算机?
作为Hadoop的用户,对元数据目录的需求是明确的。用户不希望再去“发明*”。他们希望与同事合作,分享结果和过程中的数据集合。结合用户的需求,很容易确定通用的Hadoop上层元数据机制:通过将数据资产注册到元数据记录中,不仅能更清楚的了解数据资产,更能提升发现和共享的效率。记住,尽量少让用户工作。
用户还希望不同的工具集和系统能在一起使用——如Hadoop和非Hadoop系统。作为Hadoop用户,对目前Hadoop群集上不同工具的互操作性有明确的需求:Hive,Pig,Cascading,Java MapReduce,使用了Hadoop Streaming的Python,C/C++,Perl以及Ruby,数据格式则包括CSV,TSV,Thrift,Protobuf,Avro,SequenceFile以及作为Hive专用格式的RCFile。
最后一点,原始数据通常不是来自于HDFS(Hadoop分布式文件系统)。这就需要将不同类型系统的资源注册一个中心节点上,以满足HDFS的ETL及Hadoop分析结果对其他系统发布的需求。
Curt,你说得对……HCatalog真的很重要
Curt Monash最近发表了一篇文章,题名为“HCatalog——它很重要”从多个方面切中要害,推荐大家阅读。在这篇文章中,Curt认为HCatalog作为Hadoop集群的元数据服务,其价值可以媲美数据库管理系统(DBMS)。虽然这一点目前还在研究中,但仍有必要说明,HCatalog相当于Hadoop连接企业应用生态系统的接口,十分重要。
这篇文章中还包含Curt对HCatalog定义、历史和用途深入研究的内容。
HCatalog的定义
Hadoop最吸引人的特性之一就是在不使用Schema的情况下,可以灵活的处理半结构化数据和非结构化数据。大多数组织中,非结构化数据占全体数据的80%,而增长速度也是结构化数据的10-50倍。Hadoop确实擅长从非结构化数据中提取结构化数据。HCatalog帮助Hadoop通过访问挖掘后的结构化数据传递价值,提供给需要这些数据的分析人员、系统和应用。
HCatalog是Hadoop的元数据和数据表的管理系统。它基于Hive中的元数据层,通过类似SQL的语言展现Hadoop数据的关联关系。HCatalog允许用户通过Hive,Pig,MapReduce共享数据和元数据。它的另一特点就是在用户编写应用程序时,无需关心数据怎么存储,在哪里存储,还避免用户因schema和存储格式的改变而受到影响。
这种灵活性最终减少了对数据产生者、使用者、管理者的影响,为他们提供了清晰的合作基础。在不影响到使用者的应用程序读取数据的情况下,数据产生者可以在数据中增加新列。在不影响生产者或使用者的情况下,管理员可以迁移数据或是改变数据的存储格式。通过HCatalog,新数据集更容易找到并通知他们的使用者。
通过HCatalog,用户能够通过工具访问Hadoop上的Hive metastore。它为MapReduce和Pig提供了连接器,用户可以使用工具对Hive的关联列格式的数据进行读写。对于不在Hive上通过Hive DDL语句操作metasotre的用户,HCatalog提供了命令行工具。它还提供了通知服务,如果使用Oozie这样的工作流工具,在有新数据可用的时候,就可以得到通知。
Hadoop的REST接口
Templeton是小说《夏洛特的网》中的一个角色。它是一个贪吃的老鼠,会为主角(小猪威尔伯)提供帮助,但是帮助的目的仅仅是为了食物。在Hadoop中,Templeton通在元数据上层提供REST接口,来帮助HCatalog。它为Hadoop提供了REST API接口,允许外部资源不通过Hadoop自带API与Hadoop交互。这只贪吃的老鼠为我们所有人提供了一个简单易懂而且常见的接口,打开了一扇通往Hadoop的大门。通过这种方式,它为所有应用开发人员开放了Hadoop。
Templeton更像Hive之上的一个JDBC连接器。REST接口通过HTTP协议,为已有应用及新应用提供了一个动态共享的元数据层。它为HTTP客户端开放了映射在HCatalog和Hive中的资源。
HCatalog的实际应用
这里列出HCatalog的3个基本用途。
1. 实现工具之间的通讯
重度Hadoop用户绝不会使用单独的工具进行数据处理。一般情况下,用户和团队开始可能只使用一种工具:如Hive,Pig,Map Reduce,或者其他什么。随着他们对Hadoop使用的深入,他们会发现所使用的工具对于他们的新任务来说,不是最优的。开始使用Hive进行分析查询的用户,更愿意使用Pig为ETL过程处理或建立数据模型。开始使用Pig的用户发现,他们更想使用Hive进行分析型查询。尽管Pig和Map Reduce这样的工具不需要元数据,但元数据的出现依然为它们带来不少益处。通过元数据存储的共享,能使用户更方便的在不同工具间共享数据。比如在Map Reduce或Pig中载入数据并进行规范化,然后通过Hive进行分析,这样的工作流已经很普遍了。当所有这些工具都共享一个metastore时,各个工具的用户就能够即时访问其他工具创建的数据,而无需载入和传输的步骤。
2. 数据发现
当用于数据分析的时候,用户可以使用Hadoop从原始数据中提取结构化信息。他们通常使用Pig,Hadoop的Streaming和Map Reduce来分析数据,寻找新的关注点。一般而言,只有在大型分析环境中,信息的价值才能得以体现。通过HCatalog将分析结果发布出来,你的分析平台就可以通过REST服务来访问这些内容。在这种情况下,schema决定了发现。这些发现对于数据科学家来说也很有用。通常,他们以别人创建的数据或分析结果作为下一个发现的输入。在HCatalog中注册数据实际上是宣布有新数据可用。
3. 系统集成
作为一个处理和存储数据环境来说,Hadoop为企业应用提供了太多的机会。但为了充分使用它,必须要增强现有工具并配合使用。Hadoop应当作为你的分析平台的输入,或者与你的业务数据存储和Web应用集成。组织应该享受Hadoop带来的价值,无需学习工具使用等新的内容。有了Templeton提供的REST服务,就可以通过常见的API和类SQL语言将平台开放给企业。通过这种方式,它开放了整个平台。
作为企业应用Hadoop的准备,HCatalog代表着下一个合理的延伸。是的,Curt,它确实重要……很重要!
关于作者
Alan Gates 是Hortonworks的共同创始人,曾是Yahoo实验室的成员之一,其所在的团队将Pig从实验室独立出来做成一个成功的Apache开源项目。Gates同时参与HCatalog的设计,并指导其成为Apache孵化项目。Gates在俄勒冈州立大学获得其数学学士学位,在福乐神学院获得神学硕士学位。他还是O’Reilly出版的《Programming Pig》一书的作者。在Twitter上跟随Gates:@alanfgates。
RusselJurney,现在正在专注于赌场游戏数据,他通过创建Web应用来对美国和墨西哥的*进行性能分析。Russel是《敏捷数据》的作者(O’Reilly将于2013年3月出版)。在涉足创业,互动媒体和新闻工作后,他前往硅谷,为Ning和LinkedIn建立大规模分析应用。他现在在Hortonworks中进行Hadoop的布道工作。他和他的妻子Kate以及两只毛茸茸的小狗居住在加利福尼亚州太平洋沿岸的一个悬崖上。
查看英文原文:Hadoop and Metadata (Removing the Impedance Mis-match)