【问题标题】:Where to run the flume agent that writes to HDFS?在哪里运行写入 HDFS 的水槽代理?
【发布时间】:2014-03-26 00:58:49
【问题描述】:

我有 25-20 个代理将数据发送到几个收集器代理,然后这些收集器代理必须将其写入 HDFS。

在哪里运行这些收集器代理?在 Hadoop 集群的 Data 节点上还是在集群外部?每种方法的优缺点是什么?人们目前如何使用它们?

【问题讨论】:

    标签: hadoop flume flume-ng


    【解决方案1】:

    第 2 层水槽代理使用 hdfsSink 直接写入 HDFS。更重要的是,Tier1 可以使用故障转移接收器组。万一2级水槽代理之一宕机。

    【讨论】:

    • 问题是,我是否应该在数据节点上运行第 2 层代理?
    • 不需要。如果你在datanodes中运行tier2并使用filechannel,磁盘IO导致datanode性能最差。
    • 您能否详细说明在数据节点上运行导致性能最差的原因?
    • 为了从故障中恢复,我们在生产环境中使用filechannel。filechannel将每个事件存储在磁盘中,hdfsSink从磁盘中获取事件。如果您在datanode中运行flume,flume和datenode将与磁盘IO竞争。
    【解决方案2】:

    我假设您使用 Flume 之类的东西。如果是这种情况,Flume 代理(至少是第一层)会在数据来源的任何地方运行。 IE:用于 Web 日志的 Web 服务器..

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

    对于生产集群,您不希望在 Datanodes 上运行像 Flume 这样的“代理”。最好为集群平衡该硬件的资源。

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

    【讨论】:

    • 我想我并不清楚。我正在使用水槽的分层架构。我的问题是写入 HDFS 的最后一层在哪里可以获得最佳写入吞吐量?第 1 层代理在应用服务器虚拟机上运行,​​第 2 层 Flume 代理在专用机器上运行,我们应该在哪里运行第 3 层 Flume 代理?
    猜你喜欢
    • 1970-01-01
    • 2018-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-13
    • 1970-01-01
    相关资源
    最近更新 更多