MySQL + CloudCanal + Iceberg + StarRocks 構建全棧數據服務

簡述

在業務數據快速膨脹的今天,企業對 低成本存儲實時查詢分析能力 的需求愈發迫切。

本文將帶你實戰構建一條 MySQL 到 Iceberg 的數據鏈路,借助 CloudCanal 快速完成數據遷移與同步,并使用 StarRocks 完成數據查詢等操作,構建涵蓋 關系型數據庫服務、實時數據分析、大數據存取 的全棧數據架構。

Iceberg 簡介

Iceberg 是什么?

Iceberg 是一種開放的數據表格式,包含 Catalog數據存儲 兩種子概念。

Catalog 可簡單理解為對數據的結構描述,如表列表、對應的表屬性、包含的列、列類型、列長度等信息,這也是之所以為表格的原因。

數據存儲 即以上 Catalog 數據 以及 實際業務數據 所組成的文件存放位置。

Iceberg 有什么特點?

Iceberg 架構開放,定義了 Catalog文件格式數據存儲數據訪問 等標準,從而被眾多第三方組件實現和支持。

  • Catalog: AWS Glue、Hive、Nessie、Jdbc,或者專用的 Catalog 服務通過 Rest 方式讀寫。
  • 數據文件格式: Parquet、ORC、Avro 等。
  • 數據存儲: AWS S3、Azure Blob Storage、MinIO、HDFS、Posix FS 等各類云存儲或本地存儲。
  • 數據訪問: 可通過類似 StarRocks、Doris、ClickHouse 等實時數倉,Spark、Flink、Hive 等流/批計算引擎檢索、分析、操作數據和結構。

除了 開放 這一大特點,Iceberg 同時在 超大數據量存儲準實時增、刪、改 之間實現了平衡。

下表從數據容量、增量實時性、事務支持、存儲成本、架構開放度 5 個緯度,對各類數據庫進行對比(僅作參考,歡迎討論):

數據庫種類關系型數據庫實時數據倉庫傳統大數據數據湖
數據容量幾 TB 級別百 TB 級別PB 級別PB 級別
增量實時性業務級別增量寫入,延遲毫秒級別,萬級別 QPS業務級別增量寫入,延遲秒到分鐘級別,千級別 QPS運維級別增量寫入,延遲小時到天級別,個位數 QPS業務級別增量寫入,延遲分鐘級別,個位數 QPS(攢批)
事務支持ACID 強一致ACID 強一致或最終一致
存儲成本高或很高很低
架構開放度中(存算分離)

從上表來看,使用 Iceberg,即可得到一個 低成本超大數據存儲容量豐富數據檢索分析工具的數據庫,從某種意義上來說,可以作為傳統大數據系統的換代升級產品。

當然得益于其架構的開放性,還可以不斷探索更多的數據使用場景。

CloudCanal 技術亮點

典型 Catalog 和存儲支持

CloudCanal 支持 Iceberg 3 種 Catalog 和 2 種存儲方式,搭配關系為

  • AWS Glue + AWS S3
  • Nessie + MinIO / AWS S3
  • Rest + MinIO / AWS S3

對于全棧數據上云,AWS RDS + EC2 部署 CloudCanal + AWS Glue + AWS S3 即可構建。

對于全私有數據,自建關系型數據庫 + 虛擬機部署 CloudCanal + Nessis/Rest Catalog + MinIO 則可快速達成。

數據遷移同步一體化

對于數據同步開始之前的繁重工作,CloudCanal 一直嘗試利用自身的數據庫知識,實現結構準備、歷史數據遷移全自動化。

對于 Iceberg 這類非傳統意義數據庫交互的產品,CloudCanal 也實現了數據遷移同步的自動化流程,包括結構定義轉換、類型映射、約束清理、類型長度適配等工作,都可在 CloudCanal 一站式完成。

全棧數據服務架構總覽

本次構建的數據服務鏈路包含 4 大組件:

MySQL → CloudCanal → Iceberg (Glue + S3) → StarRocks
  • MySQL: 關系型數據庫,源數據產生地。
  • CloudCanal: 數據遷移同步平臺,支持結構轉換、類型映射、全量+增量同步。
  • Iceberg (AWS Glue + S3): 數據湖存儲 + 元數據管理。
  • StarRocks: 支持實時查詢的分析型數據庫,用于數據服務出口。

