我正在设置水槽,但非常不确定我们的用例要进行什么样的拓扑。
我们基本上有两个web服务器,它可以以每秒2000条的速度生成日志。每个条目的大小约为137字节。
目前,我们已经使用了rsyslog(写入tcp端口),php脚本将这些日志写入到rsyslog。我们在每个we服务器上运行一个本地代理,这些本地代理监听tcp端口,并将数据直接放入hdfs中。
因此localhost:tcpport是“水槽源”,而"hdfs“是水槽接收器。
对于上述方法,我不太清楚,我混淆了三种方法:
方法1:每台机器上的Web、RSyslog & Flume代理和在hadoop集群中的Namenode上运行的Flume收集器,收集数据并转储到hdfs中。
方法2: Web、同一台机器上的RSyslog和一个Flume收集器(侦听web服务器上rsyslog编写的事件)在hadoop集群中的Namenode上运行,以收集数据并转储到hdfs中。
方法3:同一台机器上的Web、RSyslog和Flume。和所有代理直接写入hdfs。
此外,我们使用的是蜂巢,所以我们直接写入分区目录。所以我们想出一种方法,允许我们在每小时的分区上写东西。
基本上,我只想知道人们是否曾为类似的目的使用过水槽,以及它是否是正确和可靠的工具,以及我的方法是否明智。
我希望这不是太含糊。任何帮助都将不胜感激。
发布于 2014-04-03 22:50:51
对于您的问题,典型的建议是有一个扇入或代理部署模型。(关于更多细节,谷歌搜索“水槽扇”)。在这个模型中,理想情况下,每个you服务器上都有一个代理。每个代理都将事件转发给很少的聚合器或收集器代理。然后聚合器代理将事件转发到写入HDFS的最终目标代理。
这种分层架构允许您简化缩放、故障转移等操作。
https://stackoverflow.com/questions/22838763
复制相似问题