close

點擊上方藍字關注我們




作者 |隨緣清風殤



如果你有將源系統 MySQL 表數據全量抽取到 Hive 中作為 ODS 層,不保留歷史變化這樣的需求,不妨看看這篇文章。














create table T_YYBZB_TGH_BANKINFO( id int(8), bank_id int(8), bank_name varchar(200));insert into T_YYBZB_TGH_BANKINFO (ID, BANK_ID, BANK_NAME)values (11, 11, '工商銀行(廣州)');

01

創建目標表


create table ods.ods_t_yybzb_tgh_bankinfo_di( id int, bank_id int, bank_name string);

02

編寫相關腳本


2.1、編寫數據庫配置文件db_conf

mysql_username=rootmysql_password=123456mysql_ip=192.168.6.102mysql_port=3306mysql_sid=sourcehadoop102_ip=192.168.6.102hadoop102_port=8020

2.2、編寫數據遷移JSON文件

{ "job": { "content": [ { "reader": { "name": "mysqlreader", "parameter": { "connection": [ { "jdbcUrl": ["jdbc:mysql://$ip:$port/$sid"], "querySql": ["select id,bank_id,bank_name from T_YYBZB_TGH_BANKINFO"], } ], "password": "$password", "username": "$username" } }, "writer": { "name": "hdfswriter", "parameter": { "defaultFS": "hdfs://$hdfs_ip:$hdfs_port", "fileType": "text", "path": "/user/hive/warehouse/ods.db/ods_t_yybzb_tgh_bankinfo_di", "fileName": "ods_t_yybzb_tgh_bankinfo_di", "column": [ {"name":"id","type":"int"}, {"name":"bank_id","type":"int"}, {"name":"bank_name","type":"string"} ], "writeMode": "append", "fieldDelimiter": "\t", "encoding": "utf-8" } } }], "setting": { "speed": { "channel": "1" } } }}

2.3、編寫shell腳本傳參

#!/bin/bash#配置文件路徑:config_file=../db_conf/db.conf#源系統名稱src_system=mysql#目標系統名稱tag_system=hadoop102export in_username=`grep -w ${src_system}_username ${config_file} |awk -F '=' '{print $2}'`export in_password=`grep -w ${src_system}_password ${config_file} |awk -F '=' '{print $2}'`export in_ip=`grep -w ${src_system}_ip ${config_file} |awk -F '=' '{print $2}'`export in_port=`grep -w ${src_system}_port ${config_file} |awk -F '=' '{print $2}'`export in_sid=`grep -w ${src_system}_sid ${config_file} |awk -F '=' '{print $2}'`export in_hdfs_ip=`grep -w ${tag_system}_ip ${config_file} |awk -F '=' '{print $2}'`export in_hdfs_port=`grep -w ${tag_system}_port ${config_file} |awk -F '=' '{print $2}'`pre_day=`date -d -1day +%Y%m%d`pre_day_mon=`date -d -1day +%Y%m`echo ${in_username}echo ${in_password}echo ${in_ip}echo ${in_port}echo ${in_sid}echo ${in_hdfs_ip}echo ${in_hdfs_port}echo ${pre_day}echo ${pre_day_mon}# 全量導入:hive -e "truncate table test_hive.stu;"# nsrun_workgroup.jsonpython ../../datax.py -p"-Dusername=$in_username -Dpassword=$in_password -Dip=$in_ip -Dport=$in_port -Dsid=$in_sid -Dhdfs_ip=$in_hdfs_ip -Dhdfs_port=$in_hdfs_port" ../json_conf/bank_name.json

03

DolphinScheduler配置



3.1、資源中心配置

(1)創建主文件夾datax_text


(2)創建三個子文件夾

sh_startjson_confdb_conf

(3)將腳本分被上傳至對應文件夾中

① start.sh上傳至sh_start

② bank_name.json上傳至json_conf

③db.conf上傳至db_conf文件夾


3.2、項目創建

根據業務主題進行劃分



3.3、工作流創建

3.3.1、shell腳本調度datax(此路未通)

(1)創建工作流

工作流定義-創建工作流



(2)配置sql+shell控件節點

配置數據源



配置sql控件(清空表)


truncate table ods.ods_t_yybzb_tgh_bankinfo_di

配置shell控件(導入數據)



(3)保存shell節點作為工作流


(4)調度運行

第一步:上線部署




第二步:手動運行




(5)查看運行狀態

