簡體   English   中英

如何將 Apache Kafka 與 Amazon S3 連接?

[英]How to connect Apache Kafka with Amazon S3?

我想使用 Kafka Connect 將數據從 Kafka 存儲到存儲桶 s3 中。 我已經運行了 Kafka 的主題,並且創建了一個存儲桶 s3。 我的主題有關於 Protobuffer 的數據,我嘗試使用https://github.com/qubole/streamx並獲得下一個錯誤:

 [2018-10-04 13:35:46,512] INFO Revoking previously assigned partitions [] for group connect-s3-sink (org.apache.kafka.clients.consumer.internals.ConsumerCoordinator:280)
 [2018-10-04 13:35:46,512] INFO (Re-)joining group connect-s3-sink (org.apache.kafka.clients.consumer.internals.AbstractCoordinator:326)
 [2018-10-04 13:35:46,645] INFO Successfully joined group connect-s3-sink with generation 1 (org.apache.kafka.clients.consumer.internals.AbstractCoordinator:434)
 [2018-10-04 13:35:46,692] INFO Setting newly assigned partitions [ssp.impressions-11, ssp.impressions-10, ssp.impressions-7, ssp.impressions-6, ssp.impressions-9, ssp.impressions-8, ssp.impressions-3, ssp.impressions-2, ssp.impressions-5, ssp.impressions-4, ssp.impressions-1, ssp.impressions-0] for Group connect-s3-sink(org.apache.kafka.clients.consumer.internals.ConsumerCoordinator:219)
 [2018-10-04 13:35:47,193] ERROR Task s3-sink-0 threw an uncaught an unrecoverable exception (org.apache.kafka.connect.runtime.WorkerTask:142)
 java.lang.NullPointerException
    at io.confluent.connect.hdfs.HdfsSinkTask.close(HdfsSinkTask.java:122)
    at org.apache.kafka.connect.runtime.WorkerSinkTask.commitOffsets(WorkerSinkTask.java:290)
    at org.apache.kafka.connect.runtime.WorkerSinkTask.closePartitions(WorkerSinkTask.java:421)
    at org.apache.kafka.connect.runtime.WorkerSinkTask.execute(WorkerSinkTask.java:146)
    at org.apache.kafka.connect.runtime.WorkerTask.doRun(WorkerTask.java:140)
    at org.apache.kafka.connect.runtime.WorkerTask.run(WorkerTask.java:175)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)
[2018-10-04 13:35:47,194] ERROR Task is being killed and will not recover until manually restarted (org.apache.kafka.connect.runtime.WorkerTask:143)
[2018-10-04 13:35:51,235] INFO Reflections took 6844 ms to scan 259 urls, producing 13517 keys and 95788 values (org.reflections.Reflections:229)

我做了以下步驟:

  1. 我克隆了存儲庫。
  2. mvn DskipTests package
  3. nano config/connect-standalone.properties

     bootstrap.servers=ip-myip.ec2.internal:9092 key.converter=com.qubole.streamx.ByteArrayConverter value.converter=com.qubole.streamx.ByteArrayConverter
  4. nano config/quickstart-s3.properties

     name=s3-sink connector.class=com.qubole.streamx.s3.S3SinkConnector format.class=com.qubole.streamx.SourceFormat tasks.max=1 topics=ssp.impressions flush.size=3 s3.url=s3://myaccess_key:mysecret_key@mybucket/demo
  5. connect-standalone /etc/kafka/connect-standalone.properties quickstart-s3.properties

我想知道我這樣做是否可以,或者是否可以通過其他方式將數據從 Kafka 保存到 S3 中。

您可以使用 Kafka Connect 與 Kafka Connect S3 連接器進行此集成。

Kafka Connect是 Apache Kafka 的一部分, S3 連接器是一個開源連接器,可以獨立使用,也可以作為Confluent Platform 的一部分使用。

有關 Kafka Connect 的一般信息和示例,本系列文章可能會有所幫助:

免責聲明:我為 Confluent 工作,並撰寫了上述博客文章。


2020 年 4 月:我錄制了一個視頻,展示了如何使用 S3 接收器: https : //rmoff.dev/kafka-s3-video

另一種方法是使用日志輪換寫入消費者,然后將玉米文件寫入 S3 。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM