成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

這篇文章把 Paimon 和 Fluss 的關系給徹底說清楚了

大數據
本文將詳細探討Paimon和Fluss的集成,介紹它們的基本概念、集成的意義、具體的集成方法以及相關代碼示例,尤其會深入解釋它們之間的聯系。

在大數據處理領域,實時數據分析和處理的需求日益增長。傳統的數據處理架構在面對實時性要求較高的場景時,往往顯得力不從心。為了滿足企業對實時數據的高效處理和分析需求,Apache Paimon和Fluss這兩種技術應運而生。Apache Paimon是一個開源的數據存儲和查詢分析引擎,旨在支持海量數據的高效存儲和實時分析;而Fluss則是一款面向實時分析設計的流存儲引擎,深度融合了Lakehouse架構。

本文將詳細探討Paimon和Fluss的集成,介紹它們的基本概念、集成的意義、具體的集成方法以及相關代碼示例,尤其會深入解釋它們之間的聯系。

一、Paimon和Fluss的基本概念

1. Apache Paimon

(1) 誕生背景

在大數據處理領域,傳統的數據倉庫和數據湖解決方案在處理實時數據和大規模數據時面臨諸多挑戰,如數據一致性、高性能查詢、實時更新等。隨著實時數據分析需求的不斷增加,業界迫切需要一種能夠高效處理大規模流式數據的存儲系統。Paimon最初名為Flink Table Store,是在Apache Flink社區內部于2022年1月啟動的一個項目,目標是開發一個高性能的流式數據湖存儲系統,支持高吞吐、低延遲的數據攝入、流式訂閱以及實時查詢能力,并于2024年4月16號畢業成為Apache的頂級項目。

(2) 系統架構

  • 存儲層:Paimon使用列式存儲格式(如Parquet、ORC),采用LSM (Log-Structured Merge)樹結構,支持數據分區,這種結構支持高效的寫入操作和合并機制,確保數據的高吞吐和低延遲。
  • 元數據管理:使用一個獨立的元數據存儲系統來管理表結構、分區信息、事務日志等元數據,常見的元數據存儲系統包括MySQL、Hive Metastore等。同時,Paimon提供ACID事務支持,確保數據操作的一致性和可靠性,事務管理模塊負責記錄和管理事務日志,支持多版本并發控制(MVCC)。
  • 計算層:提供了一個SQL引擎,支持標準的SQL查詢,用戶可以通過SQL語句進行數據查詢、插入、更新和刪除操作。此外,Paimon可以與多種計算引擎(如Apache Flink、Apache Spark、Trino)集成,提供豐富的數據處理和分析能力。
  • 數據攝入和輸出:支持多種數據攝入方式,包括批量加載、流式攝入和事務性寫入;也支持將數據導出到其他系統,如數據倉庫、數據湖、消息隊列等。
  • 查詢優化:支持多種索引類型,如B-Tree索引、Bitmap索引等,用于加速查詢性能;內置了一個查詢優化器,可以根據查詢條件和數據分布自動選擇最優的查詢計劃,提高查詢效率。
  • 擴展性和可靠性:設計為分布式系統,支持水平擴展,可以通過增加更多的節點來提升系統的處理能力和存儲容量;提供了多種容錯機制,如數據復制、故障恢復等,確保系統的高可用性和數據的可靠性。

