为Hadoop实现通知系统以实现数据可用性的最佳方法是什么,以便每当有新数据出现时,都会创建一个通知,作业控制框架可以利用该通知来启动依赖于该数据的作业。这里主要关注的是,一旦数据可用,就应该触发作业,而不是在NameNode上轮询作业以获取数据?
最佳答案
我要做的是使用生产者/消费者模型,该模型可以使用队列(例如Amazon SQS)相互交互。
生产者将维护受监视目录的列表,并每x秒执行hadoop fs -test -e /path/to/watched/dir
(其中x应该是参数),如果命令返回的$?
为0,则可以将消息发送到队列。消息的内容可能只是刚刚出现的目录的名称,或者您可以添加一些元数据并将其作为JSON对象发送,例如带有其他字段。
另一方面,使用者将每隔y秒(其中y应该是一个参数)侦听队列,并且一旦有新数据,您就可以在此目录上开始工作。
关于hadoop - HDFS中数据可用性的事件通知?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14436748/