我正在设置flume,但不确定我们的用例要使用什么拓扑结构。
我们基本上有两个web服务器,可以以每秒2000个条目的速度生成日志。每个条目的大小约为137字节。
目前我们使用rsyslog(写入tcp端口),php脚本将这些日志写入rsyslog。我们在每个Web服务器上运行一个本地flume代理,这些本地代理侦听tcp端口并将数据直接放入hdfs。
所以呢localhost:tcpport is “Flume源”和“hdfs”是FlumeFlume。
我不确定上述方法,并混淆了三种方法:
方法1:web服务器、每台机器上的rsyslog和flume代理以及hadoop集群中namenode上运行的flume收集器收集数据并转储到hdfs中。
方法2:在hadoop集群中的namenode上运行web服务器、同一台机器上的rsyslog和flume收集器(在远程端口上侦听rsyslog在web服务器上编写的事件),以收集数据并转储到hdfs中。
方法3:web服务器、rsyslog和flume代理在同一台机器上。所有的特工都直接给hdfs写信。
而且,我们使用的是配置单元,所以我们直接写入分区目录。所以我们想考虑一种方法,允许我们在每小时的分区上进行写操作。
基本上,我只想知道人们是否使用flume进行类似的用途,它是否是正确和可靠的工具,以及我的方法是否合理。
我希望这不是太含糊。任何帮助都将不胜感激。
1条答案
按热度按时间piwo6bdm1#
对于您的问题,典型的建议是使用一个扇入或聚合流代理部署模型(谷歌搜索“flume fan-in”了解更多细节)。在这个模型中,理想的情况是每个web服务器上都有一个代理。每个代理都将事件转发给几个聚合器或收集器代理。然后,聚合器代理将事件转发到最终的目标代理,该目标代理将写入hdfs。
这种分层体系结构允许您简化扩展、故障切换等。