(3) 核心概念

  • 表(Table):是最基本的數據組織單元,每個表都有一個定義好的模式(Schema),包括列名、數據類型和主鍵。表可以是非分區表,也可以是分區表,后者通過將數據按照特定列的值進行劃分,以提高查詢性能。
  • 模式(Schema):定義了表的結構,包括列名、數據類型和主鍵等信息。
  • 分區(Partition):采用與Apache Hive相同的分區概念來分離數據,是一種可選方法,可根據日期、城市和部門等特定列的值將表劃分為相關部分,每個表可以有一個或多個分區鍵來標識特定分區,通過分區,用戶可以高效地操作表中的一片記錄。
  • 快照(Snapshot):捕獲表在某個時間點的狀態,用戶可以通過最新的快照來訪問表的最新數據,也可以通過較早的快照訪問表的先前狀態。
  • 清單文件(Manifest File):包含有關LSM數據文件和更改日志文件的文件信息,例如對應快照中創建了哪個LSM數據文件、刪除了哪個文件。
  • 數據文件(Data File):按分區和存儲桶分組,每個存儲桶目錄都包含一個LSM樹及其變更日志文件,目前支持使用orc(默認)、parquet和avro作為數據文件格式。
  • 事務(Transaction):支持ACID事務,確保數據的寫入和讀取具有高度一致性,特別是在分布式環境中。
  • 增量更新(Incremental Updates):支持高效的數據更新操作,適用于實時數據變更頻繁的場景。
  • 變更日志(Change Log):可以從任何數據源生成正確且完整的變更日志,從而簡化流分析。
  • 統一存儲(Unified Storage):支持流處理和批處理的無縫切換,使得同一份存儲可以同時服務于流處理和批處理作業,降低了開發和運維的復雜度。
  • 生態系統集成(Ecosystem Integration):提供了多種數據連接器,可以與不同的數據源和目標系統進行集成,如Kafka、HDFS、S3、數據庫等;還提供了豐富的工具和庫,幫助用戶進行數據遷移、備份、恢復等操作。

2. Fluss

(1) 誕生背景

當前業界大數據的處理正在從離線模式轉向實時化,多個行業和應用場景都在進行實時化的演進。然而,傳統的流存儲工具如Kafka在實時分析場景中存在一些顯著的問題,如不支持數據更新、缺乏高效的查詢功能、數據難以復用、回溯歷史數據困難以及高昂的網絡成本等。為了解決這些問題,阿里巴巴研發了Fluss項目,旨在為Apache Flink提供實時流存儲底座,進一步提升Flink實時流計算的能力。

(2) 核心特性

  • 實時讀寫:支持毫秒級的流式讀寫能力,能夠滿足實時數據處理的需求。
  • 列式裁剪:以列存格式存儲實時流數據,通過列裁剪可提升10倍讀取性能并降低網絡成本。例如,在處理大規模數據時,只讀取需要的列,避免了不必要的數據傳輸,提高了讀取效率。
  • 流式更新:支持大規模數據的實時流式更新,支持部分列更新,實現低成本寬表拼接。在實際應用中,可以對數據進行實時更新,而無需重新寫入整個數據集。
  • CDC訂閱:更新會生成完整的變更日志(CDC),通過Flink流式消費CDC,可實現數倉全鏈路數據實時流動。這使得數據的變更能夠及時被捕獲和處理,保證了數據的實時性。
  • 實時點查:支持高性能主鍵點查,可作為實時加工鏈路的維表關聯。在需要快速查找特定數據時,能夠高效地定位和獲取數據。
  • 湖流一體:無縫集成Lakehouse,并為Lakehouse提供實時數據層。這不僅為Lakehouse分析帶來了低延時的數據,更為流存儲帶來了強大的分析能力。例如,最新的數據在Fluss中,歷史數據在Paimon中,Flink可以支持Union Read,將Fluss和Paimon中的數據Union起來實現秒級新鮮度的分析。

(3) 基礎架構

  • Fluss Cluster:由Coordinator Server和Tablet Server組成。Coordinator Server作為集群的中心控制節點,負責元數據管理、Leader分配和權限管理;Tablet Server是數據存儲節點,包含Log Store和KV Store。KV Store支持更新和點查操作,Log Store存儲更新產生的Change Logs。
  • Fluss Client:客戶端組件,用于與Fluss集群交互。
  • ZK(ZooKeeper):用于集群協調和元數據管理。
  • Remote Storage:遠程存儲,用于冷數據的歸檔。熱數據存儲在本地服務器上,并持續同步到遠程存儲;通過一個Compaction Service將冷數據歸檔至數據湖中。

二、Paimon和Fluss之間的緊密聯系

1. 功能互補

