Amazon Managed Service for Apache Flink 常見問答集
一般問題
什麼是 Amazon Managed Service for Apache Flink?
有了 Amazon Managed Service for Apache Flink,您就可以運用 Apache Flink 即時轉換和分析串流資料。Apache Flink 是處理資料串流的開放原始碼框架及引擎。Amazon Managed Service for Apache Flink 可簡化建構、管理及整合 Apache Flink 應用程式與其他 AWS 服務的複雜程序。
Amazon Managed Service for Apache Flink 會處理持續執行串流應用程式所需的所有事項,並自動擴展以符合傳入資料的容量及輸送量。使用 Amazon Managed Service for Apache Flink,無須管理伺服器,沒有最低費用或設定成本,而只需為串流應用程式耗用的資源付費。
什麼是即時串流處理?為什麼我需要它?
我可以使用 Amazon Managed Service for Apache Flink 做什麼?
在很多使用案例上,您都可以使用 Amazon Managed Service for Apache Flink 來持續處理資料,並在幾秒或幾分鐘內取得洞見,不再需要等待數天或數個月。 Amazon Managed Service for Apache Flink 能讓您快速建置端對端的串流處理應用程式,以處理日誌分析、點擊流分析、物聯網 (IoT)、廣告技術、遊戲等等。最常見的四種用途是:串流擷取轉換載入 (ETL)、持續指標產生、回應式即時分析,和互動式資料串流查詢。
串流 ETL
有了串流 ETL 應用程式,您就可以先整理、豐富化、組織及轉換原始資料,再即時載入資料湖或資料倉儲,藉此減少或免除執行批次 ETL 步驟。這些應用程式可以將小記錄先緩衝到較大型的檔案再進行傳送,並且可以跨串流和資料表執行精密的聯結。例如,您可以建立一個應用程式來持續讀取存放在 Amazon Managed Streaming for Apache Kafka (Amazon MSK) 的 IoT 感應器資料、接著按照感應器類型將資料歸類,移除重複資料,根據指定的結構描述將資料正常化,然後將資料送交付到 Amazon Simple Storage Service (Amazon S3)。
持續指標產生
運用持續指標產生應用程式,您就可以監控和了解資料在一段時間內的趨勢。您的應用程式可以將串流資料彙總到關鍵資訊中,接著將其與報告資料庫和監控服務順暢整合,來即時服務您的應用程式和使用者。透過 Amazon Managed Service for Apache Flink,您就可以使用 Apache Flink 程式碼 (以 Java、Scala、Python 或 SQL 撰寫),持續產生隨時段推移的時間序列分析。舉例來說,您可以每分鐘計算出最高分玩家,然後將資料傳送到 Amazon DynamoDB,為行動遊戲建立一個即時排行榜。您也可以每 5 分鐘計算出網站的不重複訪客數,然後將處理的結果傳送到 Amazon Redshift,以追蹤網站的流量。
回應式即時分析
回應式即時分析應用程式會在特定指標達到預定的閾值時,傳送即時警示或通知,或者在更進階的用途中,當您的應用程式使用機器學習 (ML) 演算法偵測到異常時,傳送即時警示或通知。運用這類應用程式,您就可以馬上即時回應業務變更,像是預測行動應用程式的用戶棄用率,以及識別效能降級的系統等。例如,應用程式可以運算客戶端 API 在一段時間後的可用性或成功率,然後將結果傳送到 Amazon CloudWatch。您可以建置另一個應用程式尋找滿足特定條件的事件,然後使用 Amazon Kinesis Data Streams 和 Amazon Simple Notification Service (Amazon SNS) 自動通知相關客戶。
資料串流的互動式分析
互動式分析可協助您即時串流資料探索。使用臨機查詢或程式,可檢查出自 Amazon MSK 或 Amazon Kinesis Data Streams 的串流,將這些串流之內的資料情形予以視覺化。例如,可檢視計算窗期平均的即時指標所表現的行為,並將彙總資料傳送至自選的目的地。互動式分析也有助於串流處理應用程式的反覆開發。您所建置的查詢能隨新資料到來而持續更新。使用 Amazon Managed Service for Apache Flink Studio,您就可以將這些查詢部署為啟用自動擴展和耐久狀態備份之下持續地執行。
開始使用
如何開始使用 Amazon Managed Service for Apache Flink 的 Apache Flink 應用程式?
如何開始使用 Amazon Managed Service for Apache Flink 的 Apache Beam 應用程式?
我要如何開始使用 Amazon Managed Service for Apache Flink Studio?
Amazon Managed Service for Apache Flink 的限制是什麼?
Amazon Managed Service for Apache Flink 是否支援結構描述註冊?
是,透過 Apache Flink DataStream 連接器,Amazon Managed Service for Apache Flink 應用程式可以使用 AWS Glue 結構描述登錄檔 (AWS Glue 的無伺服器功能)。您可以將 Apache Kafka、Amazon MSK 和 Amazon Kinesis Data Streams 作為匯點或來源與 Amazon Managed Service for Apache Flink 工作負載整合。請造訪《AWS Glue 結構描述登錄檔開發人員指南》來開始使用並了解更多資訊。
主要概念
什麼是 Amazon Managed Service for Apache Flink 應用程式?
應用程式是您使用的 Amazon Managed Service for Apache Flink 實體。Amazon Managed Service for Apache Flink 應用程式可持續即時讀取和處理串流資料。您可以使用 Apache Flink 支援的語言撰寫應用程式程式碼,來處理傳入的串流資料並產生輸出。然後,Amazon Managed Service for Apache Flink 將輸出寫入到設定好的目的地。
每個應用程式都由三個主要元件組成:
- 輸入:輸入是應用程式的串流來源。在輸入組態中,您可以將串流來源映射至資料串流。資料會從資料來源流入資料串流。您可以使用應用程式的程式碼來處理來自這些資料串流的資料,並將已處理的資料傳送至後續資料串流或目的地。若為 Apache Flink 應用程式和 Studio 筆記本,您可以將輸入新增至應用程式的程式碼內,若為 Amazon Managed Service for Apache Flink 應用程式,請透過 API 來進行。
- 應用程式的程式碼:應用程式的程式碼是用來處理輸入並產生輸出的一系列 Apache Flink 運算子。最簡單來說,應用程式的程式碼可以是單一 Apache Flink 運算子,它會讀取與串流來源關聯的資料串流,然後寫入與輸出關聯的另一個資料串流。對於 Studio 筆記本,可以是簡單的 Flink SQL 選擇查詢,結果顯示在筆記本內的上下文中。您可以使用 Apache Flink 支援的語言來為 Amazon Managed Service for Apache Flink 應用程式或 Studio 筆記本撰寫 Apache Flink 程式碼。
- 輸出:您之後可以選擇性地設定應用程式輸出,將資料保留到外部目的地。若為 Amazon Managed Service for Apache Flink 應用程式和 Studio 筆記本,您可以將輸出新增至應用程式的程式碼內。
支援哪種應用程式程式碼?
管理應用程式
我可以如何監控 Amazon Managed Service for Apache Flink 應用程式的操作和效能?
AWS 提供多各用於監控 Amazon Managed Service for Apache Flink 應用程式的工具,包含存取 Apache Flink 應用程式的 Flink 儀表板。您可以設定其中一些工具來為您進行監控。如需進一步了解如何監控您的應用程式,請探索下列開發人員指南:
- 《Amazon Managed Service for Apache Flink 開發人員指南》中的監控 Amazon Managed Service for Apache Flink。
- 《Amazon Managed Service for Apache Flink Studio 開發人員指南》中的監控 Amazon Managed Service for Apache Flink。
我要如何管理和控制 Amazon Managed Service for Apache Flink 應用程式的存取?
Amazon Managed Service for Apache Flink 需要許可才可從應用程式指定的串流資料來源讀取記錄。Amazon Managed Service for Apache Flink 還需要許可,才能將應用程式輸出寫入應用程式輸出組態中指定的目標。建立 Amazon Managed Service for Apache Flink 可以擔任的 AWS Identity and Access Management (IAM) 角色即可授予這些許可。您授予此角色的許可決定了當服務擔任角色時 Amazon Managed Service for Apache Flink 可以執行的動作。如需詳細資訊,請參閱下列開發人員指南:
Amazon Managed Service for Apache Flink 會如何擴展我的應用程式?
在大部分情況下,Amazon Managed Service for Apache Flink 會彈性地擴展您的應用程式,以應付來源串流的資料輸送量和查詢複雜性。Amazon Managed Service for Apache Flink 會以 Amazon KPU 的形式佈建容量。一個 KPU 可提供 1 個 vCPU 和 4 GB 記憶體。
對於 Apache Flink 應用程式和 Studio 筆記本,Amazon Managed Service for Apache Flink 會為每個 KPU 指派 50 GB 的執行中應用程式儲存體,供您的應用程式使用於檢查點,您也可以透過暫存磁碟來使用。檢查點是執行中應用程式的最新備份,可用來立即復原損毀的應用程式。您也可以在 API 中使用 Parallelism 和 ParallelismPerKPU 參數,控制 Amazon Managed Service for Apache Flink 應用程式工作的平行執行 (例如讀取來源或執行運算子)。平行度用於定義工作的平行執行個體數目。所有運算子、來源和匯點都會搭配定義的平行度 (預設為 1) 來執行。每個 KPU 的平行度則定義您應用程式每個 KPU 的平行工作的數量,預設為 1。如需詳細資訊,請參閱《Amazon Managed Service for Apache Flink 開發人員指南》中的「擴展」。
建置和管理 Amazon Managed Service for Apache Flink 應用程式的相關最佳實務為何?
如需有關 Apache Flink 最佳實務的資訊,請參閱《Amazon Managed Service for Apache Flink 開發人員指南》中的最佳實務一節。本節將涵蓋有關容錯能力、效能、日誌、編碼等的最佳實務。
如需有關 Amazon Managed Service for Apache Flink Studio 最佳實務的資訊,請參閱《Amazon Managed Service for Apache Flink Studio 開發人員指南》中的「最佳實務」一節。除了最佳實務外,本節涵蓋 SQL、Python 及 Scala 應用程式;將程式碼部署為持續執行之串流處理應用程式的要求;效能、日誌記錄等的最佳實務與範例。
我可以使用 Amazon Managed Service for Apache Flink 應用程式存取 Amazon VPC 後方的資源嗎?
是。您可以存取 Amazon VPC 後方的資源。如需了解如何設定您的應用程式以進行 VPC 存取,請參閱《Amazon Managed Service for Apache Flink 開發人員指南》中的使用 Amazon VPC 一節。
單一 Amazon Managed Service for Apache Flink 應用程式可以存取多個 VPC 嗎?
連接至 VPC 的 Amazon Managed Service for Apache Flink 應用程式是否也能存取網際網路和 AWS 服務端點?
設定為存取特定 VPC 中資源的 Amazon Managed Service for Apache Flink 應用程式與 Amazon Managed Service for Apache Flink Studio 筆記本,其預設組態為不具備網際網路存取權。如需了解如何為您的應用程式設定網際網路的存取,請參閱《Amazon Managed Service for Apache Flink 開發人員指南》中的網際網路和服務存取一節。
定價和帳單
Amazon Managed Service for Apache Flink 費用是多少?
使用 Amazon Managed Service for Apache Flink,您僅需按實際用量付費。使用 Amazon Managed Service for Apache Flink 不需要佈建資源,也不用預付費用。
我們會根據您執行串流處理應用程式所使用的 Amazon KPU 數量,按時收費。單一 KPU 是由 1 個 vCPU 運算和 4 GB 記憶體組成的一個串流處理容量單位。根據處理複雜性和已處理的串流資料輸送量而定,記憶體和運算的需求會有所不同,因此 Amazon Managed Service for Apache Flink 會自動擴展您的串流處理程式所需的 KPU 數目。
在 Apache Flink 和 Apache Beam 應用程式方面,您需為每個應用程式支付額外一個 KPU 的應用程式協同運作費用。此外,也會針對 Apache Flink 和 Apache Beam 應用程式收取執行中應用程式儲存空間和耐久應用程式備份的費用。執行中應用程式儲存體用來在 Amazon Managed Service for Apache Flink 提供狀態處理能力,並按每月每 GB 收費。耐久應用程式備份為選擇性功能並按每月每 GB 收費,為應用程式提供時間點的恢復功能。
對於 Amazon Managed Service for Apache Flink Studio,在開發或互動模式下,會向您多計收 1 個 KPU 作為應用程式協同運作,另一個供互動開發使用。另外也會為執行中應用程式儲存體向您收費。不會因為耐久應用程式備份向您收費。
如需更多定價資訊,請參閱 Amazon Managed Service for Apache Flink 定價頁面。
使用執行中但未處理任何來源資料的 Amazon Managed Service for Apache Flink 應用程式是否需要付費?
對於 Apache Flink 和 Apache Beam 應用程式,如果您的 Amazon Managed Service for Apache Flink 應用程式正在執行,則會收取 2 個 KPU 和 50 GB 執行中應用程式儲存體的最低費用。
對於 Amazon Managed Service for Apache Flink Studio 筆記本,如果您的應用程式正在執行,則會收取 3 個 KPU 和 50 GB 執行中應用程式儲存體的最低費用。
除了 Amazon Managed Service for Apache Flink 之外,還有其他可能會產生的費用嗎?
AWS 免費方案中是否提供 Amazon Managed Service for Apache Flink?
建置 Apache Flink 應用程式
什麼是 Apache Flink?
Apache Flink 是用於串流和批次資料處理的開放原始碼架構和引擎。它讓串流應用程式的建構變得輕鬆,因為它提供強大的運算子,並且可以解決重複處理之類的核心串流問題。Apache Flink 透過資料串流,為分散式運算提供資料分散、通訊及容錯等能力。
如何開發應用程式?
您可以從下載包括 AWS SDK、Apache Flink 和 AWS 服務適用容器的開放原始碼程式庫開始。如需如何下載程式庫並建立您的第一個應用程式的指示,請參閱Amazon Managed Service for Apache Flink 開發人員指南。
應用程式的程式碼看起來是什麼樣子?
您可以使用資料串流和串流運算子撰寫 Apache Flink 程式碼。應用程式資料串流是您使用程式碼執行處理所依據的資料結構。由來源傳出的資料會持續流入應用程式資料串流。一或多個串流運算子會用來定義您的應用程式資料串流處理,包括 transform、partition、aggregate、join 和 window 等函數。資料串流和運算子可以採用串聯或平行鏈的方式相連接。使用虛擬程式碼的一個簡短範例如下所示。
DataStream <GameEvent> rawEvents = env.addSource(
New KinesisStreamSource(“input_events”));
DataStream <UserPerLevel> gameStream =
rawEvents.map(event - > new UserPerLevel(event.gameMetadata.gameId,
event.gameMetadata.levelId,event.userId));
gameStream.keyBy(event -> event.gameId)
.keyBy(1)
.window(TumblingProcessingTimeWindows.of(Time.minutes(1)))
.apply(...) - > {...};
gameStream.addSink(new KinesisStreamSink("myGameStateStream"));
我要如何使用 Apache Flink 運算子?
運算子會取用應用程式資料做為輸入,然後將處理過的資料傳送到應用程式資料串流做為輸出。您可以連接運算子,然後透過多個步驟建構應用程式,無需具備分散式系統的進階知識,即可實作和操作。
支援的運算子有哪些?
Amazon Managed Service for Apache Flink 支援取自 Apache Flink 的所有運算子,您可以使用這些運算子解決廣泛的使用案例問題,包含 map、KeyBy、aggregations、windows、joins 等等。例如,map 運算子可讓您執行任意處理,從傳入資料串流中取出一個元素,然後產生另一個元素。從邏輯上說,KeyBy 使用指定索引鍵來組織資料,讓您可以將類似資料點一起處理。Aggregations 會在多個索引鍵之間執行處理,如 sum、min 和 max。Window Join 會在指定索引鍵和視窗上將兩個資料串流聯結在一起。
如果上述運算子不符合您的需求,您可以自行建立自訂運算子。如需更多範例,請參閱《Amazon Managed Service for Apache Flink 開發人員指南》中的「運算子」一節。如需完整的 Apache Flink 運算子清單,請參閱 Apache Flink 文件。
Amazon Managed Service for Apache Flink 應用程式支援哪些整合?
您可以使用最少的程式碼來設定 Apache Flink 所提供的預先建立的整合,或建立自己的整合以連接至幾乎任何的資料來源。這個以 Apache Flink 為基礎的開放原始碼程式庫支援串流來源和目標 (即所謂的匯點),來處理資料傳送。此外,也支援透過非同步 I/O 連接器執行資料豐富化。其中一些連接器包含:
- 串流資料來源:Amazon Managed Streaming for Apache Kafka (Amazon MSK)、Amazon Kinesis Data Streams 目標或匯點:Amazon Kinesis Data Streams
- Amazon Kinesis Data Firehose、Amazon DynamoDB、Amazon Elasticsearch Service 和 Amazon S3 (透過檔案匯點整合)
Amazon Managed Service for Apache Flink 應用程式是否可以複寫串流和主題之間的資料?
是。您可以使用 Amazon Managed Service for Apache Flink 應用程式,在 Amazon Kinesis Data Streams、Amazon MSK 和 其他系統之間複寫資料。 我們的文件中提供的範例示範了如何從一個 Amazon MSK 主題讀取及寫入另一個主題。
是否支援自訂整合?
Amazon Managed Service for Apache Flink 應用程式提供哪些交付和處理模型?
如果應用程式是使用冪等運算子 (包括來源和匯點) 建立的,則 Amazon Managed Service for Apache Flink 中的 Apache Flink 應用程式會使用「恰好一次」的交付模型。也就是說,處理過的資料會影響下游結果恰好一次。
根據預設,Amazon Managed Service for Apache Flink 應用程式會使用 Apache Flink 的「恰好一次」語義。如果您設計應用程式時,使用利用 Apache Flink「恰好一次」語義的來源、運算子和匯點,則您的應用程式會支援恰好處理一次的語義。
是否可以從我的應用程式儲存空間存取本機儲存空間?
Amazon Managed Service for Apache Flink 會如何自動備份我的應用程式?
Amazon Managed Service for Apache Flink 會使用檢查點和快照,自動備份您的執行中應用程式的狀態。檢查點會儲存目前的應用程式狀態,並讓 Amazon Managed Service for Apache Flink 應用程式還原應用程式的位置,以提供與無失效相同的語義。檢查點會使用執行中應用程式儲存空間。用於 Apache Flink 應用程式的檢查點會透過 Apache Flink 的檢查點功能提供。快照會為應用程式儲存時間點的復原點,並使用耐久應用程式備份。快照類似於 Flink 儲存點。
什麼是應用程式快照?
支援哪些 Apache Flink 版本?
如需進一步瞭解支援的 Apache Flink 版本,請造訪 Amazon Managed Service for Apache Flink 版本備註頁面。此頁面也包含 Amazon Managed Service for Apache Flink 支援的 Apache Beam、Java、Scala、Python 和 AWS SDK 版本。
Amazon Managed Service for Apache Flink 應用程式是否可以執行 Apache Beam?
是的,Amazon Managed Service for Apache Flink 支援使用 Apache Beam 建置的串流應用程式。您可以使用 Java 建置 Apache Beam 串流應用程式,並在不同的引擎和服務中執行這些應用程式,包括在 Amazon Managed Service for Apache Flink 上使用 Apache Flink。您可以在Amazon Managed Service for Apache Flink 開發人員指南中找到支援的 Apache Flink 和 Apache Beam 版本的相關資訊。
在受管筆記本中建置 Amazon Managed Service for Apache Flink Studio 應用程式
如何開發 Studio 應用程式?
您可以從 Amazon Managed Service for Apache Flink Studio、Amazon Kinesis Data Streams 或 Amazon MSK 主控台開始,僅需幾個步驟即可啟動無伺服器筆記本,立即查詢資料串流並執行互動式資料分析。
互動式資料分析:您能在筆記本中以 SQL、Python 或 Scala 撰寫程式碼以與串流資料互動,查詢回應時間僅需幾秒。您可以在筆記本內使用內建視覺化功能來探索資料、檢視串流資料的即時深入解析,並開發採用 Apache Flink 技術的串流處理應用程式。
一旦程式碼準備好能作為生產應用程式執行時,僅需一個步驟即可將之轉換為串流處理應用程式,在無伺服器之下每秒處理 GB 量的資料。
串流處理應用程式:一旦準備好將程式碼提升至生產環境,您就可以在筆記本介面中點選「部署為串流處理應用程式」,或在 CLI 中發出單一命令來建置程式碼。Studio 會處理大規模執行串流處理應用程式所需的所有基礎架構管理,並啟用自動擴展和持久狀態,就像在 Amazon Managed Service for Apache Flink 應用程式中一般。
應用程式的程式碼看起來是什麼樣子?
支援哪些 SQL 操作?
您可以執行下列 SQL 操作:
- 掃描和過濾 (SELECT、WHERE)
- 彙總 (GROUP BY、GROUP BY WINDOW、HAVING)
- 集合 (UNION、UNIONALL、INTERSECT、IN、EXISTS)
- 排序 (ORDER BY、LIMIT)
- 連接 (INNER、OUTER,計時時段 – BETWEEN、AND,與時間表格連接 – 隨時間推移追蹤變化的表格)
- Top-N
- 重複資料刪除
- 模式識別
其中部分查詢,例如 GROUP BY、OUTER JOIN 和 Top-N 是串流資料的「結果更新」,換言之,會隨著處理串流資料,持續地更新結果。也支援其他 DDL 陳述式,例如 CREATE、ALTER 及 DROP。如需查詢和範例的完整清單,請參閱 Apache Flink 查詢文件。
支援 Python 和 Scala 的情形如何?
Apache Flink 的 Table API 可透過使用 Python 字串和 Scala 表達式的語言整合,支援 Python 和 Scala。受支援的操作與受支援的 SQL 操作非常類似,包括選擇、排序、分組、聯結、篩選和時段建立。操作和範例的完整清單都包含在我們的開發人員指南中。
支援哪些版本的 Apache Flink 和 Apache Zeppelin?
如需進一步瞭解支援的 Apache Flink 版本,請造訪 Amazon Managed Service for Apache Flink 版本備註頁面。此頁面也包含 Amazon Managed Service for Apache Flink 支援的 Apache Zeppelin、Apache Beam、Java、Scala、Python 和 AWS SDK 版本。
Amazon Managed Service for Apache Flink Studio 應用程式預設支援哪些整合?
- 資料來源:Amazon Managed Streaming for Apache Kafka (Amazon MSK)、Amazon Kinesis Data Streams、Amazon S3
- 目標或匯點:Amazon MSK、Amazon Kinesis Data Streams 及 Amazon S3
是否支援自訂整合?
服務水準協議
Amazon Managed Service for Apache Flink SLA 提供什麼保證?
如何知道我是否符合 SLA 服務抵扣的資格?
如果您在同一個 AWS 區域內執行任務的多個可用區域,在任何每月帳單週期內執行任務的每月正常執行時間百分比低於 99.9%,則根據 Amazon Managed Service for Apache Flink SLA,您有資格獲得 Amazon Managed Service for Apache Flink 的 SLA 服務獎勵。如需所有 SLA 條款與條件的完整詳細資訊,以及如何提交索賠的詳細資訊,請造訪 Amazon Managed Service for Apache Flink SLA 詳細資訊頁面。