通過工作流進入畫布查看子任務運行狀態(非常推薦)




通過工作流實例查看運行狀態



通過甘特圖查看運行狀態



3.3.2、DataX組件調度

(1)JSON腳本編寫
{ "job": { "content": [ { "reader": { "name": "mysqlreader", "parameter": { "connection": [ { "jdbcUrl": ["jdbc:mysql://${ip}:${port}/${sid}?useSSL=false"], "querySql": ["select id,bank_id,bank_name from T_YYBZB_TGH_BANKINFO"], } ], "password": "${password}","username": "${username}" } }, "writer": { "name": "hdfswriter", "parameter": { "defaultFS": "hdfs://${hdfs_ip}:${hdfs_port}", "fileType": "text", "path": "/user/hive/warehouse/ods.db/ods_t_yybzb_tgh_bankinfo_di", "fileName": "ods_t_yybzb_tgh_bankinfo_di", "column": [ {"name":"id","type":"int"}, {"name":"bank_id","type":"int"}, {"name":"bank_name","type":"string"} ], "writeMode": "append", "fieldDelimiter": "\t", "encoding": "utf-8" } } }], "setting": { "speed": { "channel": "1" } } }}

(2)組件部署

SQL組件清空表


truncate table ods.ods_t_yybzb_tgh_bankinfo_di

DataX組件全量導入數據



(3)參數傳入

(4)上線運行

第一步:上線部署



第二步:手動運行


(5)查看運行結果


SQL組件日誌


[INFO] 2021-12-07 16:04:20.697 - [taskAppId=TASK-10-23-85]:[115] - create dir success /tmp/dolphinscheduler/exec/process/4/10/23/85[INFO] 2021-12-07 16:04:20.750 - [taskAppId=TASK-10-23-85]:[112] - sql task params {"postStatements":[],"connParams":"","receiversCc":"","udfs":"","type":"HIVE","title":"","sql":"truncate table ods.ods_t_yybzb_tgh_bankinfo_di","preStatements":[],"sqlType":"1","sendEmail":false,"receivers":"","datasource":7,"displayRows":10,"limit":10000,"showType":"TABLE","localParams":[]}[INFO] 2021-12-07 16:04:20.755 - [taskAppId=TASK-10-23-85]:[128] - Full sql parameters: SqlParameters{type='HIVE', datasource=7, sql='truncate table ods.ods_t_yybzb_tgh_bankinfo_di', sqlType=1, sendEmail=false, displayRows=10, limit=10000, udfs='', showType='TABLE', connParams='', title='', receivers='', receiversCc='', preStatements=[], postStatements=[]}[INFO] 2021-12-07 16:04:20.755 - [taskAppId=TASK-10-23-85]:[129] - sql type : HIVE, datasource : 7, sql : truncate table ods.ods_t_yybzb_tgh_bankinfo_di , localParams : [],udfs : ,showType : TABLE,connParams : , query max result limit : 10000[INFO] 2021-12-07 16:04:20.765 - [taskAppId=TASK-10-23-85]:[549] - after replace sql , preparing : truncate table ods.ods_t_yybzb_tgh_bankinfo_di[INFO] 2021-12-07 16:04:20.765 - [taskAppId=TASK-10-23-85]:[558] - Sql Params are replaced sql , parameters:[INFO] 2021-12-07 16:04:20.767 - [taskAppId=TASK-10-23-85]:[52] - can't find udf function resource[INFO] 2021-12-07 16:04:20.974 - [taskAppId=TASK-10-23-85]:[458] - prepare statement replace sql : org.apache.hive.jdbc.HivePreparedStatement@43ecab0e

DataX組件日誌


2021-12-07 16:04:36.123 [job-0] INFO JobContainer - PerfTrace not enable!2021-12-07 16:04:36.123 [job-0] INFO StandAloneJobContainerCommunicator - Total 15 records, 134 bytes | Speed 13B/s, 1 records/s | Error 0 records, 0 bytes | All Task WaitWriterTime 0.000s | All Task WaitReaderTime 0.000s | Percentage 100.00%2021-12-07 16:04:36.124 [job-0] INFO JobContainer - 任務啟動時刻 : 2021-12-07 16:04:25任務結束時刻 : 2021-12-07 16:04:36任務總計耗時 : 11s任務平均流量 : 13B/s記錄寫入速度 : 1rec/s讀出記錄總數 : 15讀寫失敗總數 : 0

3.4、工作流調試

