阿里雲開源巨量資料平台E-MapReduce(簡稱EMR)具有廣泛的應用情境。本文為您介紹EMR的主要應用情境。
資料湖情境
DataLake叢集類型提供了資料湖分析情境所需的服務和相關湖格式,包括Hadoop、OSS-HDFS、Hive、Spark、Presto等。通過選擇OSS-HDFS,叢集的YARN服務不再依賴叢集本地的HDFS,也不需要使用Core節點群組,從而提高了叢集的彈性和靈活性。此外,您還可以選擇資料湖構建DLF作為資料目錄服務,DLF可以提供統一的中繼資料服務,並支援湖上資料的管理,通過DLF可以簡化和加速湖上資料的治理過程。
在資料湖情境下,通過採集程式,將使用者的埋點日誌近即時寫入到OSS-HDFS,並使用Sqoop定時將業務資料庫的資料同步到OSS-HDFS。在EMR叢集中,利用Hive和Spark對未經處理資料進行清洗和加工,提取業務所需的指標,例如日活躍使用者、使用者留存、某SKU的新增訂單等。白天可以通過Auto Scaling機制,只保留部分節點。同時,可以啟動一個包含Trino或Presto的環境,以滿足白天資料分析師或營運團隊對資料的查詢需求。
資料分析情境
OLAP叢集類型提供了StarRocks、Doris、ClickHouse等服務。這些服務都具有高效的資料壓縮、列式儲存和並行查詢等特性,使其在巨量資料分析情境中表現出色。可以用於使用者畫像、人群圈選、BI報表和業務分析等一系列的業務情境。
即時資料分析情境解決方案
步驟如下:
即時攝入:通過直接讀取Kafka資料來實現。提供了Flink-Connector來支援Flink資料流的直接寫入,並保證了exactly-once語義。此外,還支援Flink CDC來捕捉TP資料更新,並即時地將結果更新到StarRocks中。
資料分析:實現了即時資料分析產生的資料可以直接用於Serving,從而實現了即時和離線資料的統一融合。
即時資料建模:提供了即時資料建模彙總表,以支援即時彙總能力。強大的引擎和最佳化器保證了資料庫在即時資料建模時的高效性。
即時更新:採用了delete-and-insert的即時更新策略,且在讀取時無需進行主鍵合并,相較於採用了merge-on-read(unique)的合并策略,效能提升了3~15倍。
湖倉分析情境解決方案
查詢層:複用了當前StarRocks的CBO和查詢引擎能力,使得查詢計算效能達到了Trino的3~5倍。
中繼資料管理:
支援Multi-Catalog管理,無縫對接HMS,同時支援自訂Catalog,便於和雲廠商的DLF對接。
支援通用的Parquet、ORC、CSV等標準格式,實現了延遲物化和小檔案合并讀寫。
支援多種資料湖格式,例如Hudi、Iceberg、DeltaLake和Paimon。
步驟如下:
即時攝入:屏蔽了底層資料來源的細節,支援異構資料來源資料聯合分析,同時支援即時和離線資料的聯合分析。
查詢加速:採用了就近計算策略,例如運算式下推和彙總下推,以及分布式讀取/資料來源針對性最佳化策略。支援向量化解釋ORC、Parquet格式,字典過濾、延遲物化等技術。
測試結果:進行了TPC-H和Hive查詢等測試,與Presto(OR)相比,在同等條件下,效能提升了3~5倍以上,並且僅使用Presto資源的1/3即可獲得相同的效能體驗。
即時資料流情境
DataFlow叢集類型提供了Flink、Kafka、Paimon等服務,主要用於解決Realtime Compute端到端的各類問題,廣泛應用於即時資料ETL和日誌採集分析等情境。
通過採集程式將業務資料、日誌和埋點資料等投遞到EMR Kafka,利用Flink的Realtime Compute功能將資料寫入不同的分析系統,例如EMR StarRocks、EMR Hbase和阿里雲的即時數倉Hologres,以提供即時分析、點查調用和BI報表分析等操作。
資料服務情境
DataServing叢集類型提供了HBase、Phoenix和OSS-HDFS等的服務。通過選擇HBase和OSS-HDFS,您可以將HBase的資料存放區到湖上,並根據您的選擇將HBase的WAL日誌繼續寫入叢集本地HDFS或OSS-HDFS。採用這種計算與儲存分離的架構,可以減輕叢集上的儲存壓力。一旦您的資料儲存到湖上,恢複HBase叢集將變得更加容易。
在數倉情境下,經過ETL計算,可以擷取指定使用者的標籤資訊,包括興趣標籤、興趣話題、搜尋關鍵詞等,除了基本資料。通過編寫程式,將每日新增或修改的使用者資訊寫入EMR HBase叢集。利用該叢集提供的使用者畫像資料,可以建立圈選服務,並根據業務促銷情況,有選擇性地投放廣告給一定範圍的使用者。同時,由於資料基於湖儲存OSS-HDFS,可以建立一個新的EMR HBase叢集,將其指向與主叢集相同的HFile路徑,以作為唯讀叢集,從而分擔主叢集的讀寫壓力。