我想使用 MapReduce 方法分析连续的数据流(通过 HTTP 访问),所以我一直在研究 Apache Hadoop。不幸的是,Hadoop 似乎希望以固定大小的输入文件开始作业,而不是能够在新数据到达时将其交给消费者。真的是这样吗,还是我错过了什么?是否有不同的 MapReduce 工具可以处理从打开的套接字读取的数据?可伸缩性是这里的一个问题,所以我更愿意让 MapReducer 处理混乱的并行化问题。
我玩过Cascading并且能够在通过 HTTP 访问的静态文件上运行作业,但这实际上并不能解决我的问题。我可以使用 curl 作为中间步骤,将数据转储到 Hadoop 文件系统的某个位置,并编写一个看门狗来在每次准备好新数据块时启动新作业,但这是一个肮脏的 hack;必须有一些更优雅的方式来做到这一点。有任何想法吗?