(1)查看運行日誌

任務實例-操作查看運行日誌



具體日誌如下



(2)任務下線

工作流定義-》操作-》下線



(3)調整任務



(3)重新上線並運行


04

常見問題



4.1、無可用master節點

(1)問題如下

在作業流調試運行報錯:無可用master節點




(2)問題原因

masterserver服務掛調

(3)重啟服務

./stop-all.sh./start-all.sh

4.2、Hive數據源配置

(1)Hive的多用戶配置

Hive本身不創建用戶,用戶就是linux的用戶

(2)打開Hive的server服務


第一步:運行Hive下bin/hiveserver2腳本
./hiveserver2

第二步:新建xshell窗口

beeline# 2、連接hive2!connect jdbc:hive2://192.168.6.102:10000# 3、輸入用戶名和密碼Enter username for jdbc:hive2://192.168.6.102:10000: atguiguEnter password for jdbc:hive2://192.168.6.102:10000: ******


(3)海豚調度器創建數據源


4.3、Hive數據源連接失敗

(1)問題現象

(2)問題原因

# 1、檢查hiveserver是否啟動netstat -anp |grep 10000

(3)解決方式

啟動hiveserver2

4.4、作業流提交後沒有任務實例

查看海豚日誌


current cpu load average 0.35 is too high or available memory 0.14G is too low, under max.cpuload.avg=16.0 and reserved.memory=0.3G[WARN] 2021-12-06 17:17:45.031 org.apache.dolphinscheduler.server.master.dispatch.host.LowerWeightHostManager:[159] - worker 192.168.6.102:1234 current cpu load average 0.42 is too high or available memory 0.14G is too low[WARN] 2021-12-06 17:17:45.032 org.apache.dolphinscheduler.server.master.dispatch.host.LowerWeightHostManager:[159] - worker 192.168.6.102:1234 current cpu load average 0.42 is too high or available memory 0.14G is too low[WARN] 2021-12-06 17:17:50.032 org.apache.dolphinscheduler.server.master.dispatch.host.LowerWeightHostManager:[159] - worker 192.168.6.102:1234 current cpu load average 0.42 is too high or available memory 0.14G is too low[WARN] 2021-12-06 17:17:50.032 org.apache.dolphinscheduler.server.master.dispatch.host.LowerWeightHostManager:[159] - worker 192.168.6.102:1234 current cpu load average 0.42 is too high or available memory 0.14G is too low[WARN] 2021-12-06 17:17:51.317 org.apache.dolphinscheduler.server.registry.HeartBeatTask:[80] - current cpu load average 0.3 is too high or available memory 0.14G is too low, under max.cpuload.avg=16.0 and reserved.memory=0.3G

解決方式


在jvm里配置啟動參數

4.5、datax文件路徑出錯

(1)問題現象

日誌報錯沒有這樣的文件路徑,but集群上的datax啟動目錄是這樣的



(2)問題原因

海豚調度器的datax路徑配置錯誤,找不到該文件


dataX在Hadoop02上部署,沒有在103,104節點部署


(3)解決方案

將datax文件scp到集群其他節點

4.6、/bin/sh: java: 未找到命令

(1)問題現象


(2)問題原因

未配置dolphinscheduler_env.sh文件
(3)解決方案

dolphinscheduler_env.sh

添加如下內容


#JAVA_HOMEexport JAVA_HOME=/opt/module/jdk1.8.0_212export PATH=$PATH:$JAVA_HOME/bin

4.7、[Erro 2] No such file or directory

(1)問題現象


(2)問題原因

未配置dolphinscheduler_env.sh文件

(3)解決方案

dolphinscheduler_env.sh

添加如下內容


#JAVA_HOMEexport JAVA_HOME=/opt/module/jdk1.8.0_212export PATH=$PATH:$JAVA_HOME/bin#HADOOP_HOMEexport HADOOP_HOME=/opt/module/hadoop-3.1.3export PATH=$PATH:$HADOOP_HOME/binexport PATH=$PATH:$HADOOP_HOME/sbin#HIVE_HOMEexport HIVE_HOME=/opt/module/hiveexport PATH=$PATH:$HIVE_HOME/bin#KAFKA_HOMEexport KAFKA_HOME=/opt/module/kafkaexport PATH=$PATH:$KAFKA_HOME/bin#HBASE_HOMEexport HBASE_HOME=/opt/module/hbaseexport PATH=$PATH:$HBASE_HOME/bin#FLINK_HOMEexport FLINK_HOME=/opt/module/flink-1.10.1export PATH=$PATH:$FLINK_HOME/bin#SPARK_HOMEexport SPARK_HOME=/opt/module/spark-3.1.2export PATH=$PATH:$SPARK_HOME/binexport PATN=$PATH:$SPARK_HOME/sbin#DATAX_HOMEexport DATAX_HOME=/opt/module/dataxexport PATH=$PATH:$DATAX_HOME/bin

