2014-03-26 27 views
2

我有25-20个代理将数据发送给收集代理,然后这些收集代理必须将其写入HDFS。何处运行写入HDFS的flume代理?

在哪里运行这些收集器代理?在Hadoop集群的数据节点上还是在集群外部?每个人有什么优点/缺点,人们目前如何运行它们?

回答

1

第2层水槽代理使用hdfsSink直接写入HDFS。更重要的是,Tier1可以使用故障转移接收器组。如果第二层水槽中的一个出现故障,

+1

问题是,如果我应该在数据节点上运行第2层代理? –

+0

不需要。如果在datanodes中运行tier2并使用filechannel,则磁盘IO导致datanode性能最差。 – edwardsbean

+0

您能否详细说明在数据节点上运行如何导致最差的性能? –

1

我假设你使用类似Flume的东西。如果是这样的话,Flume代理(至少是第一层)会运行数据源。 IE:用于Web日志的Web服务器..

Flume确实支持其他协议,如JMS,因此在这些场景中位置会有所不同。

对于生产集群,您不希望在Datanodes上运行像flume这样的“代理”。最好对集群的硬件资源进行调整。

如果您有很多代理,那么您会希望使用分层架构来整合并将众多源代码汇集到一小部分将写入HDFS的代理中。这有助于控制集群对外部服务器的可见性和暴露程度。

+0

我想我并不清楚,因为我想。我正在使用水槽的分层架构。我的问题是写入HDFS的最后一层为最佳写入吞吐量而生活在哪里?一级代理运行在应用服务器虚拟机上,二级水槽代理运行在专用盒子上,我们应该在哪里运行三级水槽代理? –