MaxCompute數(shù)據(jù)離線同步至ClickHouse
本文以MaxCompute離線同步寫(xiě)入ClickHouse場(chǎng)景為例,為您介紹ClickHouse離線同步在數(shù)據(jù)源配置、網(wǎng)絡(luò)聯(lián)通、同步任務(wù)配置方面的最佳實(shí)踐。
背景信息
云數(shù)據(jù)庫(kù)ClickHouse是面向聯(lián)機(jī)分析處理的列式數(shù)據(jù)庫(kù)。數(shù)據(jù)集成支持從ClickHouse同步數(shù)據(jù)到其他目標(biāo)端,也支持從其他目標(biāo)端同步數(shù)據(jù)到ClickHouse。本文以MaxCompute離線同步寫(xiě)入ClickHouse為例,為您介紹ClickHouse離線同步的完整流程。
使用限制
ClickHouse離線同步僅支持阿里云ClickHouse。
ClickHouse離線同步僅支持使用獨(dú)享數(shù)據(jù)集成資源組或新版資源組(通用型資源組)。
獲取ClickHouse集群信息
進(jìn)入ClickHouse產(chǎn)品控制臺(tái)。找到您要進(jìn)行數(shù)據(jù)同步的ClickHouse集群,在集群信息頁(yè)面獲取ClickHouse集群的外網(wǎng)地址、內(nèi)網(wǎng)地址、HTTP端口號(hào)、VPC ID、Vswitch ID、可用區(qū)。
準(zhǔn)備資源組并與ClickHouse網(wǎng)絡(luò)連通
在進(jìn)行數(shù)據(jù)同步前,需要完成您的資源組和ClickHouse集群配置網(wǎng)絡(luò)連通。
添加數(shù)據(jù)源
新建MaxCompute數(shù)據(jù)源
創(chuàng)建MaxCompute數(shù)據(jù)源,操作詳情請(qǐng)參見(jiàn)創(chuàng)建MaxCompute數(shù)據(jù)源。
新建ClickHouse數(shù)據(jù)源
在DataWorks數(shù)據(jù)源管理頁(yè)面,單擊新建數(shù)據(jù)源,根據(jù)界面提示新建ClickHouse數(shù)據(jù)源。配置要點(diǎn)如下。
JDBC URL:格式為
jdbc:clickhouse://<ip>:<port>/<dbname>
,其中:<ip>
:需替換為您ClickHouse集群的內(nèi)網(wǎng)地址或外網(wǎng)地址。如果您選擇使用VPC內(nèi)網(wǎng)聯(lián)通資源組和ClickHouse,則此處填寫(xiě)ClickHouse內(nèi)網(wǎng)地址。
如果您選擇使用公網(wǎng)聯(lián)通資源組和ClickHouse,則此處填寫(xiě)ClickHouse外網(wǎng)地址。
<port>
:需替換為您ClickHouse集群的HTTP端口號(hào)(通常為8123)。<dbname>
:需替換為您要同步的ClickHouse庫(kù)名。
用戶名、密碼:為對(duì)應(yīng)ClickHouse庫(kù)有訪問(wèn)權(quán)限的用戶名和密碼。
測(cè)試連通性:選擇您已經(jīng)完成與ClickHouse網(wǎng)絡(luò)聯(lián)通的資源組,確保連通狀態(tài)為可連通。
說(shuō)明如果您使用的是獨(dú)享數(shù)據(jù)集成資源組,完成上述步驟中的網(wǎng)絡(luò)連通后,僅可實(shí)現(xiàn)ClickHouse與對(duì)應(yīng)獨(dú)享數(shù)據(jù)集成資源組的網(wǎng)絡(luò)聯(lián)通。如您期望完成ClickHouse與數(shù)據(jù)服務(wù)資源組、調(diào)度資源組的網(wǎng)絡(luò)聯(lián)通,需分別進(jìn)行網(wǎng)絡(luò)連通的配置與連通測(cè)試。
新建離線同步任務(wù)
在數(shù)據(jù)開(kāi)發(fā)(DataStudio)頁(yè)面的某個(gè)業(yè)務(wù)流程下,新建一個(gè)離線同步節(jié)點(diǎn),根據(jù)界面提示配置節(jié)點(diǎn)的路徑、名稱等信息,操作詳情請(qǐng)參見(jiàn)通過(guò)向?qū)J脚渲秒x線同步任務(wù)。
配置數(shù)據(jù)來(lái)源:MaxCompute側(cè)參數(shù)
配置離線同步節(jié)點(diǎn)的數(shù)據(jù)來(lái)源相關(guān)參數(shù)。本實(shí)踐將MaxCompute數(shù)據(jù)增量同步至ClickHouse,數(shù)據(jù)來(lái)源為MaxCompute表,配置要點(diǎn)如下所示。
配置項(xiàng) | 配置要點(diǎn) |
數(shù)據(jù)源 | 選擇上述新建的MaxCompute數(shù)據(jù)源。如果您使用的是標(biāo)準(zhǔn)類(lèi)型的DataWorks工作空間,會(huì)分別顯示開(kāi)發(fā)和生產(chǎn)項(xiàng)目的名稱。 |
表 | 選擇待同步的MaxCompute表。如果您使用的是標(biāo)準(zhǔn)類(lèi)型的DataWorks工作空間,請(qǐng)確保在MaxCompute的開(kāi)發(fā)環(huán)境和生產(chǎn)環(huán)境中存在同名且表結(jié)構(gòu)一致的MaxCompute表。 說(shuō)明 如果:
|
分區(qū)信息 | 您可以填入分區(qū)列的取值。
|
其他參數(shù)保持默認(rèn)即可。
配置數(shù)據(jù)去向:ClickHouse側(cè)參數(shù)
本實(shí)踐將數(shù)據(jù)同步至ClickHouse,數(shù)據(jù)去向是ClickHouse。配置要點(diǎn)如下。
配置項(xiàng) | 配置要點(diǎn) |
數(shù)據(jù)源 | 選擇上述新建的ClickHouse數(shù)據(jù)源。 |
表 | 選擇待同步的Clickhouse表。建議對(duì)于要進(jìn)行數(shù)據(jù)同步的表,ClickHouse數(shù)據(jù)源開(kāi)發(fā)和生產(chǎn)環(huán)境保證具有相同的表結(jié)構(gòu)。 說(shuō)明 此處會(huì)展示ClickHouse數(shù)據(jù)源開(kāi)發(fā)環(huán)境地的表列表和表結(jié)構(gòu),如果您的ClickHouse數(shù)據(jù)源開(kāi)發(fā)和生產(chǎn)環(huán)境的表定義不同,則可能出現(xiàn)任務(wù)在開(kāi)發(fā)環(huán)境配置正常但提交生產(chǎn)運(yùn)行后報(bào)錯(cuò)表不存在、列不存在的問(wèn)題。 |
導(dǎo)入前準(zhǔn)備語(yǔ)句、導(dǎo)入后完成語(yǔ)句 | 您可以在執(zhí)行數(shù)據(jù)同步任務(wù)的前后按需執(zhí)行SQL語(yǔ)句。比如在按天進(jìn)行數(shù)據(jù)同步前清理對(duì)應(yīng)天分區(qū)的數(shù)據(jù),保證本次數(shù)據(jù)寫(xiě)入前對(duì)應(yīng)分區(qū)是無(wú)數(shù)據(jù)的。 |
批量插入字節(jié)大小、批量插入條數(shù) | 數(shù)據(jù)同步寫(xiě)入ClickHouse時(shí)采用攢批寫(xiě)入方式,此處是攢批的字節(jié)數(shù)上限、條數(shù)上限。如果讀取到的數(shù)據(jù)達(dá)到攢批的字節(jié)數(shù)上限或條數(shù)上限,則認(rèn)為攢夠一批,每攢夠一批則寫(xiě)入一批數(shù)據(jù)到ClickHouse。 批量插入字節(jié)大小建議值為16777216(16MB),批量插入條數(shù)建議按照您單條記錄的大小調(diào)整為一個(gè)較大值,從而依靠批量插入字節(jié)大小觸發(fā)批次寫(xiě)入。 例如單條記錄大小為1KB,批量插入字節(jié)大小設(shè)置為16777216(16MB),批量插入條數(shù)設(shè)置為20000(大于16MB/1KB=16384),則會(huì)通過(guò)批量插入字節(jié)大小觸發(fā)寫(xiě)入,每達(dá)到16MB寫(xiě)入一次。 |
批量寫(xiě)入ClickHouse異常時(shí) | 批量寫(xiě)入ClickHouse異常時(shí),可以選擇異常處理策略:
|
配置字段映射
選擇數(shù)據(jù)來(lái)源和數(shù)據(jù)去向后,需要指定讀取端和寫(xiě)入端列的映射關(guān)系。您可以選擇同名映射、同行映射、取消映射或自動(dòng)排版。
配置通道控制
設(shè)置任務(wù)同步并發(fā)數(shù),可容忍的臟數(shù)據(jù)條數(shù)等。
調(diào)整內(nèi)存參數(shù)
如果您在并發(fā)調(diào)大后同步速率增長(zhǎng)不明顯,可以嘗試手工調(diào)整同步任務(wù)內(nèi)存參數(shù)。調(diào)整方式如下。
轉(zhuǎn)換任務(wù)為腳本模式。
在腳本JSON段的
setting
中增加jvmOption
參數(shù),參數(shù)形如-Xms${heapMem} -Xmx${heapMem} -Xmn${newMem}
。
向?qū)J较孪到y(tǒng)計(jì)算的${heapMem}
的取值為768MB+(并發(fā)數(shù)-1)*256 MB
。建議您在腳本模式中將${heapMem}
設(shè)置為更大值,并將${newMem}
設(shè)置為${heapMem}
的三分之一。如并發(fā)數(shù)為8時(shí),向?qū)J侥J(rèn)計(jì)算的${heapMem}
為2560MB,腳本模式中可設(shè)置更大值,如設(shè)置jvmOption
為-Xms3072m -Xmx3072m -Xmn1024m
。
調(diào)度配置
單擊右側(cè)的調(diào)度配置,本實(shí)踐示例涉及的調(diào)度配置要點(diǎn)如下。通用的調(diào)度配置指導(dǎo)及全量調(diào)度相關(guān)參數(shù)的介紹請(qǐng)參見(jiàn)調(diào)度配置。
重跑屬性。
可根據(jù)業(yè)務(wù)需求設(shè)置不同的重跑策略,設(shè)置失敗可重跑策略可以有效降低因?yàn)榫W(wǎng)絡(luò)抖動(dòng)等偶發(fā)問(wèn)題導(dǎo)致的任務(wù)失敗。
配置調(diào)度依賴。
可根據(jù)業(yè)務(wù)需求設(shè)置不同的調(diào)度依賴。您可以通過(guò)設(shè)置依賴上一周期的本節(jié)點(diǎn),保證本節(jié)點(diǎn)多個(gè)調(diào)度周期的任務(wù)實(shí)例是依次執(zhí)行完成的,避免多任務(wù)實(shí)例同時(shí)調(diào)度運(yùn)行。
數(shù)據(jù)集成資源組配置
選擇在創(chuàng)建數(shù)據(jù)源時(shí),與ClickHouse數(shù)據(jù)源、MaxCompute數(shù)據(jù)源都完成連通性檢查的數(shù)據(jù)集成資源組。
試運(yùn)行與提交執(zhí)行任務(wù)
試運(yùn)行
單擊頂部的運(yùn)行或帶參運(yùn)行,可以試運(yùn)行并查看同步結(jié)果是否符合預(yù)期。
帶參運(yùn)行可以針對(duì)任務(wù)配置中使用的調(diào)度系統(tǒng)參數(shù)進(jìn)行替換。
如果是標(biāo)準(zhǔn)項(xiàng)目,此時(shí)會(huì)在開(kāi)發(fā)環(huán)境運(yùn)行同步任務(wù),源端使用MaxCompute的開(kāi)發(fā)項(xiàng)目開(kāi)發(fā)表,目標(biāo)端使用ClickHouse的開(kāi)發(fā)環(huán)境JDBC URL和庫(kù)表。
提交和發(fā)布任務(wù)
試運(yùn)行沒(méi)有問(wèn)題后,您可以保存離線節(jié)點(diǎn)的配置,并提交發(fā)布至運(yùn)維中心,后續(xù)離線同步任務(wù)將會(huì)周期性(分鐘或小時(shí)或天)將Kafka的數(shù)據(jù)寫(xiě)入MaxCompute的表中。提交發(fā)布的操作請(qǐng)參見(jiàn)發(fā)布任務(wù)。
發(fā)布成功后,您可以在運(yùn)維中心查看周期調(diào)度運(yùn)行結(jié)果、進(jìn)行補(bǔ)數(shù)據(jù)等操作。