一直以來(lái),大數(shù)據(jù)量一直是爆炸性增長(zhǎng),每天幾十 TB 的數(shù)據(jù)增量已經(jīng)非常常見(jiàn),但云存儲(chǔ)相對(duì)來(lái)說(shuō)還是不便宜的。眾多云上的大數(shù)據(jù)用戶(hù)特別希望可以非常簡(jiǎn)單快速的將文件移動(dòng)到更實(shí)惠的 S3、OSS 上進(jìn)行保存,這篇文章就來(lái)介紹如何使用 SeaTunnel 來(lái)進(jìn)行到 OSS 的數(shù)據(jù)同步。
首先簡(jiǎn)要介紹一下 Apache SeaTunnel,SeaTunnel 專(zhuān)注于數(shù)據(jù)集成和數(shù)據(jù)同步,主要解決以下問(wèn)題:
-
數(shù)據(jù)源多樣:常用的數(shù)據(jù)源有數(shù)百種,版本不兼容。隨著新技術(shù)的出現(xiàn),出現(xiàn)了更多的數(shù)據(jù)源。用戶(hù)很難找到能夠全面快速支持這些數(shù)據(jù)源的工具。
-
復(fù)雜同步場(chǎng)景:數(shù)據(jù)同步需要支持離線-全量同步、離線-增量同步、CDC、實(shí)時(shí)同步、全庫(kù)同步等多種同步場(chǎng)景。
-
資源需求高:現(xiàn)有的數(shù)據(jù)集成和數(shù)據(jù)同步工具往往需要大量的計(jì)算資源或 JDBC 連接資源來(lái)完成海量小表的實(shí)時(shí)同步。這在一定程度上加重了企業(yè)的負(fù)擔(dān)。
-
缺乏質(zhì)量和監(jiān)控:數(shù)據(jù)集成和同步過(guò)程經(jīng)常會(huì)丟失或重復(fù)數(shù)據(jù)。同步過(guò)程缺乏監(jiān)控,無(wú)法直觀了解任務(wù)過(guò)程中數(shù)據(jù)的真實(shí)情況
SeaTunnel 支持海量數(shù)據(jù)的高效離線/實(shí)時(shí)同步, 每天可穩(wěn)定高效同步數(shù)百億級(jí)數(shù)據(jù),已經(jīng)有 B 站,騰訊云,微博,360,Shopee 等數(shù)百家公司生產(chǎn)使用。
下面步入今天的正題,今天具體來(lái)說(shuō)是講 Apache SeaTunnel 產(chǎn)品與阿里云 OSS 的集成。
在阿里云 OSS 產(chǎn)品界面,開(kāi)通 Bucket:
下面是 SeaTunnel 的部署, SeaTunnel 支持多種部署方式: 單機(jī),集群,K8s 等方式。由于 SeaTunnel 不依賴(lài) Zookeeper 等第三方組件,所以整體部署非常簡(jiǎn)單,具體請(qǐng)參考其官網(wǎng):https://seatunnel.apache.org/docs/2.3.0/start-v2/locally/deployment
接下來(lái)是 SeaTunnel 使用過(guò)程,使用命令:
./bin/seatunnel.sh -m local -c ./config/localfile-oss.config
在 SeaTunnel 中,用戶(hù)可以通過(guò) config 文件定制自己的數(shù)據(jù)同步需求,最大限度地發(fā)揮 SeaTunnel 的潛力。那么接下來(lái)就給大家介紹一下如何配置 Config 文件
可以看到,config 文件包含幾個(gè)部分:env、source、transform、sink。不同的模塊有不同的功能。了解這些模塊后,您將了解 SeaTunnel 的工作原理。
用于添加一些引擎可選參數(shù),無(wú)論是哪個(gè)引擎(Spark或Flink),這里都要填寫(xiě)相應(yīng)的可選參數(shù)。
source 用于定義 SeaTunnel 需要從哪里獲取數(shù)據(jù),并將獲取的數(shù)據(jù)用于下一步??梢酝瑫r(shí)定義多個(gè)源?,F(xiàn)在支持的來(lái)源檢查 SeaTunnel 的來(lái)源。每個(gè) Source 都有自己特定的參數(shù)來(lái)定義如何取數(shù)據(jù),SeaTunnel 也提取了每個(gè) source 會(huì)用到的參數(shù),比如parameter,用來(lái)指定 result_table_name 當(dāng)前 source 產(chǎn)生的數(shù)據(jù)的名稱(chēng),方便供其他模塊后續(xù)使用。
本例中的 localfile-oss.config 配置文件內(nèi)容介紹:
env {
# You can set SeaTunnel environment configuration here
execution.parallelism = 10
job.mode = "BATCH"
checkpoint.interval = 10000
#execution.checkpoint.interval = 10000
#execution.checkpoint.data-uri = "hdfs://localhost:9000/checkpoint"
}
source {
LocalFile {
#本地待同步的數(shù)據(jù)文件夾, 本例子中只有一個(gè) test0.csv 文件,具體內(nèi)容參考下圖
path = "/data/seatunnel-2.3.1/testfile/source"
type = "csv"
delimiter = "#"
schema {
fields {
name = string
age = int
gender = string
}
}
}
}
sink {
OssJindoFile {
path="/seatunnel/oss03"
bucket = "oss://bucket123456654321234.cn-hangzhou.oss-dls.aliyuncs.com"
access_key = "I5t7VZyZSmMNwKsNv1LTADxW"
access_secret = "BinZ9J0zYxRbvG9wQUi6LiUjZElLTA"
endpoint = "cn-hangzhou.oss-dls.aliyuncs.com"
}
}
注:下圖本地待同步的數(shù)據(jù)文件夾, 本例子中只有一個(gè) test0.csv 文件,具體內(nèi)容
特別注意:如果是開(kāi)通了 HDFS 的 OSS,有 2 個(gè)地方是不一樣的:1 是 bucket,1 是 endpoint 。如下紅色部分是開(kāi)通了 HDFS 后的,被 “#” 注釋掉的是未開(kāi)通 HDFS 的情況。
SeaTunnel 對(duì)這 2 種情況都是支持的,只是大家要注意一下配置 bucket 和 endpoint 時(shí)的不同!
執(zhí)行運(yùn)行命令后,我們可以從 SeaTunnel 控制臺(tái)看下以下 SeaTunnel 本次同步情況的數(shù)據(jù):
Job Statistic Information
Start Time : 2023-02-22 17:12:19
End Time : 2023-02-22 17:12:37
Total Time(s) : 18
Total Read Count : 10000000
Total Write Count : 10000000
Total Failed Count : 0
從阿里云界面上可以看到 OSS 端的監(jiān)控?cái)?shù)據(jù):
可以看出來(lái) SeaTunnel 快速高效地同步了 1000萬(wàn)數(shù)據(jù)量的本地文件!
最后,Apache SeaTunnel 目前已經(jīng)支持了過(guò)百種數(shù)據(jù)源,并發(fā)布了 SeaTunnel Zeta 同步引擎,性能巨佳,還有群進(jìn)行技術(shù)支持,歡迎對(duì)比,歡迎一試!感興趣的伙伴歡迎聯(lián)系社區(qū)志愿者微信: seatunnel1
參考:
1、https://seatunnel.apache.org/docs/2.3.0/start-v2/locally/deployment
2、https://seatunnel.apache.org/docs/2.3.0/start-v2/locally/quick-start-seatunnel-engine
3、https://seatunnel.apache.org文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-710163.html
本文由 白鯨開(kāi)源 提供發(fā)布支持!文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-710163.html
到了這里,關(guān)于教程 | 使用 Apache SeaTunnel 同步本地文件到阿里云 OSS的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!