Paimon側重于數據的長期存儲和高效查詢,它采用的列式存儲和LSM樹結構使得數據的存儲和查詢更加高效,并且支持ACID事務,保證了數據的一致性和可靠性。而Fluss則專注于實時數據的處理,具備實時讀寫、流式更新和CDC訂閱等功能,能夠滿足實時性要求較高的場景。兩者結合起來,Paimon可以作為Fluss的長期數據存儲倉庫,而Fluss則為Paimon提供實時數據的補充,實現了實時數據和歷史數據的統一管理。例如,在電商平臺的訂單處理系統中,Fluss可以實時處理用戶的下單數據,而Paimon則可以存儲歷史訂單數據,用于后續的統計分析和報表生成。

2. 架構融合

Fluss深度融合了Lakehouse架構,而Paimon本身就是一種流式湖倉架構。在集成過程中,Fluss的Compaction Service會將實時數據定期整理為Paimon格式(如Parquet文件),并存儲在遠程存儲(如S3或HDFS)中,方便后續批量分析。同時,Flink可以支持Union Read,將Fluss和Paimon中的數據聯合起來進行查詢,實現了流存儲和數據湖存儲的無縫對接。這種架構融合使得數據的存儲和處理更加高效,減少了數據冗余和系統復雜度。例如,在構建實時數據倉庫時,Fluss負責實時數據的攝入和處理,Paimon負責歷史數據的存儲和管理,兩者共同構成了一個完整的實時數據處理架構。

3. 數據流動與同步

Fluss的CDC訂閱功能可以生成完整的變更日志,這些變更日志可以實時同步到Paimon中,保證了Paimon中的數據與Fluss中的數據保持一致。同時,Paimon的事務支持和版本管理功能可以確保數據的變更被完整記錄和追溯。在數據流動方面,當有新的數據寫入Fluss時,Fluss會將數據同步到Paimon中;而在查詢數據時,用戶可以根據需求選擇從Fluss或Paimon中讀取數據,或者同時讀取兩者的數據進行聯合查詢。例如,在實時監控系統中,Fluss實時接收傳感器數據并進行處理,同時將數據變更同步到Paimon中,用戶可以通過查詢Paimon中的歷史數據和Fluss中的實時數據,實現對系統狀態的實時監控和分析。

4. 共同支持流批一體

Paimon本身支持流批一體的處理模式,而Fluss的實時數據處理能力與Paimon的結合,可以更好地實現流批一體的架構。在這種架構下,用戶可以使用相同的代碼和工具處理實時數據和批量數據,提高了開發效率和數據處理的一致性。例如,在處理用戶行為數據時,既可以使用Fluss實時處理用戶的當前行為,也可以使用Paimon對歷史行為數據進行批量分析,而不需要分別開發不同的處理邏輯。

三、Paimon和Fluss集成的意義

1. 提升實時數據處理能力

Paimon和Fluss的集成可以將Fluss的實時讀寫和更新能力與Paimon的高效存儲和查詢能力相結合,實現對實時數據的高效處理和分析。例如,在電商平臺的實時推薦系統中,Fluss可以實時處理用戶的行為數據,而Paimon則可以存儲和管理歷史數據,兩者結合可以為用戶提供更精準的個性化推薦。

2. 簡化架構和降低成本

傳統的實時數倉架構可能需要多個組件來實現數據的存儲、處理和分析,架構復雜且成本較高。而Paimon和Fluss的集成可以將流存儲和數據湖存儲統一管理,減少了系統組件的數量,簡化了架構,降低了開發和運維成本。同時,Fluss的列式裁剪和實時更新能力可以降低網絡成本和存儲成本。

3. 實現流批一體

Paimon本身支持流批一體的處理模式,而Fluss的實時數據處理能力與Paimon的結合,可以更好地實現流批一體的架構。在這種架構下,用戶可以使用相同的代碼和工具處理實時數據和批量數據,提高了開發效率和數據處理的一致性。

4. 增強數據的可復用性和可追溯性

Fluss的CDC訂閱功能可以生成完整的變更日志,結合Paimon的事務支持和版本管理,使得數據的變更可以被完整記錄和追溯。這不僅方便了數據的審計和調試,還提高了數據的可復用性,用戶可以根據需要隨時獲取歷史數據進行分析。

