6

我正在实现一个基于发布订阅模型的通知系统,以在数据到达/加载到 HDFS 时通知数据的可用性。我没有找到在哪里寻找这个的方法。是否有任何 HDFS API 可用于执行此操作,或者我应该使用什么方法来获取写入 HDFS 的新数据的信息?我正在使用 Hadoop v2.0.2,我不想使用 HCatalog,我想实现我自己的工具来做到这一点。

4

2 回答 2

3

您正在寻找的是Oozie Coordinator.

HDFS是一个文件系统,所以必须在 HDFS 之上构建一些东西来检查文件的可用性。HBase具有触发程序的协处理器。但它仅适用于 HBase 表。因此它不能用于检测 HDFS 中的数据可用性。

Oozie是一个用于管理 Hadoop 作业的工作流调度系统。Oozie 协调器作业是由时间(频率)和数据可用性触发的周期性 Oozie 工作流作业。您也可以从中执行其他程序:

Oozie 与 Hadoop 堆栈的其余部分集成,支持开箱即用的多种 Hadoop 作业(例如 Java map-reduce、Streaming map-reduce、Pig、Hive、Sqoop 和 Distcp)以及系统特定作业(例如Java 程序和 shell 脚本)。

因此,您也可以将文件可用性触发器用于通知系统。

于 2013-02-27T15:46:30.580 回答
1

如果您使用 HDFS,您可能需要查看 HBase,因为它具有您想要的功能。在 HBase 中,您可以创建一个预置(或后置)协处理器,基本上相当于 MySQL 触发器 - 每次将数据写入表时运行一些代码。

如果 HBase 不适合您的用例并且您必须使用 HDFS,AFAIK 没有类似的触发器。您可以尝试使用自己的代码包装 HDFS API,以便在适当情况下将数据写入文件系统时执行通知。或者,您可以轮询 HDFS 的更改(这听起来像是一个丑陋的选择)......

希望有帮助

于 2013-02-27T06:33:45.423 回答