hadoop - 使用 Kafka 加载 HDFS 有哪些选项?

标签 hadoop apache-kafka hdfs streaming

在当前技术领域,使用 Apache Kafka 加载 HDFS 的选项/解决方案有哪些?

我在这里寻找 Kafka 消费者端的选项。还在寻找每天至少扩展到几 TB 的东西。

我还有一些基本要求:a) HDFS 的输出应该是分区的。 b) Kafka 上的记录可能不严格按时间顺序排列,但输出应该(尽可能)按时间顺序排列。 c) 在系统中断(网络分区、sw/hw 崩溃等)的情况下可靠

我浏览了 StackOverflow,但许多问答都已过时。因此这个问题。

最佳答案

在 Confluent HDFS Connector 之前,有一个名为 Camus 的产品,您仍然可以在 LinkedIn Github 下找到它。该项目已移至 Apache Gobblin 项目。

就您可能发现的过时帖子而言,Apache Flume 或 Storm 仍然存在,并且似乎是 Cloudera 环境的唯一内置流选项。

Hortonworks 提供 Apache Nifi

Streamsets 提供了一个 Cloudera 包裹。

Flink 和 Spark 可以工作,但需要一定程度的知识才能可靠地扩展、维护和调试这些自定义流程(与 Connect、Camus/Gobblin、Flume 中的简单配置文件相比)。

根据您的环境中可用的选项,虽然我个人对 Fluentd 或 Logstash 没有太多经验,但我知道它们有 Kafka 和 HDFS 配置选项


根据我的工作经验,Connect & Camus 提供了最灵活的分区选项(即使您需要自己添加自定义分区程序,分区程序界面也非常简单)。 Flume 可能是类似的,不过,我没有用过它。

Nifi 和 Streamsets 不需要部署任何 JAR 文件,这有它的好处。

Storm/Spark/Flink当然都需要以创建分区的方式编写。


可靠性和交付保证应通过抵消管理和主题保留在代理和消费者端部分处理。一般来说,大部分的消费进程都会给你“至少一次”的消费

关于hadoop - 使用 Kafka 加载 HDFS 有哪些选项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51866072/

相关文章:

java - 集群中的拓扑是否可以写入本地文件系统上的 txt 文件? (在同一系统上运行的集群)

java - 卡夫卡流: how to handle dynamic conditions in a filter?

java - 如何在没有 spark 或框架的情况下将 parquet 文件保存在 hdfs 中?

java - Hadoop Mapreduce 多个输入文件

scala - Tachyon on Dataproc Master 复制错误

hadoop - 限制用户在Hive中的数据库中创建表

java - Apache kafka 嵌入式 kafka junit 测试 - 当我运行单元测试时启动应用程序

hadoop - Hive 因 java.lang.IncompatibleClassChangeError 崩溃

hadoop - Spark - 如何在 HDFS 中重组目录

hadoop - 如何将 hdfs 文件读入 apache beam?