之後分發到其他節點

xsync dolphinscheduler_env.sh

4.8org.apache.hadoop.security.AccessControlException: Permission denied:test123

(1)問題現狀

無法寫入文件


(2)問題原因

調度平台使用的test123租戶進行JOB調度,而HDFS的Hive表權限是atguigu用戶,所以權限不足,導致無法寫入文件。

(3)解決方案

在安全中心-租戶管理菜單中配置atguigu用戶

保存作業流時選擇atguigu用戶

4.9 連接MySQL失敗

(1)問題現狀

java.lang.Exception: DataX無法連接對應的數據庫,可能原因是:1) 配置的ip/port/database/jdbc錯誤,無法連接。2) 配置的username/password錯誤,鑒權失敗。請和DBA確認該數據庫的連接信息是否正確。

(2)問題原因

JDBC參數配置出錯

(3)解決方案

在jdbc的連接配置中加上useSSL=false

"jdbcUrl": ["jdbc:mysql://$ip:$port/$sid?useSSL=false"],

版權聲明:本文為CSDN博主「隨緣清風殤」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。

原文鏈接:https://blog.csdn.net/qq_27924553/article/details/121772937

05

加入我們



隨着國內開源的迅猛崛起,Apache DolphinScheduler 社區迎來蓬勃發展,為了做更好用、易用的調度,真誠歡迎熱愛開源的夥伴加入到開源社區中來,為中國開源崛起獻上一份自己的力量,讓本土開源走向全球。

參與 DolphinScheduler 社區有非常多的參與貢獻的方式,包括:

貢獻第一個PR(文檔、代碼)我們也希望是簡單的,第一個PR用於熟悉提交的流程和社區協作以及感受社區的友好度。

社區匯總了以下適合新手的問題列表:https://github.com/apache/dolphinscheduler/issues/5689

非新手問題列表:https://github.com/apache/dolphinscheduler/issues?q=is%3Aopen+is%3Aissue+label%3A%22volunteer+wanted%22

如何參與貢獻鏈接:https://dolphinscheduler.apache.org/zh-cn/docs/development/contribute.html

來吧,DolphinScheduler開源社區需要您的參與,為中國開源崛起添磚加瓦吧,哪怕只是小小的一塊瓦,匯聚起來的力量也是巨大的。

參與開源可以近距離與各路高手切磋,迅速提升自己的技能,如果您想參與貢獻,我們有個貢獻者種子孵化群,可以添加社區小助手

微信(Leonard-ds)手把手教會您( 貢獻者不分水平高低,有問必答,關鍵是有一顆願意貢獻的心 )。添加小助手微信時請說明想參與貢獻。

來吧,開源社區非常期待您的參與。









社區官網https://dolphinscheduler.apache.org/

代碼倉地址https://github.com/apache/dolphinscheduler

您的Star,是Apache DolphinScheduler為愛發電的動力❤️~


投稿請添加社區小助手微信

(Leonard-ds)





WorkflowAsCode 來了,Apache DolphinScheduler 2.0.2 驚喜發布!
☞恭喜 Apache DolphinScheduler 入選可信開源社區共同體預備成員!☞Apache DolphinScheduler 獲評 2021 OSC 最受歡迎項目,白鯨開源獲優秀中國開源原生創企獎項!☞看看又是誰在悄悄做貢獻?☞感謝有你!所有貢獻者來領禮物了☞一文給你整明白多租戶在 Apache DolphinScheduler 中的作用☞開源並不是大牛的專屬,普通人也能有屬於自己的一畝三分地☞在 Apache DolphinScheduler 上調試 LDAP 登錄,親測有效!☞4 億用戶,7W+ 作業調度難題,Bigo 基於 Apache DolphinScheduler 巧化解


點擊閱讀原文,加入開源!



點個在看你最好看

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 鑽石舞台 的頭像
    鑽石舞台

    鑽石舞台

    鑽石舞台 發表在 痞客邦 留言(0) 人氣()