操作示例

前置準備

  1. 下載安裝 CloudCanal 私有部署版本。
  2. 準備數據源:
  • 源端:自建 MySQL
  • 目標端:Iceberg (AWS Glue + S3)

添加數據源

  1. 登錄 CloudCanal 平臺,點擊 數據源管理 > 添加數據源,添加 2 個數據源。
  2. 添加 Iceberg 所要填寫的信息如下(<>內按實際情況替換)。
  • 網絡地址:本例填寫 AWS Glue 服務地址。
    glue.<aws_glue_region_code>.amazonaws.com
    
  • 版本:保持默認值即可。
  • 描述:用于辨別實例用途。
  • 額外參數
    • httpsEnabled:打開開關,即設置為 true。
    • catalogName:設置一個意義明確的名字,如 glue_<biz_name>_catalog。
    • catalogType:設置為 GLUE。
    • catalogWarehouse:元數據和數據文件最終存放位置,如 s3://<biz_name>_iceberg。
    • catalogProps:參考如下
      {"io-impl": "org.apache.iceberg.aws.s3.S3FileIO","s3.endpoint": "https://s3.<aws_s3_region_code>.amazonaws.com","s3.access-key-id": "<aws_s3_iam_user_access_key>","s3.secret-access-key": "<aws_s3_iam_user_secret_key>","s3.path-style-access": "true","client.region": "<aws_s3_region>","client.credentials-provider.glue.access-key-id": "<aws_glue_iam_user_access_key>","client.credentials-provider.glue.secret-access-key": "<aws_glue_iam_user_secret_key>","client.credentials-provider": "com.amazonaws.glue.catalog.credentials.GlueAwsCredentialsProvider"
      }
      

創建任務

  1. 點擊 同步任務 > 創建任務

  2. 選擇源和目標實例,并分別點擊 測試連接。其中 Iceberg 數據源 結構遷移屬性配置 推薦如下:

    {"format-version": "2","parquet.compression": "snappy","iceberg.write.format": "parquet","write.metadata.delete-after-commit.enabled": "true","write.metadata.previous-versions-max": "3","write.update.mode": "merge-on-read","write.delete.mode": "merge-on-read","write.merge.mode": "merge-on-read","write.distribution-mode": "hash","write.object-storage.enabled": "true","write.spark.accept-any-schema": "true"
    }
    
  3. 功能配置 頁面,選擇 增量同步,并勾選 全量初始化

  4. 表&action過濾 頁面,選擇需要遷移同步的表,可同時選擇多張。

  5. 數據處理 頁面,保持默認配置。

  6. 創建確認 頁面,點擊 創建任務,開始運行。
    請添加圖片描述

驗證數據(接入 StarRocks)

  1. 造增刪改數據。
    請添加圖片描述

  2. 停止造數據。

  3. 創建一個按量 Aliyun EMR for StarRocks,添加 AWS Glue 的 Iceberg Catalog 并查詢。

  • StarRocks 中添加 External Catalog 并設置查詢環境。

    CREATE EXTERNAL CATALOG glue_test
    PROPERTIES
    ("type" = "iceberg","iceberg.catalog.type" = "glue","aws.glue.use_instance_profile" = "false","aws.glue.access_key" = "<aws_glue_iam_user_access_key>","aws.glue.secret_key" = "<aws_glue_iam_user_secret_key>","aws.glue.region" = "ap-southeast-1","aws.s3.use_instance_profile" = "false","aws.s3.access_key" = "<aws_s3_iam_user_access_key>","aws.s3.secret_key" = "<aws_s3_iam_user_secret_key>","aws.s3.region" = "ap-southeast-1"
    )set CATALOG glue_test;set global new_planner_optimize_timeout=30000;
    
  • MySQL 數據量
    請添加圖片描述

  • Iceberg 數據量
    請添加圖片描述

總結

通過 CloudCanal,你可以輕松打通 MySQL 與 Iceberg 之間的實時同步通道,并結合 StarRocks 實現高效查詢,實現實時數據服務閉環,打造真正的全棧數據結構解決方案。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/907933.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/907933.shtml
英文地址,請注明出處:http://en.pswp.cn/news/907933.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

javaEE->多線程:線程池

