如何知道HDFS中添加了新数据?

时间:2013-02-18 10:26:46

标签: hadoop mapreduce

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

2 个答案:

答案 0 :(得分:3)

您要找的是Oozie Coordinator

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

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

  

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

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

答案 1 :(得分:1)

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

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

希望有所帮助