Hadoop 如何知道新数据已添加到HDFS?

Hadoop 如何知道新数据已添加到HDFS?,hadoop,mapreduce,Hadoop,Mapreduce,我正在实现一个基于发布-订阅模型的通知系统,以便在数据到达/加载到HDFS时通知数据的可用性。我找不到办法去找这个。是否有任何HDFS API可用于执行此操作,或者我应该使用什么方法获取写入HDFS的新数据的信息?我正在使用Hadoop v2.0.2,我不想使用HCatalog,我想实现我自己的工具来实现这一点。如果您使用HDFS,您可能希望签出HBase,因为它具有您想要的功能。在HBase中,您可以创建一个前置(或后置)协处理器,其作用实质上相当于一个MySQL触发器——每次将数据写入表时都

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

如果您使用HDFS,您可能希望签出HBase,因为它具有您想要的功能。在HBase中,您可以创建一个前置(或后置)协处理器,其作用实质上相当于一个MySQL触发器——每次将数据写入表时都运行一些代码

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


希望对您有所帮助

您正在寻找的是
Oozie协调员

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

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

Oozie与Hadoop堆栈的其余部分集成,支持 几种类型的Hadoop作业(如Java map reduce、, 流式map reduce、Pig、Hive、Sqoop和Distcp)以及系统 特定作业(如Java程序和shell脚本)


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

签出Apache Flume。不完全是您想要的,但可能会有所帮助。我想知道我应该在HDFS中查找哪些java包/类来添加此功能。正如我所知,当客户端将数据写入HDFS时,在写入数据完成后,它会更新namenode,以指示文件现在已完成。我基本上想在Namenode收到完成更新后添加我的代码。看看下面的两个答案,我也相信HDFS SDK目前还没有任何可用的东西:所以,我假设Quora[1]的答案和讨论是不够的?包括我在内的一些人已经告诉过你HDFS不能在ATM机上实现这一点,并提供了替代方案。唉。[1] 您能告诉我在哪里可以获得关于HDFS API的足够信息吗?这里是一个用于hadoop java API的javadoc:。以下是使用java api的简单教程: