處理大型記錄 - Amazon Kinesis Data Streams

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

處理大型記錄

Amazon Kinesis Data Streams 支援高達 10 MB (MiBs的記錄。建議將此功能用於處理超過預設 1 MiB 記錄大小限制的間歇性資料承載。現有和新建立串流的預設記錄大小上限設定為 1 MiB。

此功能有利於物聯網 (IoT) 應用程式、變更資料擷取 (CDC) 管道,以及需要偶爾處理較大資料承載的機器學習工作流程。若要開始在串流中使用大型記錄,請更新串流的記錄大小上限。

重要

對於寫入,個別碎片輸送量限制為 1 MB/s,對於讀取,2 MB/s 保持不變,但支援更大的記錄大小。Kinesis Data Streams 旨在適應間歇性大型記錄,以及小於或等於 1 MiB 的記錄基準流量。它的設計無法容納持續大量大型記錄擷取。

更新您的串流以使用大型記錄

使用 Kinesis Data Streams 處理較大的記錄
  1. 導覽至 Kinesis Data Streams 主控台。

  2. 選取您的串流,然後前往組態索引標籤。

  3. 按一下編輯,其位於記錄大小上限旁。

  4. 設定您的記錄大小上限 (最多 10 MiB)。

  5. 儲存您的變更。

此設定只會調整此 Kinesis 資料串流的記錄大小上限。在提高此限制之前,請確認所有下游應用程式都可以處理較大的記錄。

您也可以使用 CLI AWS 更新此設定:

aws kinesis update-max-record-size \ --stream-arn \ --max-record-size-in-ki-b 5000

使用大型記錄最佳化串流效能

建議將大型記錄維持在整體流量的 2% 以下。在串流中,每個碎片的輸送量容量為每秒 1 MiB。為了容納大型記錄,Kinesis Data 串流最多爆量 10 MiBs同時平均每秒 1 MiB。支援大型記錄的此容量會持續重新填入串流。重新填入速率取決於大型記錄的大小和基準記錄的大小。為了獲得最佳結果,請使用統一分佈的分割區索引鍵。如需 Kinesis 隨需擴展方式的詳細資訊,請參閱隨需模式功能和使用案例

使用大型記錄緩解限流

緩解限流
  1. 在生產者應用程式中使用指數退避實作重試邏輯。

  2. 使用隨機分割區索引鍵,將大型記錄分散到可用的碎片。

  3. 將承載存放在 Amazon S3 中,並僅傳送中繼資料參考至串流,以取得大型記錄的連續串流。如需詳細資訊,請參閱使用 Amazon Kinesis Data Streams 處理大型記錄

使用 Kinesis Data Streams APIs 處理大型記錄

大型記錄支援引進一個新的 API,並更新兩個現有的控制平面 APIs,以處理高達 10 MiBs 的記錄。

用於修改記錄大小的 API:

  • UpdateMaxRecordSize:設定現有串流的記錄大小上限,上限為 10 MiBs。

現有 APIs更新:

  • CreateStream:新增選擇性MaxRecordSizeInKiB參數,以在建立串流期間設定記錄大小限制。

  • DescribeStreamSummary:傳回 MaxRecordSizeInKiB 欄位以顯示目前的串流組態。

列出的所有 APIs 都會維持現有串流的回溯相容性。如需完整的 API 文件,請參閱 Amazon Kinesis Data Streams Service API 參考

AWS 元件與大型記錄相容

下列 AWS 元件與大型記錄相容:

元件 描述

AWS 開發套件

AWS SDK 支援處理大型記錄。您可以使用 AWS SDKs 中的可用方法,將串流的記錄大小上限更新至 10 MiB。如需詳細資訊,請參閱搭配 AWS SDK 使用此服務

Kinesis 消費者程式庫 (KCL)

從 2.x 版開始,KCL 支援處理大型記錄。若要使用大型記錄支援,請更新串流maxRecordSize的 ,並使用 KCL。如需詳細資訊,請參閱使用 Kinesis Client Library

Kinesis Producer Library (KPL)

從 1.0.5 版開始,KPL 支援處理大型記錄。若要使用大型記錄支援,請更新串流maxRecordSize的 ,並使用 KPL。如需詳細資訊,請參閱使用 Amazon Kinesis Producer Library (KPL) 開發生產者

Amazon EMR

Amazon EMR with Apache Spark 支援處理高達 Kinesis Data Streams 限制 (10 MiBs 的大型記錄。若要使用大型記錄支援,請使用 readStream函數。如需詳細資訊,請參閱 Amazon EMR 和 Amazon Kinesis 整合

Amazon Data Firehose

與 Kinesis Data Streams 搭配使用時,具有大型記錄的 Amazon Data Firehose 行為取決於交付目的地:

  • Amazon S3:支援交付大型記錄,無需任何其他組態。當您使用資料格式轉換時,Firehose 支援交付大型記錄。當您使用動態分割時,Firehose 不支援交付大型記錄。

  • Lambda:我們不建議在觸發下游 Lambda 函數時搭配 Firehose 使用大型記錄。這可能會導致間歇性故障。

  • HTTP:Firehose 不支援交付大型記錄。

  • Snowflake:Firehose 不支援交付大型記錄。

  • Amazon Redshift:Firehose 不支援交付大型記錄。

對於需要以大型記錄交付至 Snowflake 或 Redshift 的應用程式,請先將資料交付至 Amazon S3。之後,使用擷取、轉換、載入 (ETL) 程序載入資料。對於所有其他目的地,請在proof-of-concept環境中使用大型記錄測試行為,然後再擴展到生產用量。處理大型記錄會因目的地而異。

AWS Lambda

AWS Lambda 支援最多 6 MiBs承載。此限制包括轉換為 base-64 編碼的 Kinesis 承載,以及與事件來源映射 (ESM) 相關聯的中繼資料。對於小於 6 MiBs的記錄,Lambda 會使用 ESM 來處理它們,而不需要額外的組態。對於大於 6 MiBs的記錄,Lambda 會使用失敗時的目的地來處理它們。您必須使用 ESM 設定失敗時目的地,以處理超過 Lambda 處理限制的記錄。傳送至失敗時目的地的每個事件都是 JSON 文件,其中包含有關失敗調用的中繼資料。

無論記錄大小為何,建議在 ESM 中建立失敗時目的地。這可確保不會捨棄任何記錄。如需詳細資訊,請參閱設定失敗呼叫的目的地

Amazon Redshift

從 Kinesis Data Streams 串流資料時,Amazon Redshift 僅支援小於 1 MiB 的記錄大小。超過此限制的記錄不會處理。未處理的記錄會記錄為 sys_stream_scan_errors。如需詳細資訊,請參閱 SYS_STREAM_SCAN_ERRORS

Kinesis Data Streams 的 Flink 連接器

使用來自 Kinesis Data Streams 的資料有兩種方法:Kinesis 來源連接器和 Kinesis 接收器連接器。來源連接器支援處理小於 1 MiB 的記錄,最多 10 MiBs 請勿將接收器連接器用於大於 1 MiB 的記錄。如需詳細資訊,請參閱使用連接器透過 DataStream API 在 Amazon Managed Service for Apache Flink 中移動資料

支援大型記錄的區域

此 Amazon Kinesis Data Streams 功能僅適用於下列 AWS 區域:

AWS 區域 區域名稱

eu-north-1

歐洲 (斯德哥爾摩)

me-south-1

Middle East (Bahrain)

ap-south-1

亞太地區 (孟買)

eu-west-3

Europe (Paris)

ap-southeast-3

亞太地區 (雅加達)

us-east-2

美國東部 (俄亥俄)

af-south-1

非洲 (開普敦)

eu-west-1

歐洲 (愛爾蘭)

me-central-1

中東 (阿拉伯聯合大公國)

eu-central-1

歐洲 (法蘭克福)

sa-east-1

南美洲 (聖保羅)

ap-east-1

亞太地區 (香港)

ap-south-2

亞太地區 (海德拉巴)

us-east-1

美國東部 (維吉尼亞北部)

ap-northeast-2

亞太地區 (首爾)

ap-northeast-3

亞太地區 (大阪)

eu-west-2

歐洲 (倫敦)

ap-southeast-4

亞太地區 (墨爾本)

ap-northeast-1

亞太地區 (東京)

us-west-2

美國西部 (奧勒岡)

us-west-1

美國西部 (加利佛尼亞北部)

ap-southeast-1

亞太地區 (新加坡)

ap-southeast-2

亞太地區 (悉尼)

il-central-1

以色列 (特拉維夫)

ca-central-1

加拿大 (中部)

ca-west-1

加拿大西部 (卡加利)

eu-south-2

歐洲 (西班牙)

cn-northwest-1

中國 (寧夏)

eu-central-2

歐洲 (蘇黎世)

us-gov-east-1

AWS GovCloud (美國東部)

us-gov-west-1

AWS GovCloud (美國西部)