四、Paimon和Fluss的集成方法

1. 環境準備

(1) 安裝Flink

首先需要安裝Apache Flink,確保其版本與Paimon和Fluss兼容。可以從Apache Flink的官方網站下載相應的版本,并按照官方文檔進行安裝和配置。

(2) 安裝Paimon

將Paimon的相關JAR包添加到Flink的lib目錄下??梢詮腗aven倉庫下載Paimon的JAR包,例如:

wget https://repo.maven.apache.org/maven2/org/apache/paimon/paimon-flink-1.19/0.9.0/paimon-flink-1.19-0.9.0.jar
cp paimon-flink-1.19-0.9.0.jar /opt/module/bigdata/flink/lib

(3) 安裝Fluss

可以從GitHub上克隆Fluss的項目倉庫,并進行編譯和安裝:

git clone https://github.com/alibaba/fluss.git
cd fluss
./mvnw clean package -DskipTests

編譯完成后,將生成的相關JAR包添加到Flink的lib目錄下。

2. 配置Fluss和Paimon

(1) 配置Fluss

在Flink里創建一個Fluss表,并加上'table.datalake.enabled' = 'true'這個配置,就可以實現數據湖模式。例如:

CREATETABLE fluss_table (
  id INT,
  name STRING,
  age INT,
PRIMARYKEY(id)NOT ENFORCED
)WITH(
'type'='fluss',
'bootstrap.servers'='10.255.10.1:9123',
'table.datalake.enabled'='true'
);

(2) 配置Paimon

創建Paimon的Catalog,并指定倉庫路徑:

CREATE CATALOG paimon_catalog WITH(
'type'='paimon',
'warehouse'='hdfs://mycluster/tmp/paimon'
);
USE CATALOG paimon_catalog;

3. 啟動Fluss的compact service服務

使用命令./bin/lakehouse.sh -D flink.rest.address=localhost -D flink.rest.port=8081 -D database=fluss_\w+啟動Fluss的compact service服務。有了這個服務支持,當往Fluss表中寫入數據時,這些數據會自動同步到配置的Paimon數據湖。

4. 數據查詢

(1) 查詢Paimon數據湖中的數據

-- read from paimon
SELECTCOUNT(*)FROM orders$lake;

-- we can also query the system tables 
SELECT*FROM orders$lake$snapshots;

(2) 查詢Fluss和Paimon數據的“聯合視圖”

-- query will union data of Fluss and Paimon
SELECTSUM(order_count)as total_orders FROM ads_nation_purchase_power;

(3) 只查詢Fluss中的數據

SELECT*FROM orders$lake$snapshots;

五、代碼示例

(1) 使用Flink SQL實現數據寫入和查詢

-- 創建Fluss表
CREATETABLE fluss_orders (
  order_id STRING,
  customer_id STRING,
  order_amount DOUBLE,
  order_time TIMESTAMP(3),
PRIMARYKEY(order_id)NOT ENFORCED
)WITH(
'type'='fluss',
'bootstrap.servers'='10.255.10.1:9123',
'table.datalake.enabled'='true'
);

-- 向Fluss表中寫入數據
INSERTINTO fluss_orders
VALUES('001','C001',100.0,TIMESTAMP'2024-12-25 10:00:00'),
('002','C002',200.0,TIMESTAMP'2024-12-25 10:00:30');

-- 查詢Fluss和Paimon數據的聯合視圖
SELECTSUM(order_amount)as total_amount
FROM fluss_orders;

(2) 使用Java代碼實現數據寫入和查詢

importorg.apache.flink.streaming.api.environment.StreamExecutionEnvironment;
importorg.apache.flink.table.api.bridge.java.StreamTableEnvironment;
importorg.apache.flink.table.api.Table;
importorg.apache.flink.table.api.TableResult;