線程池 線程誕生的意義&#xff1a;因為進程的創建/銷毀&#xff0c;太重量了&#xff08;比較慢&#xff09; 但如果近一步提高創建/銷毀的頻率&#xff0c;線程的開銷也不容忽視。 有兩種方法可以提高效率&#xff1a; 1.協程&#xff08;輕量級線程&#xff09;&#xff…

【001】利用github搭建靜態網站_essay

文章目錄 1. 簡介2. 先了解網址規則2.1 文件及網址形式2.2 相互訪問 3. 搭建網頁的過程3.1 網頁文件3.2 github搭建倉庫及文件上傳3.3 搭建網站 1. 簡介 相信大家都有過想要自己搭建一個穩定可靠的網站&#xff0c;github是一個不錯的選擇&#xff0c;本來國內有gitee可以搭建…

搜索引擎2.0(based elasticsearch6.8)設計與實現細節(完整版)

1 簡介 1.1 背景 《搜索引擎onesearch 1.0-設計與實現.docx》介紹了1.0特性&#xff0c;搜索schema&#xff0c;agg&#xff0c;表達式搜索映射&#xff0c;本文介紹onesearch 2.0 新特性, 參考第2節 規劃特性與發布計劃 1.2 關鍵詞 文檔 Document elasticsearch 一行數據稱為…

【ClickHouse】RollingBitmap

ClickHouse 的 RollingBitmap 是一種基于 Bitmap 的數據結構&#xff0c;用于高效處理數據的動態變化和時間窗口計算。以下是關于 ClickHouse RollingBitmap 的相關信息&#xff1a; RollingBitmap 的應用場景 RollingBitmap 主要用于需要處理動態數據和時間窗口計算的場景&am…

新版智慧社區(小區)智能化弱電系統解決方案

該方案聚焦新版智慧社區智能化弱電系統建設,以物聯網、云計算、AI 人臉識別等技術為支撐,構建涵蓋智能可視化對講、智慧門禁、智能梯控、智慧停車、視頻監控等核心系統的社區智能化體系,并通過智慧社區集成平臺實現設備管理、數據統計、預警聯動等功能。方案旨在解決傳統社區…

11高可用與容錯

一、Broker 高可用架構設計 1.1 RabbitMQ 鏡像集群方案 集群搭建步驟 # 節點1初始化 rabbitmq-server -detached rabbitmq-plugins enable rabbitmq_management# 節點2加入集群 rabbitmqctl stop_app rabbitmqctl join_cluster rabbitnode1 rabbitmqctl start_app# 創建鏡像…

AsyncIOScheduler與BackgroundScheduler的線程模型對比

1. BackgroundScheduler的線程機制? ?多線程模型?&#xff1a;BackgroundScheduler基于線程池執行任務&#xff0c;默認通過ThreadPoolExecutor創建獨立線程處理任務&#xff0c;每個任務運行在單獨的線程中&#xff0c;主線程不會被阻塞。?適用場景?&#xff1a;適合同步…

ceph 對象存儲用戶限額滿導致無法上傳文件

查看日志 kl logs -f rook-ceph-rgw-my-store-a-5cc4c4d5b5-26n6j|grep -i error|head -1Defaulted container "rgw" out of: rgw, log-collector, chown-container-data-dir (init) debug 2025-05-30T19:44:11.573+0000 7fa7b7a6d700

2025-05-31 Python深度學習9——網絡模型的加載與保存

文章目錄 1 使用現有網絡2 修改網絡結構2.1 添加新層2.2 替換現有層 3 保存網絡模型3.1 完整保存3.2 參數保存&#xff08;推薦&#xff09; 4 加載網絡模型4.1 加載完整模型文件4.2 加載參數文件 5 Checkpoint5.1 保存 Checkpoint5.2 加載 Checkpoint 本文環境&#xff1a; Py…

批量導出CAD屬性塊信息生成到excel——CAD C#二次開發(插件實現)

本插件可實現批量導出文件夾內大量dwg文件的指定塊名的屬性信息到excel&#xff0c;效果如下&#xff1a; 插件界面&#xff1a; dll插件如下&#xff1a; 使用方法&#xff1a; 1、獲取此dll插件。 2、cad命令行輸入netload &#xff0c;加載此dll&#xff08;要求AutoCAD&…

