可用的字段和配置信息,請參考表格。
需要注意的是配置的段的定義爲爲: ioConfig
字段(Field) | 類型(Type) | 描述(Description) | 是否必須(Required) |
---|---|---|---|
topic |
String | 從 Kafka 中讀取數據的 主題(topic)名。你必須要指定一個明確的 topic。例如 topic patterns 還不能被支持。 | Y |
inputFormat |
Object | inputFormat 被指定如何來解析處理數據。請參考 the below section 來了解更多如何指定 input format 的內容。 |
Y |
consumerProperties |
Map<String, Object> | 傳遞給 Kafka 消費者的一組屬性 map。這個必須包含有一個 bootstrap.servers 屬性。這個屬性的值爲: <BROKER_1>:<PORT_1>,<BROKER_2>:<PORT_2>,... 這樣的服務器列表。針對使用 SSL 的鏈接: keystore , truststore ,key 可以使用字符串密碼,或者使用 Password Provider 來進行提供。 |
Y |
pollTimeout |
Long | Kafka 消費者拉取數據等待的時間。單位爲:毫秒(milliseconds)The length of time to wait for the Kafka consumer to poll records, in | N(默認=100)) |
replicas |
Integer | 副本的數量, 1 意味着一個單一任務(無副本)。副本任務將始終分配給不同的 workers,以提供針對流程故障的恢復能力。 | 否(no)(默認值:1) |
taskCount |
Integer | 在一個 replica set 集中最大 reading 的數量。這意味着讀取任務的最大的數量將是 taskCount * replicas , 任務總數(reading + publishing)是大於這個數值的。請參考 Capacity Planning 中的內容。如果 taskCount > {numKafkaPartitions} 的話,總的 reading 任務數量將會小於 taskCount 。 |
N(默認=1)) |
taskDuration |
ISO8601 Period | 任務停止讀取數據並且將已經讀取的數據發佈爲新段的時間週期 | N(默認=PT1H) |
startDelay |
ISO8601 Period | supervisor 開始管理任務之前的等待時間週期。 | N(默認=PT1S) |
period |
ISO8601 Period | supervisor 將要執行管理邏輯的時間週期間隔。請注意,supervisor 將會在一些特定的事件發生時進行執行(例如:任務成功終止,任務失敗,任務達到了他們的 taskDuration)。因此這個值指定了在在 2 個事件之間進行執行的最大時間間隔週期。 | N(默認=PT30S) |
useEarliestOffset |
Boolean | 如果 supervisor 是第一次對數據源進行管理,supervisor 將會從 Kafka 中獲得一系列的數據偏移量。這個標記位用於在 Kafka 中確定最早(earliest)或者最晚(latest)的偏移量。在通常使用的情況下,後續的任務將會從前一個段結束的標記位開始繼續執行,因此這個參數只在 supervisor 第一次啓動的時候需要。 | 否(no)(默認值:false) |
completionTimeout |
ISO8601 Period | 聲明發布任務爲失敗並終止它 之前等待的時間長度。如果設置得太低,則任務可能永遠不會發布。任務的發佈時刻大約在 taskDuration (任務持續)時間過後開始。 |
N(默認=PT30M) |
lateMessageRejectionStartDateTime |
ISO8601 DateTime | 用來配置一個時間,當消息時間戳早於此日期時間的時候,消息被拒絕。例如我們將這個時間戳設置爲 2016-01-01T11:00Z 然後 supervisor 在 2016-01-01T12:00Z 創建了一個任務,那麼早於 2016-01-01T11:00Z 的消息將會被丟棄。這個設置有助於幫助避免併發(concurrency)問題。例如,如果你的數據流有延遲消息,並且你有多個需要在同一段上操作的管道(例如實時和夜間批處理攝取管道)。 |
N(默認=none) |
lateMessageRejectionPeriod |
ISO8601 Period | 配置一個時間週期,當消息時間戳早於此週期的時候,消息被拒絕。例如,如果這個參數被設置爲 PT1H 同時 supervisor 在 2016-01-01T12:00Z 創建了一個任務,那麼所有早於 2016-01-01T11:00Z 的消息將會被丟棄。個設置有助於幫助避免併發(concurrency)問題。例如,如果你的數據流有延遲消息,並且你有多個需要在同一段上操作的管道(例如實時和夜間批處理攝取管道)。請注意 lateMessageRejectionPeriod 或者 lateMessageRejectionStartDateTime 2 個參數只能指定一個,不能同時賦值。 |
N(默認=none) |
earlyMessageRejectionPeriod |
ISO8601 Period | 用來配置一個時間週期,當消息時間戳晚於此週期的時候,消息被拒絕。例如,如果這個參數被設置爲 PT1H ,taskDuration 也被設置爲 PT1H ,然後 supervisor 在 2016-01-01T12:00Z 創建了一個任務,那麼所有晚於 2016-01-01T14:00Z 的消息丟會被丟棄,這是因爲任務的執行時間爲 1 個小時,earlyMessageRejectionPeriod 參數的設置爲 1 個小時,因此總計需要等候 2 個小時。 注意: 任務有時候的執行時間可能會超過任務 taskDuration 參數設定的值,例如,supervisor 被掛起的情況。如果設置 earlyMessageRejectionPeriod 參數過低的話,在任務的執行時間超過預期的話,將會有可能導致消息被意外丟棄。 |
N(默認=none) |
如上面表格的配置信息,我們可以對 Kafka 中的配置進行一些調整來滿足特定的項目消息需求。
如果你對需要調整的默認值不是非常瞭解和清楚的話,可以使用默認值,通常默認值不是最優的,但是可能是能夠保障能正確工作的最低配置。
本文分享自微信公衆號 - CWIKIUS(CWIKIUS)。
如有侵權,請聯繫 [email protected] 刪除。
本文參與“OSC源創計劃”,歡迎正在閱讀的你也加入,一起分享。