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