在Linux環境里面,Python調用C#寫的動態庫,如何實現?

在Linux環境中&#xff0c;Python可以通過pythonnet&#xff08;CLR的Python綁定&#xff09;或subprocess調用C#動態庫。以下是兩種方法的示例&#xff1a; 方法1&#xff1a;使用pythonnet&#xff08;推薦&#xff09; 前提條件 安裝Mono或.NET Core運行時安裝pythonnet包…

小程序跳轉H5或者其他小程序

1. h5跳轉小程序有兩種情況 &#xff08;1&#xff09;從普通瀏覽器打開的h5頁面跳轉小程序使用wx-open-launch-weapp可以實現h5跳轉小程序 <wx-open-launch-weappstyle"display:block;"v-elseid"launch-btn":username"wechatYsAppid":path…

性能優化 - 案例篇:緩沖區

文章目錄 Pre1. 引言2. 緩沖概念與類比3. Java I/O 中的緩沖實現3.1 FileReader vs BufferedReader&#xff1a;裝飾者模式設計3.2 BufferedInputStream 源碼剖析3.2.1 緩沖區大小的權衡與默認值 4. 異步日志中的緩沖&#xff1a;Logback 異步日志原理與配置要點4.1 Logback 異…

文檔整合自動化

主要功能是按照JSON文件&#xff08;Sort.json&#xff09;中指定的順序合并多個Word文檔&#xff08;.docx&#xff09;&#xff0c;并清除文檔中的所有超鏈接。最終輸出合并后的文檔名為"sorted_按章節順序.docx"。 主要分為幾個部分&#xff1a; 初始化配置 定…

嵌入式(C語言篇)Day13

嵌入式Day13 一段話總結 文檔主要介紹帶有頭指針和尾指針的單鏈表的實現及操作&#xff0c;涵蓋創建、銷毀、頭插、尾插、按索引/數據增刪查、遍歷等核心操作&#xff0c;強調頭插/尾插時間復雜度為O(1)&#xff0c;按索引/數據操作需遍歷鏈表、時間復雜度為O(n)&#xff0c;并…

【ASR】基于分塊非自回歸模型的流式端到端語音識別

論文地址:https://arxiv.org/abs/2107.09428 摘要 非自回歸 (NAR) 模型在語音處理中越來越受到關注。 憑借最新的基于注意力的自動語音識別 (ASR) 結構,與自回歸 (AR) 模型相比,NAR 可以在僅精度略有下降的情況下實現有前景的實時因子 (RTF) 提升。 然而,識別推理需要等待…

RNN循環網絡:給AI裝上“記憶“(superior哥AI系列第5期)

&#x1f504; RNN循環網絡&#xff1a;給AI裝上"記憶"&#xff08;superior哥AI系列第5期&#xff09; 嘿&#xff01;小伙伴們&#xff0c;又見面啦&#xff01;&#x1f44b; 上期我們學會了讓AI"看懂"圖片&#xff0c;今天要給AI裝上一個更酷的技能——…

DAY41 CNN

可以看到即使在深度神經網絡情況下&#xff0c;準確率仍舊較差&#xff0c;這是因為特征沒有被有效提取----真正重要的是特征的提取和加工過程。MLP把所有的像素全部展平了&#xff08;這是全局的信息&#xff09;&#xff0c;無法布置到局部的信息&#xff0c;所以引入了卷積神…

【仿生系統】愛麗絲機器人的設想(可行性優先級較高)

非程序化、能夠根據環境和交互動態產生情感和思想&#xff0c;并以微妙、高級的方式表達出來的能力 我們不想要一個“假”的智能&#xff0c;一個僅僅通過if-else邏輯或者簡單prompt來模擬情感的機器人。您追求的是一種更深層次的、能夠學習、成長&#xff0c;并形成獨特“個性…

面向連接的運輸:TCP

目錄 TCP連接 TCP報文段結構 往返時間估計與超時 可靠數據傳輸 回退N步or超時重傳 超時間隔加倍 快速重傳 流量控制 TCP連接管理 三次握手 1. 客戶端 → 服務器&#xff1a;SYN 包 2. 服務器 → 客戶端&#xff1a;SYNACK 包 3. 客戶端 → 服務器&#xff1a;AC…