Kafka Connect(Japanese)
-
Upload
- -
Category
Technology
-
view
184 -
download
0
Transcript of Kafka Connect(Japanese)
K A F K A M E E T U P J A P A N # 1
R O M A N S H T Y K H
株式会社サイバーエージェント
Kafka Connect Writing Your Connector
@rshtykh
Kafka Connect
“tool for scalably and reliably streaming data between Apache Kafka and other data systems”
ストリームデータをKafkaへ・からコーピーする
http://docs.confluent.io/2.0.0/connect/intro.html
http://www.confluent.io/blog/apache-kafka-0.9-is-released
Kafka 0.9+
Connectors
ストリーム
オフセット付メッセージ
ミッション
パーティション入力ストリームからパーティション出力ストリームへのデータコーピー
Sink Connector
Kafkaから
Source Connector
Kafkaへ
Streams with offsets
Connectors
Task
スレッド
データコーピーの処理
Connectorインスタンスにより処理が指定される
Connectors
実行モード
Standalone テスト用、シンプルな処理
Distributed
From “Kafka Connect: Real-time Data Integration at Scale with Apache Kafka”
Connectors
実行モード
Standalone テスト用、シンプルな処理
Distributed
From “Kafka Connect: Real-time Data Integration at Scale with Apache Kafka”
Connectors
実行モード
Standalone テスト用、シンプルな処理
Distributed
From “Kafka Connect: Real-time Data Integration at Scale with Apache Kafka”
Implementing Connectors
メッセージは、key-valueレコード
java.lang.String, java.lang.Integer, java.lang.Map, ..., 或いはorg.apache.kafka.connect.data.Struct
org.apache.kafka.connect.data.Schema
Kafka Connectランタイムデータ形式 byte[] org.apache.kafka.connect.storage.Converter
Schema schema = SchemaBuilder.struct().name("com.example.Person") .field("name", Schema.STRING_SCHEMA).field("age", Schema.INT32_SCHEMA).build() Struct struct = new Struct(schema).put("name", "Bobby McGee").put("age", 21)
Implementing Connectors
Sink
public abstract class Connector{ public abstract String version() public void initialize(ConnectorContext ctx) public void initialize(ConnectorContext ctx, List<Map<String, String>> taskConfigs) public abstract void start(Map<String, String> props) public abstract void stop(); public void reconfigure(Map<String, String> props) public abstract ConfigDef config() public Config validate(Map<String, String> connectorConfigs) public abstract Class<? extends Task> taskClass() public abstract List<Map<String, String>> taskConfigs(int maxTasks) }
Implementing Connectors
Sink
public abstract class SinkTask implements Task { abstract void start(Map<String,String> props) abstract void stop() public void initialize(SinkTaskContext context) { ... } public abstract void put(Collection<SinkRecord> records); public abstract void flush(Map<TopicPartition, Long> offsets); public void onPartitionsAssigned(Collection<TopicPartition> partitions) {} public void onPartitionsRevoked(Collection<TopicPartition> partitions) {} }
Connectors
http://www.confluent.io/product/connectors
Connectors
http://www.confluent.io/product/connectors 他多数