AWS 提供豐富的服務,讓資料工程師能建構高效能的資料分析管道。本文介紹 DMS、Kinesis、DataSync 和 Snow 系列等服務,說明如何選擇合適的工具來滿足不同資料擷取和轉換需求。例如,DMS 適合異構資料函式庫遷移和持續複製到 S3,Kinesis 則適用於即時串流資料處理,DataSync 則能從本地儲存系統高效擷取資料。對於網路頻寬有限或資料量龐大的情況,Snow 系列硬體裝置則提供更有效率的資料傳輸方案。
AWS 資料工程師工具箱
在當今的資料驅動時代,AWS 提供了大約 200 種不同的服務,其中包括多種分析服務,可以被資料工程師用於構建複雜的資料分析管道。經常有多種 AWS 服務可以用於實作特定的結果,而資料架構師和工程師面臨的挑戰是,在確定最適合特定需求的服務之前,從多個角度評估特定服務的優缺點。
在本章中,我們將介紹一些常用的 AWS 受管服務,用於在 AWS 上構建大資料解決方案。在後面的章節中,我們將探討如何使用這些服務來架構複雜的資料工程管道。在閱讀本章時,您將瞭解以下主題:
- 用於攝取資料的 AWS 服務
- 用於轉換資料的 AWS 服務
- 用於協調大資料管道的 AWS 服務
- 用於消費資料的 AWS 服務
- 實作 - 當 S3 儲存桶中到達新檔案時觸發的 AWS Lambda 函式
用於攝取資料的 AWS 服務
構建大資料分析解決方案的第一步是從多種來源將資料攝取到 AWS 中。在本文中,我們將介紹一些核心的 AWS 服務,旨在幫助實作這一點;但是,這不應被視為對將資料攝取到 AWS 中的每種可能方法的全面審查。
Amazon Database Migration Service(DMS)概述
最常見的攝取使用案例之一是將資料從傳統的資料函式庫系統同步到分析管道中,無論是將資料儲存在根據 Amazon S3 的資料湖中,還是在像 Amazon Redshift 這樣的資料倉儲系統中。
Amazon DMS 是一個多功能的工具,可用於將現有的資料函式庫系統遷移到新的資料函式庫引擎,例如將現有的 Oracle 資料函式庫遷移到具有 PostgreSQL 相容性的 Amazon Aurora 資料函式庫。但是從分析的角度來看,Amazon DMS 也可用於從多個常見的資料函式庫引擎到 Amazon S3 資料湖進行持續複製。
程式碼範例:使用 DMS 將資料函式庫遷移到 S3
-- 使用 DMS 將資料函式庫遷移到 S3 的範例組態
{
"source": {
"engine": "mysql",
"host": "your-source-host",
"port": 3306,
"username": "your-username",
"password": "your-password"
},
"target": {
"engine": "s3",
"bucket": "your-s3-bucket",
"path": "/your/s3/path"
}
}
內容解密:
此範例展示了使用 DMS 將 MySQL 資料函式庫遷移到 S3 的基本組態。組態中包含了來源資料函式庫的主機、埠、使用者名稱和密碼,以及目標 S3 儲存桶和路徑。DMS 將根據此組態將資料函式庫中的資料遷移到指定的 S3 位置。
Amazon Kinesis 用於串流資料攝取
Amazon Kinesis 是一種受管服務,簡化了即時或近即時地攝取和處理串流資料的過程。有多種不同的使用案例可以使用 Kinesis,包括攝取串流資料(例如日誌檔案、網站點選流或 IoT 資料),以及視訊和音訊串流。
根據具體的使用案例,您可以從組成整體 Kinesis 服務的多種不同服務中進行選擇。在我們探討這些服務的更多細節之前,請檢視以下對各種 Amazon Kinesis 服務的總結:
- Kinesis Data Firehose:攝取串流資料,緩衝一段可組態的時間,然後寫入到一組有限的目標(S3、Redshift、Elasticsearch、Splunk 等)
- Kinesis Data Streams:攝取即時資料串流,使用自定義應用程式處理傳入的資料,並具有低延遲
何時使用和何時不使用特定的 AWS 服務
在評估是否使用特定的 AWS 服務時,需要考慮多個因素。對於 Amazon DMS,它簡化了從一個資料函式庫引擎遷移到另一個資料函式庫引擎的過程,或者將資料從現有的資料函式庫同步到 Amazon S3 的持續過程。然而,如果您正在尋找將本地資料函式庫同步到 AWS 中相同引擎的解決方案,通常最好使用該資料函式庫引擎的原生工具。DMS 主要設計用於異構遷移(即從一個資料函式庫引擎到另一個不同的資料函式庫引擎)。
對於 Amazon Kinesis,它非常適合用於需要即時或近即時處理串流資料的場景。然而,選擇正確的 Kinesis 服務取決於具體的需求,例如是否需要簡單地將資料寫入到特定的目標(Kinesis Data Firehose),或者是否需要自定義處理傳入的資料(Kinesis Data Streams)。
AWS 資料擷取服務深度解析
AWS 提供了一系列強大的服務來支援資料擷取、處理和分析,涵蓋了從即時串流資料處理到批次資料處理的各種需求。本文將探討 AWS 的主要資料擷取服務,包括 Amazon Kinesis Agent、Amazon Kinesis Firehose 和 Amazon Kinesis Data Streams,並分析其適用場景和最佳實踐。
Amazon Kinesis Agent:簡化資料擷取的利器
Amazon Kinesis Agent 是一個 Java 應用程式,可用於監控檔案系統中的檔案變更,並將新資料寫入 Kinesis Data Streams 或 Kinesis Firehose。該代理程式支援檔案輪替、檢查點和失敗重試,能夠有效地處理日誌檔案等串流資料來源。
實際應用案例
假設我們需要即時分析網站存取日誌,以監控網站的健康狀態和使用者行為。我們可以在 Web 伺服器上安裝 Kinesis Agent,並組態其監控 Apache Web 伺服器日誌檔案。Agent 將每 30 秒將日誌記錄轉換為 JSON 格式,並寫入 Kinesis Data Streams。接著,我們可以使用 Kinesis Data Analytics 對串流資料進行即時分析和自定義指標計算。
何時使用
- 當您需要將寫入檔案的資料串流到 Kinesis 時(例如日誌檔案)。
- 需要簡單、可靠的資料擷取機制。
何時不使用
- 當您需要自定義應用程式直接傳送串流事件(例如行動應用程式或 IoT 裝置)。
- 需要使用 Amazon Kinesis Producer Library (KPL) 或 AWS SDK 直接整合應用程式。
Amazon Kinesis Firehose:近即時資料載入的最佳選擇
Amazon Kinesis Firehose 是 AWS 提供的一種完全託管的服務,用於捕捉、轉換和載入串流資料到各種目標,包括 Amazon S3、Amazon Redshift 和 Amazon Elasticsearch 等。該服務支援資料緩衝、轉換和壓縮,能夠有效地處理大量串流資料。
實際應用案例
假設我們需要將網站點選流資料從 Apache Web 日誌載入到 S3 資料湖中進行分析。我們可以在 Web 伺服器上安裝 Kinesis Agent,並組態其將日誌記錄寫入 Kinesis Firehose。Firehose 將緩衝接收到的記錄,並在指定的時間間隔或檔案大小達到閾值時,將資料寫入 S3。
何時使用
- 當您需要接收串流資料、緩衝一段時間後再寫入支援的目標服務(例如 Amazon S3、Amazon Redshift)。
- 需要簡單、自動化的資料載入流程。
何時不使用
- 當您的使用案例需要非常低延遲的串流資料處理(例如立即讀取接收到的記錄)。
- 需要自定義應用程式處理串流資料或將資料傳送到 Kinesis Firehose 不支援的服務。
Amazon Kinesis Data Streams:彈性即時資料處理
Amazon Kinesis Data Streams 是一種高度可擴充套件和持久的串流資料服務,能夠以非常低的延遲(AWS 表示資料可在寫入 Kinesis 後 70 毫秒內被消費應用程式存取)使串流資料可供應用程式使用。該服務支援多種消費模式,包括使用其他 Kinesis 服務、自定義程式碼或 Amazon Lambda 函式。
實際應用案例
Netflix 使用 Kinesis Data Streams 每日擷取數 TB 的日誌資料,豐富其網路流日誌並寫入開源應用程式進行近即時分析,以監控網路健康狀態。
何時使用
- 當您需要即時處理接收到的串流資料。
- 需要建立高用性的自定義應用程式叢集來處理串流資料。
何時不使用
- 當您有簡單的使用案例,需要將資料近即時寫入特定的目標服務,建議使用 Kinesis Firehose。
- 需要遷移現有的 Apache Kafka 叢集到 AWS,或需要 Apache Kafka 的第三方整合功能,建議使用 Amazon MSK。
AWS 資料工程師工具箱:資料擷取服務深度解析
在現代資料驅動的商業環境中,高效、可靠的資料擷取與處理能力是企業成功的關鍵。AWS 提供了一系列強大的服務來滿足不同的資料擷取需求,從即時串流資料處理到 SaaS 應用程式資料整合。本文將探討 AWS 的主要資料擷取服務,包括 Amazon Kinesis Data Analytics、Amazon Kinesis Video Streams、Amazon MSK、Amazon AppFlow 和 Amazon Transfer Family,並分析它們的使用場景和最佳實踐。
Amazon Kinesis Data Analytics:即時串流資料分析利器
Amazon Kinesis Data Analytics 使得處理串流資料變得簡單易行,無論是使用標準 SQL 查詢還是 Apache Flink 應用程式。一個典型的使用案例是分析來自電子商務網站的點選流資料,以近乎即時的方式洞察產品銷售情況。
SELECT
product_id,
COUNT(*) as sales_count
FROM
clickstream_data
WHERE
event_time > NOW() - INTERVAL '5' MINUTE
GROUP BY
product_id;
內容解密:
- 使用 SQL 查詢即時分析點選流資料。
- 篩選最近 5 分鐘內的事件資料。
- 按產品 ID 分組並統計銷售次數。
當需要使用 SQL 表示式分析資料或在滾動時間段內提取關鍵指標時,Kinesis Data Analytics 能夠顯著簡化這項任務。如果您已經有現成的 Apache Flink 應用程式需要遷移到雲端,Kinesis Data Analytics 是一個理想的選擇。
Amazon Kinesis Video Streams:視訊串流處理與分析
Amazon Kinesis Video Streams 能夠處理時間繫結的非結構化資料串流,如視訊、音訊和雷達資料。它負責提供和擴充套件所需的計算基礎設施,以攝取來自數百萬個來源的串流視訊或其他型別的媒體檔案。
此圖示展示了視訊資料從來源到 Kinesis Video Streams 再到視訊處理和分析的流程。
當建立使用受支援來源的應用程式時,Kinesis Video Streams 能夠簡化攝取串流媒體資料並實作即時或點播播放的過程。
Amazon MSK:Apache Kafka 的託管服務
Amazon MSK(Managed Streaming for Apache Kafka)是 AWS 提供的一個託管版本的 Apache Kafka。Apache Kafka 是一個流行的開源分散式事件串流平台,能夠建立高效能的串流資料管道和應用程式。
bootstrap.servers=localhost:9092
acks=all
retries=3
內容解密:
- 組態 Kafka 生產者的基本屬性。
bootstrap.servers指定 Kafka 叢集的引導伺服器。acks=all保證訊息被所有同步副本確認。retries=3設定訊息傳送失敗時的重試次數。
當您的使用場景是替換現有的 Apache Kafka 叢集,或希望利用開源 Apache Kafka 生態系統中的眾多第三方整合時,Amazon MSK 是理想的選擇。
Amazon AppFlow:SaaS 服務資料整合
Amazon AppFlow 可以用於從流行的 SaaS 服務中擷取資料,並將其轉換和寫入常見的分析目標,如 Amazon S3、Amazon Redshift 和 Snowflake。
@startuml
skinparam backgroundColor #FEFEFE
skinparam componentStyle rectangle
title AWS 資料工程師工具箱服務解析
package "AWS 雲端架構" {
package "網路層" {
component [VPC] as vpc
component [Subnet] as subnet
component [Security Group] as sg
component [Route Table] as rt
}
package "運算層" {
component [EC2] as ec2
component [Lambda] as lambda
component [ECS/EKS] as container
}
package "儲存層" {
database [RDS] as rds
database [DynamoDB] as dynamo
storage [S3] as s3
}
package "服務層" {
component [API Gateway] as apigw
component [ALB/NLB] as lb
queue [SQS] as sqs
}
}
apigw --> lambda
apigw --> lb
lb --> ec2
lb --> container
lambda --> dynamo
lambda --> s3
ec2 --> rds
container --> rds
vpc --> subnet
subnet --> sg
sg --> rt
@enduml
此圖示展示瞭如何使用 AppFlow 將 Salesforce 中的資料整合到 Amazon S3 和 Amazon Redshift。
當您的資料來源是支援的 SaaS 服務時,Amazon AppFlow 是將資料擷取到 AWS 的理想選擇。
Amazon Transfer Family:FTP/SFTP 檔案傳輸
Amazon Transfer Family 提供了一個完全託管的服務,能夠使用常見的檔案傳輸協定(如 FTP 和 SFTP)直接將檔案傳輸到 Amazon S3 或從 S3 傳輸出來。
sftp -i ~/.ssh/transfer-family-ssh-key [email protected]
內容解密:
- 使用 SFTP 使用者端連線到 Amazon Transfer Family 端點。
-i指定用於身份驗證的 SSH 私鑰。user是在 Transfer Family 中設定的使用者名稱。server-id.sftp.us-east-1.amazonaws.com是 Transfer Family 伺服器的端點。
AWS 資料工程師工具箱:資料擷取與轉換服務
許多組織仍使用傳統的檔案傳輸協定(如 FTP、SFTP 或 FTPS)與其他組織交換資料。例如,房地產公司可能會透過 SFTP 從 MLS(Multi-Listing Service)供應商接收最新的 MLS 檔案。在這種情況下,房地產公司需要設定一台執行 SFTP 的伺服器,並為 MLS 供應商建立一個 SFTP 使用者帳戶,以便他們能夠連線到伺服器並傳輸檔案。
Amazon Transfer for SFTP:簡化 SFTP 資料傳輸
透過 Amazon Transfer for SFTP,房地產公司可以輕鬆地將其 SFTP 伺服器遷移到 AWS 的受管服務,並在 Amazon Transfer 服務中複製現有的帳戶設定。當未來的資料傳輸透過受管的 AWS 服務進行時,這些資料將直接寫入 Amazon S3,使資料立即能夠被用於 Amazon S3 為基礎的資料湖中的資料轉換管線。
使用時機
如果組織目前透過 FTP、SFTP 或 FTPS 接收資料,應考慮遷移到 Amazon Transfer 提供的受管版本服務。
Amazon DataSync:從本地儲存系統擷取資料
Amazon DataSync 簡化了從本地儲存系統擷取資料的過程,同時提供高效能和穩定的資料傳輸。常見的檔案存取協定包括 NFS(Network File System)和 SMB(Server Message Block)。DataSync 支援從使用這些協定的檔案伺服器中擷取和複製資料。此外,DataSync 也支援從與 AWS S3 API 相容的本地物件儲存系統中擷取資料。
使用時機
當需要從相容的本地儲存系統將目前或歷史資料擷取到 AWS 時,Amazon DataSync 是一個不錯的選擇。
不適用時機
對於非常龐大的歷史資料集,如果透過網路連線傳輸資料不切實際,則應考慮使用 Amazon Snow 系列裝置。如果需要對資料進行預處理,例如將 Apache Web 伺服器日誌檔轉換為 JSON 格式,則可以考慮使用 Amazon Kinesis Agent 對資料進行預處理,然後透過 Amazon Kinesis Firehose 將資料傳送到 Amazon S3。
AWS Snow 系列裝置:大型資料傳輸
對於需要將龐大的資料集擷取到 AWS 的使用案例,如果缺乏良好的網路連線或資料集過大而無法透過網路連線傳輸,則可以使用 AWS Snow 系列裝置。AWS Snow 系列裝置是堅固耐用的裝置,可以運送到指定地點並連線到本地資料中心的網路連線。資料可以透過本地網路傳輸,然後將裝置運回 AWS,資料將被傳輸到 Amazon S3。
裝置型別
- AWS Snowcone:輕量級(4.5 磅/2.1 公斤)裝置,具有 8 TB 的可用儲存空間。
- AWS Snowball Edge Optimized(用於資料傳輸):中等重量(49.7 磅/22.5 公斤)裝置,具有 80 TB 的可用儲存空間。
- AWS Snowmobile:大型堅固耐用的 45 英尺貨櫃,由半掛卡車拖運。容量最高可達 100 PB。