publicclassPaimonFlussIntegrationExample{
publicstaticvoidmain(String[] args)throwsException{
// 創建流執行環境
StreamExecutionEnvironment env =StreamExecutionEnvironment.getExecutionEnvironment();
StreamTableEnvironment tableEnv =StreamTableEnvironment.create(env);

// 創建Fluss表
        tableEnv.executeSql("CREATE TABLE fluss_orders (
" +
                "  order_id STRING,
" +
                "  customer_id STRING,
" +
                "  order_amount DOUBLE,
" +
                "  order_time TIMESTAMP(3),
" +
                "  PRIMARY KEY (order_id) NOT ENFORCED
" +
                ") WITH (
" +
                "  'type'='fluss',
" +
                "  'bootstrap.servers' = '10.255.10.1:9123',
" +
                "  'table.datalake.enabled' = 'true'
" +
")");

// 向Fluss表中寫入數據
        tableEnv.executeSql("INSERT INTO fluss_orders
" +
                "VALUES ('001','C001',100.0, TIMESTAMP '2024-12-2510:00:00'),
" +
"       ('002', 'C002', 200.0, TIMESTAMP '2024-12-25 10:00:30')");

// 查詢Fluss和Paimon數據的聯合視圖
Table resultTable = tableEnv.sqlQuery("SELECTSUM(order_amount) as total_amount
" +
"FROM fluss_orders");

// 執行查詢并打印結果
TableResult result = tableEnv.executeSql("SELECT SUM(order_amount) as total_amount FROM fluss_orders");
        result.print();
}
}

Paimon和Fluss的集成是大數據處理領域的一次重要嘗試,它將流存儲和數據湖存儲的優勢相結合,為企業提供了一種高效、低成本的實時數據處理解決方案。通過深入分析它們之間的聯系,我們可以看到兩者在功能、架構、數據流動等方面相互補充、相互協作,實現了實時數據和歷史數據的統一管理。

責任編輯:趙寧寧 來源: 大數據技能圈
相關推薦

2019-07-04 09:13:04

中臺百度團隊

2021-02-25 08:21:38

高可用風險故障

2020-03-02 15:17:37

云原生CNCF容器

2019-12-06 09:16:23

Linux 開源操作系統

2022-07-21 21:19:48

元宇宙

2020-01-13 15:34:10

超融合邊緣計算架構

2020-10-29 10:35:53

Nginx架構服務器

2019-10-21 08:51:41

分布式事務CAPAP

2018-07-26 09:06:29

Java內存模型

2020-04-15 16:34:48

大數據質量標準

2024-02-19 00:00:00

后管系統權限

2022-11-11 15:49:41

MySQL隔離

2019-02-21 16:24:28

5G火車站設備

2021-10-25 20:02:00

gRPC訂閱模式超時控制

2024-01-17 08:18:14

RPAJava技術

2021-08-20 16:13:40

機器學習人工智能計算機

2023-10-27 15:31:04

For循環Foreach循環

2019-09-26 09:24:01

GC原理調優

2024-02-27 14:27:16

2025-05-23 10:00:00

網絡交換機STP
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产精品久久久久久久三级 | 在线视频一区二区三区 | 欧美精品中文字幕久久二区 | 精品国产欧美日韩不卡在线观看 | 999热视频 | 国产二区精品视频 | 亚洲一二三区在线观看 | 国产精品成人品 | 国产欧美精品 | 精品一区二区三区在线视频 | 精品视频一区二区三区在线观看 | 天堂在线免费视频 | 最新av中文字幕 | 国产成人精品区一区二区不卡 | 国产1区2区在线观看 | 99久久精品一区二区成人 | 午夜精品一区二区三区在线观看 | 久久综合伊人 | 欧美成人一区二区 | 奇米四色影视 | 久久久精品一区二区 | 久久久夜色精品亚洲 | www.欧美| 一级黄色片免费 | 青青草这里只有精品 | 免费麻豆视频 | 亚洲精品在线91 | 精品久久久久久久人人人人传媒 | 在线欧美| 亚洲天堂色 | 欧美aaaaa | 久草在线中文888 | 国产乱码精品一区二区三区中文 | 亚洲 精品 综合 精品 自拍 | 日韩精品亚洲专区在线观看 | 九九热热九九 | 日本成人三级电影 | 国产欧美日韩综合精品一 | 国产福利91精品 | 91免费视频 | 日韩在线免费 |