1. 程式人生 > >環境篇:DolphinScheduler-1.3.1安裝部署及使用技巧

環境篇:DolphinScheduler-1.3.1安裝部署及使用技巧

# 環境篇:DolphinScheduler-1.3.1安裝部署 ## 1 配置jdk JDK百度網盤:[https://pan.baidu.com/s/1og3mfefJrwl1QGZGZDZ8Sw](https://pan.baidu.com/s/1og3mfefJrwl1QGZGZDZ8Sw) 提取碼:t6l1 ```java #檢視命令 rpm -qa | grep java #刪除命令 rpm -e --nodeps xxx ``` - 將oracle-j2sdk1.8-1.8.0+update181-1.x86_64.rpm上傳至每個節點安裝 ```java rpm -ivh oracle-j2sdk1.8-1.8.0+update181-1.x86_64.rpm ``` - 修改配置檔案 ```java vim /etc/profile #新增 export JAVA_HOME=/usr/java/jdk1.8.0_181-cloudera export PATH=$JAVA_HOME/bin:$PATH export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar ``` - 重新整理源 ```java source /etc/profile ``` - 檢驗 ```java java javac ``` ## 2 pip、kazoo 安裝 ```java yum -y install epel-release yum -y install python-pip yum -y install pip pip --version pip install kazoo #使用python #import kazoo,不報錯即可 ``` ## 3 下載二進位制tar.gz包 > 請下載最新版本的後端安裝包至伺服器部署目錄,比如建立 /opt/dolphinscheduler 做為安裝部署目錄 [https://dolphinscheduler.apache.org/zh-cn/docs/release/download.html](https://dolphinscheduler.apache.org/zh-cn/docs/release/download.html) ```java # 建立部署目錄,部署目錄請不要建立在/root、/home等高許可權目錄 mkdir -p /opt/dolphinscheduler cd /opt/dolphinscheduler # 上傳檔案並解壓縮 tar -zxvf apache-dolphinscheduler-incubating-1.3.1-dolphinscheduler-bin.tar.gz -C /opt/dolphinscheduler #修改解壓檔名字 mv apache-dolphinscheduler-incubating-1.3.1-dolphinscheduler-bin dolphinscheduler-bin ``` ## 4 建立使用者 ```java # 建立部署使用者並賦予密碼 userdel -r dolphinscheduler useradd dolphinscheduler && echo dolphinscheduler | passwd --stdin dolphinscheduler # 配置sudo免密 sed -i '$adolphinscheduler ALL=(ALL) NOPASSWD: NOPASSWD: ALL' /etc/sudoers sed -i 's/Defaults requirett/#Defaults requirett/g' /etc/sudoers # 修改目錄許可權,使得部署使用者對dolphinscheduler-bin目錄有操作許可權 chown -R dolphinscheduler:dolphinscheduler dolphinscheduler-bin ``` > 注意: > > - 因為任務執行服務是以 sudo -u {linux-user} 切換不同linux使用者的方式來實現多租戶執行作業,所以部署使用者需要有 sudo 許可權,而且是免密的。初學習者不理解的話,完全可以暫時忽略這一點 > - 如果發現/etc/sudoers檔案中有"Default requiretty"這行,也請註釋掉 > - 如果用到資源上傳的話,還需要給該部署使用者分配操作本地檔案系統或者HDFS或者MinIO的許可權 ## 5 對部署使用者配置免密 > 所有節點 ```java su dolphinscheduler #生成金鑰對(公鑰和私鑰)三次回車生成金鑰 ssh-keygen -t rsa #檢視公鑰 cat ~/.ssh/id_rsa.pub #將密匙輸出到/root/.ssh/authorized_keys cat ~/.ssh/id_rsa.pub > ~/.ssh/authorized_keys chmod 600 ~/.ssh/authorized_keys #注意:正常設定後,dolphinscheduler使用者在執行命令ssh localhost 是不需要再輸入密碼的(請進行測試) ``` - 以下是叢集配置需要進行多機器免密,如果是單機請忽略 > 主節點 ```java #追加金鑰到主節點(需要操作及密碼驗證,追加完後檢視一下該檔案)--在主節點上操作,拷取從節點密匙 ssh 從節點機器IP cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys cat ~/.ssh/authorized_keys #從主節點複製金鑰到從節點 scp ~/.ssh/authorized_keys dolphinscheduler@從節點機器IP:~/.ssh/authorized_keys ``` > 所有節點互相進行ssh連線 ```shell ssh [email protected] ssh [email protected] ``` ## 7 部署mysql使用者 > 因為我們並沒有選擇預設資料庫PostgreSQL,故進入mysql資料庫 ```java # 設定資料使用者 dolphinscheduler 的訪問密碼為 dolphinscheduler,並且不對訪問的 ip 做限制 # 測試環境將訪問設定為所有,如果是生產,可以限制只能子網段的ip才能訪問('192.168.1.%') CREATE DATABASE dolphinscheduler DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci; GRANT ALL PRIVILEGES ON dolphinscheduler.* TO 'dolphinscheduler'@'%' IDENTIFIED BY 'dolphinscheduler'; GRANT ALL PRIVILEGES ON dolphinscheduler.* TO 'dolphinscheduler'@'localhost' IDENTIFIED BY 'dolphinscheduler'; flush privileges; ``` ## 8 建立表和匯入基礎資料 - 修改datasource.properties中的下列屬性 ```sql vim conf/datasource.properties #注意:註釋postgre連線,開啟mysql連線 >>>> #注意:註釋postgre連線,新增mysql連線 #spring.datasource.driver-class-name=org.postgresql.Driver #spring.datasource.url=jdbc:postgresql://localhost:5432/dolphinscheduler #注意下面:{user}值 和 {password}值 還有 IP地址 需要自行修改 spring.datasource.driver-class-name=com.mysql.jdbc.Driver spring.datasource.url=jdbc:mysql://xxx:3306/dolphinscheduler?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true spring.datasource.username=dolphinscheduler spring.datasource.password=dolphinscheduler ``` > 還需要手動新增 mysql-connector-java 驅動jar包到lib目錄下,這裡下載的是mysql-connector-java-5.1.47.jar [https://downloads.mysql.com/archives/c-j/](https://downloads.mysql.com/archives/c-j/) ```java #檢視jar包是否放入 ll lib | grep mysql ``` ![](https://img2020.cnblogs.com/blog/1235870/202007/1235870-20200728160614363-1922886008.png) - 執行 script 目錄下的建立表及匯入基礎資料指令碼,這樣我們的資料庫裡面有了小海豚的資料表了。 ```java sh script/create-dolphinscheduler.sh ``` ![](https://img2020.cnblogs.com/blog/1235870/202007/1235870-20200728170703223-1175082298.png) ## 9 修改執行引數 ### 9.1 dolphinscheduler_env.sh - 修改 conf/env 目錄下的 dolphinscheduler_env.sh`環境變數 ```java vim conf/env/dolphinscheduler_env.sh >>>> export HADOOP_HOME=/opt/cloudera/parcels/CDH/lib/hadoop export HADOOP_CONF_DIR=/etc/hadoop/conf export SPARK_HOME1=/opt/cloudera/parcels/CDH/lib/spark #export SPARK_HOME2=/opt/soft/spark2 export PYTHON_HOME=/usr/bin/python export JAVA_HOME=/usr/java/jdk1.8.0_181-cloudera export HIVE_HOME=/opt/cloudera/parcels/CDH/lib/hive #export FLINK_HOME=/opt/soft/flink #export DATAX_HOME=/opt/soft/datax/bin/datax.py #export PATH=$HADOOP_HOME/bin:$SPARK_HOME1/bin:$SPARK_HOME2/bin:$PYTHON_HOME:$JAVA_HOME/bin:$HIVE_HOME/bin:$PATH:$FLINK_HOME/bin:$DATAX_HOME:$PATH export PATH=$HADOOP_HOME/bin:$SPARK_HOME1/bin:$SPARK_HOME2/bin:$PYTHON_HOME:$JAVA_HOME/bin:$HIVE_HOME/bin:$PATH <<< ``` > 這裡的環境遮蔽了FLINK和DATAX有需要的同學可以自行新增 ### 9.2 修改一鍵部署配置檔案 - conf/config/install_config.conf中的各引數,特別注意以下引數的配置 ```java vim conf/config/install_config.conf >>> # 這裡填 mysql or postgresql dbtype="mysql" # 資料庫連線地址 dbhost="localhost:3306" # 資料庫名 dbname="dolphinscheduler" # 資料庫使用者名稱,此處需要修改為上面設定的{user}具體值 username="dolphinscheduler" # 資料庫密碼, 如果有特殊字元,請使用\轉義,需要修改為上面設定的{passowrd}具體值 passowrd="dolphinscheduler" #Zookeeper地址,單機本機是localhost:2181,記得把2181埠帶上 zkQuorum="192.168.xx.xx:2181,192.168.xx.xx:2181,192.168.xx.xx:2181" #將DS安裝到哪個目錄,如: /usr/local/src/dolphinscheduler,不同於現在的目錄 installPath="/usr/local/src/dolphinscheduler" #使用哪個使用者部署,使用之前建立的使用者 deployUser="dolphinscheduler" # 郵件配置,以qq郵箱為例 # 郵件協議 mailProtocol="SMTP" # 郵件服務地址,這是是qq郵箱 mailServerHost="smtp.qq.com" # 郵件服務埠 mailServerPort="587" # mailSender和mailUser配置成一樣即可 # 傳送者 mailSender="[email protected]" # 傳送使用者 mailUser="[email protected]" # 郵箱密碼,這裡是開啟協議後服務商提供的密碼 mailPassword="ewbzasdcbhea" # TLS協議的郵箱設定為true,否則設定為false starttlsEnable="true" # 開啟SSL協議的郵箱配置為true,否則為false。注意: starttlsEnable和sslEnable不能同時為true sslEnable="false" # 郵件服務地址值,參考上面 mailServerHost sslTrust="smtp.qq.com" # 業務用到的比如sql等資原始檔上傳到哪裡,可以設定:HDFS,S3,NONE,單機如果想使用本地檔案系統,請配置為HDFS,因為HDFS支援本地檔案系統;如果不需要資源上傳功能請選擇NONE。強調一點:使用本地檔案系統不需要部署hadoop resourceStorageType="HDFS" # 這裡以儲存到HDFS為例 #注:但是如果你想上傳到HDFS的話,NameNode啟用了HA,則需要將hadoop的配置檔案core-site.xml和hdfs-site.xml放到conf目錄下,並配置namenode cluster名稱;如果NameNode不是HA,則修改為具體的ip或者主機名即可 # 本地檔案系統:"file:///data/dolphinscheduler" 或 HDFS叢集: hdfs://{具體的ip/主機名}:8020 defaultFS="hdfs://192.168.xx.xx:8020" # 如resourcemanager HA啟用,則配置為ResourceManager節點的主備ip或者hostname,比如"192.168.xx.xx,192.168.xx.xx";如果是單ResourceManager請配置yarnHaIps=""即可 yarnHaIps="" # 如果ResourceManager是HA或者沒有使用到Yarn保持預設值"yarnIp1"即可;如果是單ResourceManager,請配置真實的ResourceManager主機名或者ip singleYarnIp="192.168.xx.xx" # 資源上傳根路徑,支援HDFS和S3,由於hdfs支援本地檔案系統,需要確保本地資料夾存在且有讀寫許可權 resourceUploadPath="/data/dolphinscheduler" # 具備許可權建立resourceUploadPath的使用者 hdfsRootUser="hdfs" #在哪些機器上部署DS服務,本機選localhost(如下配置為單機配置,需要叢集配置,直接參考預設值即可) ips="localhost" #ssh埠,預設22 sshPort="22" #master服務部署在哪臺機器上 masters="localhost" #worker服務部署在哪臺機器上,並指定此worker屬於哪一個worker組,下面示例的default即為組名 workers="localhost:default" #報警服務部署在哪臺機器上 alertServer="localhost" #後端api服務部署在在哪臺機器上 apiServers="localhost" <<< ``` ### 9.3 配置資源中心功能 - 上傳資原始檔和udf函式,所有上傳的檔案和資源都會被儲存到hdfs上,所以需要配置以下配置 ```java vim conf/common.properties >
>> #有權在HDFS根路徑下建立目錄的使用者 hdfs.root.user=hdfs #資料儲存資料夾指定,資原始檔將儲存到此hadoop hdfs路徑,自配置,請確保該目錄存在於hdfs上並具有讀/寫許可權 data.store2hdfs.basepath=/data/dolphinscheduler #資源上傳啟動型別:HDFS,S3,NONE res.upload.startup.type=HDFS #是否啟動kerberos hadoop.security.authentication.startup.state=false #java.security.krb5.conf路徑 java.security.krb5.conf.path=/opt/krb5.conf #LoginUserFromKeytab使用者 [email protected] #LoginUserFromKeytab路徑 login.user.keytab.path=/opt/hdfs.headless.keytab # 如果namenode ha需要複製core-site.xml和hdfs-site.xml,到conf目錄,支援s3,例如:s3a://dolphinscheduler fs.defaultFS=hdfs://mycluster:8020 #resourcemanager ha注意這需要ip,如果是單ip,則為空 yarn.resourcemanager.ha.rm.ids=192.168.xx.xx,192.168.xx.xx #如果它是單個resourcemanager,您只需要配置一個主機名。如果它是resourcemanager HA,則預設配置是正確的 yarn.application.status.address=http://xxxx:8088/ws/v1/cluster/apps/%s <<< ``` ```java sudo mkdir /data/dolphinscheduler sudo chown -R dolphinscheduler:dolphinscheduler /data/dolphinscheduler ``` >
yarn.resourcemanager.ha.rm.ids與yarn.application.status.address只需配置其中一個地址,另一個地址配置為空。 > 需要從Hadoop叢集的conf目錄下複製core-site.xml、hdfs-site.xml到dolphinscheduler專案的conf目錄下,重啟api-server服務。 ### 9.4 一鍵部署 - 切換到部署使用者,執行一鍵部署指令碼 ```java sh install.sh ``` > 注意: 第一次部署的話,在執行中第3步3,stop server出現5次以下資訊,此資訊可以忽略 sh: bin/dolphinscheduler-daemon.sh: No such file or directory >
指令碼完成後,會啟動以下5個服務,使用 jps 命令檢視服務是否啟動 ![](https://img2020.cnblogs.com/blog/1235870/202007/1235870-20200728195728411-1622893449.png) > 如果以上服務都正常啟動,說明自動部署成功 > 部署成功後,可以進行日誌檢視,日誌統一存放於logs資料夾內 ``` logs/ ├── dolphinscheduler-alert-server.log ├── dolphinscheduler-master-server.log ├── dolphinscheduler-worker-server.log ├── dolphinscheduler-api-server.log ├── dolphinscheduler-logger-server.log ``` ![](https://img2020.cnblogs.com/blog/1235870/202007/1235870-20200728200134469-1213938933.png) ## 10 登入系統 - 訪問前端頁面地址,介面ip(自行修改) http://192.168.xx.xx:12345/dolphinscheduler - 賬號:admin - 密碼:dolphinscheduler123 ![](https://img2020.cnblogs.com/blog/1235870/202007/1235870-20200728200823525-1615517364.png) ## 11 Hello DolphinScheduler ### 11.1 Hello 租戶使用者 > 進入小海豚,我們會被直接拉入安全中心頁面,難道不應該是炫酷的首頁麼?其實這是告訴我們這個頁面很重要,為什麼呢? > > 因為我們需要做我們的租戶使用者管理,我們先建立,慢慢解釋。 ![](https://img2020.cnblogs.com/blog/1235870/202007/1235870-20200728201059119-879574410.png) - 建立dolphinscheduler租戶,這裡的租戶需要和我們的linux使用者關聯,也就是說liunx必須有。 ![](https://img2020.cnblogs.com/blog/1235870/202007/1235870-20200728201355602-1130606119.png) - 然後是建立使用者(下圖例子為建立開發賬號dev2020),這裡我們的admin使用者不做修改,只作為管理賬號使用。 ![](https://img2020.cnblogs.com/blog/1235870/202007/1235870-20200728201504736-69912179.png) ![](https://img2020.cnblogs.com/blog/1235870/202007/1235870-20200728201630937-1085415736.png) > 從圖中我們看見租戶的選擇。其實意思也顯而易見了,比如我們根據業務環境來區分使用者,那麼這個使用者,在提交我們小海豚上編輯的流程時,小海豚會去liunx上執行,這時使用的就是我們的租戶(也就是liunx使用者)。 > > 注意:租戶編碼:**租戶編碼是Linux上的使用者,唯一,不能重複** ### 11.2 Hello 警告組 ![](https://img2020.cnblogs.com/blog/1235870/202007/1235870-20200728202133287-336549635.png) ![](https://img2020.cnblogs.com/blog/1235870/202007/1235870-20200728202546630-1131834112.png) > 警告組的意思是,在我們出現錯誤或者執行完成的時候會給那些人傳送訊息,把這些人放在一起,方便組播,因為公司都是分部門,分小組的嘛。 > > 這裡我們新增警告組,將開發人dev2020新增進去 ### 11.3 Hello Worker分組 ![](https://img2020.cnblogs.com/blog/1235870/202007/1235870-20200728204009150-292372942.png) > 因為這裡部署的單臺worker,所以不能進行編輯,解釋一下,我們部署多臺worker的時候,肯定會有想手工指定執行機器的需求,那麼這個時候我們的worker就體現了價值,他將我們的多臺worker進行分組,這樣我們就能手工指定任務的執行節點。 ![](https://img2020.cnblogs.com/blog/1235870/202007/1235870-20200728204203560-84900698.png) > 點選“建立Worker分組”按鈕,建立Worker分組。worker分組內有多個ip地址(**不能寫別名**),以**英文逗號**分隔。 ### 11.4 Hello 列隊 - 佇列是在執行spark、mapreduce等程式,需要用到“佇列”引數時使用的。 ![](https://img2020.cnblogs.com/blog/1235870/202007/1235870-20200728204642907-1124858667.png) ### 11.5 Hello 令牌 > 由於後端介面有登入檢查,令牌管理提供了一種可以通過呼叫介面的方式對系統進行各種操作。 > 管理員進入安全中心->令牌管理頁面,點選“建立令牌”按鈕,選擇失效時間與使用者,點選"生成令牌"按鈕,點選"提交"按鈕,則選擇使用者的token建立成功。 ![](https://img2020.cnblogs.com/blog/1235870/202007/1235870-20200728212022694-1272090526.png) > 普通使用者登入後,點選使用者名稱下拉框中的使用者資訊,進入令牌管理頁面,選擇失效時間,點選"生成令牌"按鈕,點選"提交"按鈕,則該使用者建立token成功。 ![](https://img2020.cnblogs.com/blog/1235870/202007/1235870-20200728212058828-1234042928.png) - 呼叫示例: ```java /** * test token */ public void doPOSTParam()throws Exception{ // create HttpClient CloseableHttpClient httpclient = HttpClients.createDefault(); // create http post request HttpPost httpPost = new HttpPost("http://127.0.0.1:12345/escheduler/projects/create"); httpPost.setHeader("token", "123"); // set parameters List parameters = new ArrayList(); parameters.add(new BasicNameValuePair("projectName", "qzw")); parameters.add(new BasicNameValuePair("desc", "qzw")); UrlEncodedFormEntity formEntity = new UrlEncodedFormEntity(parameters); httpPost.setEntity(formEntity); CloseableHttpResponse response = null; try { // execute response = httpclient.execute(httpPost); // response status code 200 if (response.getStatusLine().getStatusCode() == 200) { String content = EntityUtils.toString(response.getEntity(), "UTF-8"); System.out.println(content); } } finally { if (response != null) { response.close(); } httpclient.close(); } } ``` ### 11.6 Hello 許可權 > 授予許可權包括專案許可權,資源許可權,資料來源許可權,UDF函式許可權。 > 管理員可以對普通使用者進行非其建立的專案、資源、資料來源和UDF函式進行授權。因為專案、資源、資料來源和UDF函式授權方式都是一樣的,所以以專案授權為例介紹。 > > 注意:對於使用者自己建立的專案,該使用者擁有所有的許可權。則專案列表和已選專案列表中不會顯示。 - 管理員進入安全中心->使用者管理頁面,點選需授權使用者的“授權”按鈕,如下圖所示: ![](https://img2020.cnblogs.com/blog/1235870/202007/1235870-20200728212755909-1321765171.png) - 選擇專案,進行專案授權。 ![](https://img2020.cnblogs.com/blog/1235870/202007/1235870-20200728213112826-712164790.png) - 資源、資料來源、UDF函式授權同項目授權。 ### 11.7 Hello 首頁 > 首頁包含使用者所有專案的任務狀態統計、流程狀態統計、工作流定義統計。 ![](https://img2020.cnblogs.com/blog/1235870/202007/1235870-20200728212523300-217794662.png) ![](https://img2020.cnblogs.com/blog/1235870/202007/1235870-20200728212643949-1241621427.png) ### 11.8 Hello 監控 - master監控 ![](https://img2020.cnblogs.com/blog/1235870/202007/1235870-20200728213228963-464555562.png) - worker監控 ![](https://img2020.cnblogs.com/blog/1235870/202007/1235870-20200728213234376-243906220.png) - Zookeeper監控 ![](https://img2020.cnblogs.com/blog/1235870/202007/1235870-20200728213302545-592100858.png) - DB監控 ![](https://img2020.cnblogs.com/blog/1235870/202007/1235870-20200728213308887-2065669704.png) - 統計管理 ![](https://img2020.cnblogs.com/blog/1235870/202007/1235870-20200728213315273-306326677.png) >- 待執行命令數:統計t_ds_command表的資料 >- 執行失敗的命令數:統計t_ds_error_command表的資料 >- 待執行任務數:統計Zookeeper中task_queue的資料 >- 待殺死任務數:統計Zookeeper中task_kill的資料 ### 11.9 Hello 資源中心 #### 11.9.1 檔案管理 > 是對各種資原始檔的管理,包括建立基本的txt/log/sh/conf/py/java等檔案、上傳jar包等各種型別檔案,可進行編輯、重新命名、下載、刪除等操作。 ![](https://img2020.cnblogs.com/blog/1235870/202007/1235870-20200728220923138-1916284179.png) ![](https://img2020.cnblogs.com/blog/1235870/202007/1235870-20200728220905543-1782003806.png) - 建立檔案 > 檔案格式支援以下幾種型別:txt、log、sh、conf、cfg、py、java、sql、xml、hql、properties ![](https://img2020.cnblogs.com/blog/1235870/202007/1235870-20200728221055864-1471005685.png) - 檢視檔案 ![](https://img2020.cnblogs.com/blog/1235870/202007/1235870-20200728221135675-1294497947.png) > 還可以對檔案進行上傳和下載哦! - 刪除 > 檔案列表->點選"刪除"按鈕,刪除指定檔案 #### 11.9.2 UDF管理 - 資源管理 > 資源管理和檔案管理功能類似,不同之處是資源管理是上傳的UDF函式,檔案管理上傳的是使用者程式,指令碼及配置檔案 操作功能:重新命名、下載、刪除。 - 上傳udf資源 > 和上傳檔案相同。 - 函式管理 - 建立udf函式 > 點選“建立UDF函式”,輸入udf函式引數,選擇udf資源,點選“提交”,建立udf函式。 > 目前只支援HIVE的臨時UDF函式 - UDF函式名稱:輸入UDF函式時的名稱 - 包名類名:輸入UDF函式的全路徑 - UDF資源:設定建立的UDF對應的資原始檔 ![](https://img2020.cnblogs.com/blog/1235870/202007/1235870-20200728221439914-952062941.png) ![](https://img2020.cnblogs.com/blog/1235870/202007/1235870-20200728221640122-1530185146.png) ### 11.10 Hello 資料來源中心 > 資料來源中心支援MySQL、POSTGRESQL、HIVE/IMPALA、SPARK、CLICKHOUSE、ORACLE、SQLSERVER等資料來源 #### 11.10.1 建立/編輯Mysq資料來源 1. 點選“資料來源中心->建立資料來源”,根據需求建立不同型別的資料來源。 2. 資料來源:選擇MYSQL 3. 資料來源名稱:輸入資料來源的名稱 4. 描述:輸入資料來源的描述 5. IP主機名:輸入連線MySQL的IP 6. 埠:輸入連線MySQL的埠 7. 使用者名稱:設定連線MySQL的使用者名稱 8. 密碼:設定連線MySQL的密碼 9. 資料庫名:輸入連線MySQL的資料庫名稱 10. Jdbc連線引數:用於MySQL連線的引數設定,以JSON形式填寫 ![](https://img2020.cnblogs.com/blog/1235870/202007/1235870-20200728221903221-774173018.png) #### 11.10.2 建立/編輯Hive資料來源 1. 資料來源:選擇HIVE 2. 資料來源名稱:輸入資料來源的名稱 3. 描述:輸入資料來源的描述 4. IP/主機名:輸入連線HIVE的IP 5. 埠:輸入連線HIVE的埠 6. 使用者名稱:設定連線HIVE的使用者名稱 7. 密碼:設定連線HIVE的密碼 8. 資料庫名:輸入連線HIVE的資料庫名稱 9. Jdbc連線引數:用於HIVE連線的引數設定,以JSON形式填寫 ![](https://img2020.cnblogs.com/blog/1235870/202007/1235870-20200728221918787-413014693.png) #### 11.10.3 建立/編輯POSTGRESQL資料來源 1. 資料來源:選擇POSTGRESQL 2. 資料來源名稱:輸入資料來源的名稱 3. 描述:輸入資料來源的描述 4. IP/主機名:輸入連線POSTGRESQL的IP 5. 埠:輸入連線POSTGRESQL的埠 6. 使用者名稱:設定連線POSTGRESQL的使用者名稱 7. 密碼:設定連線POSTGRESQL的密碼 8. 資料庫名:輸入連線POSTGRESQL的資料庫名稱 9. Jdbc連線引數:用於POSTGRESQL連線的引數設定,以JSON形式填寫 ![](https://img2020.cnblogs.com/blog/1235870/202007/1235870-20200728222407725-625853792.png) #### 11.10.4 建立/編輯Spark資料來源 1. 資料來源:選擇Spark 2. 資料來源名稱:輸入資料來源的名稱 3. 描述:輸入資料來源的描述 4. IP/主機名:輸入連線Spark的IP 5. 埠:輸入連線Spark的埠 6. 使用者名稱:設定連線Spark的使用者名稱 7. 密碼:設定連線Spark的密碼 8. 資料庫名:輸入連線Spark的資料庫名稱 9. Jdbc連線引數:用於Spark連線的引數設定,以JSON形式填寫 ![](https://img2020.cnblogs.com/blog/1235870/202007/1235870-20200728222424659-636158374.png) > 注意:如果開啟了**kerberos**,則需要填寫 **Principal** ![](https://img2020.cnblogs.com/blog/1235870/202007/1235870-20200728222514241-1679315721.png) ### 11.11 Hello 專案管理 > 要編輯我們的任務流,首先要有專案,使用我們的開發賬號dev2020登入 - 點選"專案管理"進入專案管理頁面,點選“建立專案”按鈕,輸入專案名稱,專案描述,點選“提交”,建立新的專案。 ![](https://img2020.cnblogs.com/blog/1235870/202007/1235870-20200728222705880-18504182.png) - 專案首頁 > 在專案管理頁面點選專案名稱連結,進入專案首頁,如下圖所示,專案首頁包含該專案的任務狀態統計、流程狀態統計、工作流定義統計。 > > - 任務狀態統計:在指定時間範圍內,統計任務例項中狀態為提交成功、正在執行、準備暫停、暫停、準備停止、停止、失敗、成功、需要容錯、kill、等待執行緒的個數 > - 流程狀態統計:在指定時間範圍內,統計工作流例項中狀態為提交成功、正在執行、準備暫停、暫停、準備停止、停止、失敗、成功、需要容錯、kill、等待執行緒的個數 > - 工作流定義統計:統計使用者建立的工作流定義及管理員授予該使用者的工作流定義 ![](https://img2020.cnblogs.com/blog/1235870/202007/1235870-20200728222742850-925027773.png) #### 11.11.1 建立工作流定義 > 點選專案管理->工作流->工作流定義,進入工作流定義頁面,點選“建立工作流”按鈕,進入**工作流DAG編輯**頁面,如下圖所示: ![](https://img2020.cnblogs.com/blog/1235870/202007/1235870-20200728222919922-547332346.png) - 工具欄中拖拽![](https://img2020.cnblogs.com/blog/1235870/202007/1235870-20200728222942252-691919930.png)到畫板中,新增一個Shell任務,如下圖所示: ![](https://img2020.cnblogs.com/blog/1235870/202007/1235870-20200728223005282-1456294023.png) - **新增shell任務的引數設定:** 1. 填寫“節點名稱”,“描述”,“指令碼”欄位; 2. “執行標誌”勾選“正常”,若勾選“禁止執行”,執行工作流不會執行該任務; 3. 選擇“任務優先順序”:當worker執行緒數不足時,級別高的任務在執行佇列中會優先執行,相同優先順序的任務按照先進先出的順序執行; 4. 超時告警(非必選):勾選超時告警、超時失敗,填寫“超時時長”,當任務執行時間超過**超時時長**,會發送告警郵件並且任務超時失敗; 5. 資源(非必選)。資原始檔是資源中心->檔案管理頁面建立或上傳的檔案,如檔名為`test.sh`,指令碼中呼叫資源命令為`sh test.sh`; 6. 自定義引數(非必填),參考[https://dolphinscheduler.apache.org/zh-cn/docs/1.3.1/user_doc/system-manual.html#UserDefinedParameters](https://dolphinscheduler.apache.org/zh-cn/docs/1.3.1/user_doc/system-manual.html#UserDefinedParameters) 7. 點選"確認新增"按鈕,儲存任務設定。 - **增加任務執行的先後順序:** 點選右上角圖示![](https://img2020.cnblogs.com/blog/1235870/202007/1235870-20200728223135769-967867524.png)連線任務;如下圖所示,任務2和任務3並行執行,當任務1執行完,任務2、3會同時執行。 ![](https://img2020.cnblogs.com/blog/1235870/202007/1235870-20200728223154777-1424795693.png) - **刪除依賴關係:** 點選右上角"箭頭"圖示![](https://img2020.cnblogs.com/blog/1235870/202007/1235870-20200728223218418-569338013.png),選中連線線,點選右上角"刪除"圖示![](https://img2020.cnblogs.com/blog/1235870/202007/1235870-20200728223238156-719933918.png),刪除任務間的依賴關係。 ![](https://img2020.cnblogs.com/blog/1235870/202007/1235870-20200728223259276-963116323.png) - **儲存工作流定義:** 點選”儲存“按鈕,彈出"設定DAG圖名稱"彈框,如下圖所示,輸入工作流定義名稱,工作流定義描述,設定全域性引數(選填,參考[https://dolphinscheduler.apache.org/zh-cn/docs/1.3.1/user_doc/system-manual.html#UserDefinedParameters](https://dolphinscheduler.apache.org/zh-cn/docs/1.3.1/user_doc/system-manual.html#UserDefinedParameters)),點選"新增"按鈕,工作流定義建立成功。 ![](https://img2020.cnblogs.com/blog/1235870/202007/1235870-20200728223327652-278112172.png) - 其他型別任務,請參考 [https://dolphinscheduler.apache.org/zh-cn/docs/1.3.1/user_doc/system-manual.html#TaskParamers](https://dolphinscheduler.apache.org/zh-cn/docs/1.3.1/user_doc/system-manual.html#TaskParamers)。 #### 11.11.2 工作流定義操作功能 > 點選專案管理->工作流->工作流定義,進入工作流定義頁面,如下圖所示: ![](https://img2020.cnblogs.com/blog/1235870/202007/1235870-20200728223500284-1528980624.png) - 工作流定義列表的操作功能如下: - **編輯:** 只能編輯"下線"的工作流定義。工作流DAG編輯同建立工作流定義。 - **上線:** 工作流狀態為"下線"時,上線工作流,只有"上線"狀態的工作流能執行,但不能編輯。 - **下線:** 工作流狀態為"上線"時,下線工作流,下線狀態的工作流可以編輯,但不能執行。 - **執行:** 只有上線的工作流能執行。 - **定時:** 只有上線的工作流能設定定時,系統自動定時排程工作流執行。建立定時後的狀態為"下線",需在定時管理頁面上線定時才生效。 - **定時管理:** 定時管理頁面可編輯、上線/下線、刪除定時。 - **刪除:** 刪除工作流定義。 - **下載:** 下載工作流定義到本地。 - **樹形圖:** 以樹形結構展示任務節點的型別及任務狀態,如下圖所示: ![](https://img2020.cnblogs.com/blog/1235870/202007/1235870-20200728223622956-154101773.png) #### 11.11.3 執行工作流 > 點選專案管理->工作流->工作流定義,進入工作流定義頁面,如下圖所示,點選"上線"按鈕![](https://img2020.cnblogs.com/blog/1235870/202007/1235870-20200728223703377-1968117746.png),上線工作流。 ![](https://img2020.cnblogs.com/blog/1235870/202007/1235870-20200728223719197-1498193286.png) > 點選”執行“按鈕,彈出啟動引數設定彈框,如下圖所示,設定啟動引數,點選彈框中的"執行"按鈕,工作流開始執行,工作流例項頁面生成一條工作流例項。 ![](https://img2020.cnblogs.com/blog/1235870/202007/1235870-20200728223749084-605313416.png) - 執行引數說明 ```java * 失敗策略:當某一個任務節點執行失敗時,其他並行的任務節點需要執行的策略。”繼續“表示:某一任務失敗後,其他任務節點正常執行;”結束“表示:終止所有正在執行的任務,並終止整個流程。 * 通知策略:當流程結束,根據流程狀態傳送流程執行資訊通知郵件,包含任何狀態都不發,成功發,失敗發,成功或失敗都發。 * 流程優先順序:流程執行的優先順序,分五個等級:最高(HIGHEST),高(HIGH),中(MEDIUM),低(LOW),最低(LOWEST)。當master執行緒數不足時,級別高的流程在執行佇列中會優先執行,相同優先順序的流程按照先進先出的順序執行。 * worker分組:該流程只能在指定的worker機器組裡執行。預設是Default,可以在任一worker上執行。 * 通知組:選擇通知策略||超時報警||發生容錯時,會發送流程資訊或郵件到通知組裡的所有成員。 * 收件人:選擇通知策略||超時報警||發生容錯時,會發送流程資訊或告警郵件到收件人列表。 * 抄送人:選擇通知策略||超時報警||發生容錯時,會抄送流程資訊或告警郵件到抄送人列表。 * 補數:包括序列補數、並行補數2種模式。序列補數:指定時間範圍內,從開始日期至結束日期依次執行補數,只生成一條流程例項;並行補數:指定時間範圍內,多天同時進行補數,生成N條流程例項。 ``` - 補數: 執行指定日期的工作流定義,可以選擇補數時間範圍(目前只支援針對連續的天進行補數),比如需要補5月1號到5月10號的資料,如下圖所示: ![](https://img2020.cnblogs.com/blog/1235870/202007/1235870-20200728223843067-1345726445.png) > 序列模式:補數從5月1號到5月10號依次執行,流程例項頁面生成一條流程例項; > 並行模式:同時執行5月1號到5月10號的任務,流程例項頁面生成十條流程例項。 #### 11.11.4 工作流定時 建立定時:點選專案管理->工作流->工作流定義,進入工作流定義頁面,上線工作流,點選"定時"按鈕![](https://img2020.cnblogs.com/blog/1235870/202007/1235870-20200728223939315-998720596.png),彈出定時引數設定彈框,如下圖所示: ![](https://img2020.cnblogs.com/blog/1235870/202007/1235870-20200728223948332-1211590701.png) - 選擇起止時間。在起止時間範圍內,定時執行工作流;不在起止時間範圍內,不再產生定時工作流例項。 - 新增一個每天凌晨5點執行一次的定時,如下圖所示: ![](https://img2020.cnblogs.com/blog/1235870/202007/1235870-20200728224005363-959342133.png) - 失敗策略、通知策略、流程優先順序、Worker分組、通知組、收件人、抄送人同[https://dolphinscheduler.apache.org/zh-cn/docs/1.3.1/user_doc/system-manual.html#runParamers](https://dolphinscheduler.apache.org/zh-cn/docs/1.3.1/user_doc/system-manual.html#runParamers)。 - 點選"建立"按鈕,建立定時成功,此時定時狀態為"**下線**",定時需**上線**才生效。 - 定時上線:點選"定時管理"按鈕![](https://img2020.cnblogs.com/blog/1235870/202007/1235870-20200728224042261-882429783.png),進入定時管理頁面,點選"上線"按鈕,定時狀態變為"上線",如下圖所示,工作流定時生效。 ![](https://img2020.cnblogs.com/blog/1235870/202007/1235870-20200728224055723-197734733.png) #### 11.11.5 匯入工作流 > 點選專案管理->工作流->工作流定義,進入工作流定義頁面,點選"匯入工作流"按鈕,匯入本地工作流檔案,工作流定義列表顯示匯入的工作流,狀態為下線。 #### 11.11.6 檢視工作流例項 - 點選專案管理->工作流->工作流例項,進入工作流例項頁面,如下圖所示: ![](https://img2020.cnblogs.com/blog/1235870/202007/1235870-20200728224205047-944239978.png) - 點選工作流名稱,進入DAG檢視頁面,檢視任務執行狀態,如下圖所示。 ![](https://img2020.cnblogs.com/blog/1235870/202007/1235870-20200728224221161-1460223981.png) #### 11.11.7 檢視任務日誌 - 進入工作流例項頁面,點選工作流名稱,進入DAG檢視頁面,雙擊任務節點,如下圖所示: ![](https://img2020.cnblogs.com/blog/1235870/202007/1235870-20200728224257117-1248277955.png) - 點選"檢視日誌",彈出日誌彈框,如下圖所示,任務例項頁面也可檢視任務日誌,參考[https://dolphinscheduler.apache.org/zh-cn/docs/1.3.1/user_doc/system-manual.html#taskLog](https://dolphinscheduler.apache.org/zh-cn/docs/1.3.1/user_doc/system-manual.html#taskLog)。 ![](https://img2020.cnblogs.com/blog/1235870/202007/1235870-20200728224324258-758203500.png) #### 11.11.8 檢視任務歷史記錄 - 點選專案管理->工作流->工作流例項,進入工作流例項頁面,點選工作流名稱,進入工作流DAG頁面; - 雙擊任務節點,如下圖所示,點選"檢視歷史",跳轉到任務例項頁面,並展示該工作流例項執行的任務例項列表 ![](https://img2020.cnblogs.com/blog/1235870/202007/1235870-20200728224347032-1932239396.png) #### 11.11.9 檢視執行引數 - 點選專案管理->工作流->工作流例項,進入工作流例項頁面,點選工作流名稱,進入工作流DAG頁面; - 點選左上角圖示![](https://img2020.cnblogs.com/blog/1235870/202007/1235870-20200728224422829-870662375.png),檢視工作流例項的啟動引數;點選圖示![](https://img2020.cnblogs.com/blog/1235870/202007/1235870-20200728224440486-334462463.png)),檢視工作流例項的全域性引數和區域性引數,如下圖所示: ![](https://img2020.cnblogs.com/blog/1235870/202007/1235870-20200728224501252-773489578.png) #### 11.11.10 工作流例項操作功能 - 點選專案管理->工作流->工作流例項,進入工作流例項頁面,如下圖所示: ![](https://img2020.cnblogs.com/blog/1235870/202007/1235870-20200728224529072-1592642626.png) - **編輯:** 只能編輯已終止的流程。點選"編輯"按鈕或工作流例項名稱進入DAG編輯頁面,編輯後點擊"儲存"按鈕,彈出儲存DAG彈框,如下圖所示,在彈框中勾選"是否更新到工作流定義",儲存後則更新工作流定義;若不勾選,則不更新工作流定義。 ![](https://img2020.cnblogs.com/blog/1235870/202007/1235870-20200728224548644-1843123826.png) - **重跑:** 重新執行已經終止的流程。 - **恢復失敗:** 針對失敗的流程,可以執行恢復失敗操作,從失敗的節點開始執行。 - **停止:** 對正在執行的流程進行**停止**操作,後臺會先`kill`worker程序,再執行`kill -9`操作 - **暫停:** 對正在執行的流程進行**暫停**操作,系統狀態變為**等待執行**,會等待正在執行的任務結束,暫停下一個要執行的任務。 - **恢復暫停:** 對暫停的流程恢復,直接從**暫停的節點**開始執行 - **刪除:** 刪除工作流例項及工作流例項下的任務例項 - **甘特圖:** Gantt圖縱軸是某個工作流例項下的任務例項的拓撲排序,橫軸是任務例項的執行時間,如圖示: ![](https://img2020.cnblogs.com/blog/1235870/202007/1235870-20200728224616563-496271390.png) #### 11.11.11 任務例項 - 點選專案管理->工作流->任務例項,進入任務例項頁面,如下圖所示,點選工作流例項名稱,可跳轉到工作流例項DAG圖檢視任務狀態。 ![](https://img2020.cnblogs.com/blog/1235870/202007/1235870-20200728224649867-1375466520.png) - 檢視日誌:點選操作列中的“檢視日誌”按鈕,可以檢視任務執行的日誌情況。 ### 11.12 Hello 任務節點型別和引數設定 #### 11.12.1 Shell節點 > shell節點,在worker執行的時候,會生成一個臨時shell指令碼,使用租戶同名的linux使用者執行這個指令碼。 - 點選專案管理-專案名稱-工作流定義,點選"建立工作流"按鈕,進入DAG編輯頁面。 - 工具欄中拖動![](https://img2020.cnblogs.com/blog/1235870/202007/1235870-20200728225006754-1113658431.png)到畫板中,如下圖所示: ![](https://img2020.cnblogs.com/blog/1235870/202007/1235870-20200728225020151-925974639.png) - 節點名稱:一個工作流定義中的節點名稱是唯一的。 - 執行標誌:標識這個節點是否能正常排程,如果不需要執行,可以開啟禁止執行開關。 - 描述資訊:描述該節點的功能。 - 任務優先順序:worker執行緒數不足時,根據優先順序從高到低依次執行,優先順序一樣時根據先進先出原則執行。 - Worker分組:任務分配給worker組的機器機執行,選擇Default,會隨機選擇一臺worker機執行。 - 失敗重試次數:任務失敗重新提交的次數,支援下拉和手填。 - 失敗重試間隔:任務失敗重新提交任務的時間間隔,支援下拉和手填。 - 超時告警:勾選超時告警、超時失敗,當任務超過"超時時長"後,會發送告警郵件並且任務執行失敗. - 指令碼:使用者開發的SHELL程式。 - 資源:是指指令碼中需要呼叫的資原始檔列表,資源中心-檔案管理上傳或建立的檔案。 - 自定義引數:是SHELL區域性的使用者自定義引數,會替換指令碼中以${變數}的內容。 #### 11.12.2 子流程節點 - 子流程節點,就是把外部的某個工作流定義當做一個任務節點去執行。 > 拖動工具欄中的![](https://img2020.cnblogs.com/blog/1235870/202007/1235870-20200728225040220-854934805.png)任務節點到畫板中,如下圖所示: ![](https://img2020.cnblogs.com/blog/1235870/202007/1235870-20200728225105594-990609308.png) - 節點名稱:一個工作流定義中的節點名稱是唯一的 - 執行標誌:標識這個節點是否能正常排程 - 描述資訊:描述該節點的功能 - 超時告警:勾選超時告警、超時失敗,當任務超過"超時時長"後,會發送告警郵件並且任務執行失敗. - 子節點:是選擇子流程的工作流定義,右上角進入該子節點可以跳轉到所選子流程的工作流定義 #### 11.12.3 依賴(DEPENDENT)節點 - 依賴節點,就是**依賴檢查節點**。比如A流程依賴昨天的B流程執行成功,依賴節點會去檢查B流程在昨天是否有執行成功的例項。 > 拖動工具欄中的任務節點![](https://img2020.cnblogs.com/blog/1235870/202007/1235870-20200728225130262-1748699607.png)到畫板中,如下圖所示: ![](https://img2020.cnblogs.com/blog/1235870/202007/1235870-20200728225141337-320846606.png) > 依賴節點提供了邏輯判斷功能,比如檢查昨天的B流程是否成功,或者C流程是否執行成功。 ![](https://img2020.cnblogs.com/blog/1235870/202007/1235870-20200728225156047-1382794150.png) > 例如,A流程為週報任務,B、C流程為天任務,A任務需要B、C任務在上週的每一天都執行成功,如圖示: ![](https://img2020.cnblogs.com/blog/1235870/202007/1235870-20200728225210370-1438548188.png) > 假如,週報A同時還需要自身在上週二執行成功: ![](https://img2020.cnblogs.com/blog/1235870/202007/1235870-20200728225226275-1607086862.png) #### 11.12.4 儲存過程節點 - 根據選擇的資料來源,執行儲存過程。 > 拖動工具欄中的![](https://img2020.cnblogs.com/blog/1235870/202007/1235870-20200728225236758-69914841.png)任務節點到畫板中,如下圖所示: ![](https://img2020.cnblogs.com/blog/1235870/202007/1235870-20200728225249855-1201123992.png) - 資料來源:儲存過程的資料來源型別支援MySQL和POSTGRESQL兩種,選擇對應的資料來源 - 方法:是儲存過程的方法名稱 - 自定義引數:儲存過程的自定義引數型別支援IN、OUT兩種,資料型別支援VARCHAR、INTEGER、LONG、FLOAT、DOUBLE、DATE、TIME、TIMESTAMP、BOOLEAN九種資料型別 #### 11.12.5 SQL節點 - 拖動工具欄中的![](https://img2020.cnblogs.com/blog/1235870/202007/1235870-20200728225302596-2083712318.png)任務節點到畫板中 - 非查詢SQL功能:編輯非查詢SQL任務資訊,sql型別選擇非查詢,如下圖所示: ![](https://img2020.cnblogs.com/blog/1235870/202007/1235870-20200728225320805-1622456420.png) - 查詢SQL功能:編輯查詢SQL任務資訊,sql型別選擇查詢,選擇表格或附件形式傳送郵件到指定的收件人,如下圖所示。 ![](https://img2020.cnblogs.com/blog/1235870/202007/1235870-20200728225340372-2039696357.png) - 資料來源:選擇對應的資料來源 - sql型別:支援查詢和非查詢兩種,查詢是select型別的查詢,是有結果集返回的,可以指定郵件通知為表格、附件或表格附件三種模板。非查詢是沒有結果集返回的,是針對update、delete、insert三種類型的操作。 - sql引數:輸入引數格式為key1=value1;key2=value2… - sql語句:SQL語句 - UDF函式:對於HIVE型別的資料來源,可以引用資源中心中建立的UDF函式,其他型別的資料來源暫不支援UDF函式。 - 自定義引數:SQL任務型別,而儲存過程是自定義引數順序的給方法設定值自定義引數型別和資料型別同儲存過程任務型別一樣。區別在於SQL任務型別自定義引數會替換sql語句中${變數}。 - 前置sql:前置sql在sql語句之前執行。 - 後置sql:後置sql在sql語句之後執行。 #### 11.12.6 SPARK節點 - 通過SPARK節點,可以直接直接執行SPARK程式,對於spark節點,worker會使用`spark-submit`方式提交任務 > 拖動工具欄中的![](https://img2020.cnblogs.com/blog/1235870/202007/1235870-20200728225351338-1055424371.png)任務節點到畫板中,如下圖所示: ![](https://img2020.cnblogs.com/blog/1235870/202007/1235870-20200728225405964-1760978263.png) - 程式型別:支援JAVA、Scala和Python三種語言 - 主函式的class:是Spark程式的入口Main Class的全路徑 - 主jar包:是Spark的jar包 - 部署方式:支援yarn-cluster、yarn-client和local三種模式 - Driver核心數:可以設定Driver核心數及記憶體數 - Executor數量:可以設定Executor數量、Executor記憶體數和Executor核心數 - 命令列引數:是設定Spark程式的輸入引數,支援自定義引數變數的替換。 - 其他引數:支援 --jars、--files、--archives、--conf格式 - 資源:如果其他引數中引用了資原始檔,需要在資源中選擇指定 - 自定義引數:是MR區域性的使用者自定義引數,會替換指令碼中以${變數}的內容 注意:JAVA和Scala只是用來標識,沒有區別,如果是Python開發的Spark則沒有主函式的class,其他都是一樣 #### 11.12.7 MapReduce(MR)節點 - 使用MR節點,可以直接執行MR程式。對於mr節點,worker會使用`hadoop jar`方式提交任務 > 拖動工具欄中的![](https://img2020.cnblogs.com/blog/1235870/202007/1235870-20200728225421063-582506526.png)任務節點到畫板中,如下圖所示: 1. JAVA程式 ![](https://img2020.cnblogs.com/blog/1235870/202007/1235870-20200728225435107-1221574298.png) - 主函式的class:是MR程式的入口Main Class的全路徑 - 程式型別:選擇JAVA語言 - 主jar包:是MR的jar包 - 命令列引數:是設定MR程式的輸入引數,支援自定義引數變數的替換 - 其他引數:支援 –D、-files、-libjars、-archives格式 - 資源: 如果其他引數中引用了資原始檔,需要在資源中選擇指定 - 自定義引數:是MR區域性的使用者自定義引數,會替換指令碼中以${變數}的內容 1. Python程式 ![](https://img2020.cnblogs.com/blog/1235870/202007/1235870-20200728225448097-690404099.png) - 程式型別:選擇Python語言 - 主jar包:是執行MR的Python jar包 - 其他引數:支援 –D、-mapper、-reducer、-input -output格式,這裡可以設定使用者自定義引數的輸入,比如: - -mapper "[mapper.py](http://mapper.py/) 1" -file [mapper.py](http://mapper.py/) -reducer [reducer.py](http://reducer.py/) -file [reducer.py](http://reducer.py/) –input /journey/words.txt -output /journey/out/mr/${currentTimeMillis} - 其中 -mapper 後的 [mapper.py](http://mapper.py/) 1是兩個引數,[第一個引數是mapper.py](http://xn--mapper-9m7iglm85bf76bbzbb87i.py/),第二個引數是1 - 資源: 如果其他引數中引用了資原始檔,需要在資源中選擇指定 - 自定義引數:是MR區域性的使用者自定義引數,會替換指令碼中以${變數}的內容 #### 11.12.8 Python節點 - 使用python節點,可以直接執行python指令碼,對於python節點,worker會使用`python **`方式提交任務。 > 拖動工具欄中的![](https://img2020.cnblogs.com/blog/1235870/202007/1235870-20200728225630489-846896097.png)任務節點到畫板中,如下圖所示: ![](https://img2020.cnblogs.com/blog/1235870/202007/1235870-20200728225643188-2075635016.png) - 指令碼:使用者開發的Python程式 - 資源:是指指令碼中需要呼叫的資原始檔列表 - 自定義引數:是Python區域性的使用者自定義引數,會替換指令碼中以${變數}的內容 #### 11.12.9 Flink節點 - 拖動工具欄中的![](https://img2020.cnblogs.com/blog/1235870/202007/1235870-20200728225653804-506826017.png)任務節點到畫板中,如下圖所示: ![](https://img2020.cnblogs.com/blog/1235870/202007/1235870-20200728225703677-227447191.png) - 程式型別:支援JAVA、Scala和Python三種語言 - 主函式的class:是Flink程式的入口Main Class的全路徑 - 主jar包:是Flink的jar包 - 部署方式:支援cluster、local三種模式 - slot數量:可以設定slot數 - taskManage數量:可以設定taskManage數 - jobManager記憶體數:可以設定jobManager記憶體數 - taskManager記憶體數:可以設定taskManager記憶體數 - 命令列引數:是設定Spark程式的輸入引數,支援自定義引數變數的替換。 - 其他引數:支援 --jars、--files、--archives、--conf格式 - 資源:如果其他引數中引用了資原始檔,需要在資源中選擇指定 - 自定義引數:是Flink區域性的使用者自定義引數,會替換指令碼中以${變數}的內容 注意:JAVA和Scala只是用來標識,沒有區別,如果是Python開發的Flink則沒有主函式的class,其他都是一樣 #### 11.12.10 http節點 - 拖動工具欄中的任務節點![](https://img2020.cnblogs.com/blog/1235870/202007/1235870-20200728225735746-1863198842.png)到畫板中,如下圖所示: ![](https://img2020.cnblogs.com/blog/1235870/202007/1235870-20200728225746169-747580385.png) - 節點名稱:一個工作流定義中的節點名稱是唯一的。 - 執行標誌:標識這個節點是否能正常排程,如果不需要執行,可以開啟禁止執行開關。 - 描述資訊:描述該節點的功能。 - 任務優先順序:worker執行緒數不足時,根據優先順序從高到低依次執行,優先順序一樣時根據先進先出原則執行。 - Worker分組:任務分配給worker組的機器機執行,選擇Default,會隨機選擇一臺worker機執行。 - 失敗重試次數:任務失敗重新提交的次數,支援下拉和手填。 - 失敗重試間隔:任務失敗重新提交任務的時間間隔,支援下拉和手填。 - 超時告警:勾選超時告警、超時失敗,當任務超過"超時時長"後,會發送告警郵件並且任務執行失敗. - 請求地址:http請求URL。 - 請求型別:支援GET、POSt、HEAD、PUT、DELETE。 - 請求引數:支援Parameter、Body、Headers。 - 校驗條件:支援預設響應碼、自定義響應碼、內容包含、內容不包含。 - 校驗內容:當校驗條件選擇自定義響應碼、內容包含、內容不包含時,需填寫校驗內容。 - 自定義引數:是http區域性的使用者自定義引數,會替換指令碼中以${變數}的內容。 #### 11.12.11 DATAX節點 - 拖動工具欄中的![](https://img2020.cnblogs.com/blog/1235870/202007/1235870-20200728225800452-1128868583.png)任務節點到畫板中 ![](https://img2020.cnblogs.com/blog/1235870/202007/1235870-20200728225813060-1599751092.png) - 自定義模板:開啟自定義模板開關時,可以自定義datax節點的json配置檔案內容(適用於控制元件配置不滿足需求時) - 資料來源:選擇抽取資料的資料來源 - sql語句:目標庫抽取資料的sql語句,節點執行時自動解析sql查詢列名,對映為目標表同步列名,源表和目標表列名不一致時,可以通過列別名(as)轉換 - 目標庫:選擇資料同步的目標庫 - 目標表:資料同步的目標表名 - 前置sql:前置sql在sql語句之前執行(目標庫執行)。 - 後置sql:後置sql在sql語句之後執行(目標庫執行)。 - json:datax同步的json配置檔案 - 自定義引數:SQL任務型別,而儲存過程是自定義引數順序的給方法設定值自定義引數型別和資料型別同儲存過程任務型別一樣。區別在於SQL任務型別自定義引數會替換sql語句中${變數}。 ### 11.13 Hello 引數 #### 11.13.1 系統引數 | 變數 | 含義 | | --------------------- | ------------------------------------------------------------ | | ${system.biz.date} | 日常排程例項定時的定時時間前一天,格式為 yyyyMMdd,補資料時,該日期 +1 | | ${system.biz.curdate} | 日常排程例項定時的定時時間,格式為 yyyyMMdd,補資料時,該日期 +1 | | ${system.datetime} | 日常排程例項定時的定時時間,格式為 yyyyMMddHHmmss,補資料時,該