使用 DolphinScheduler 調度 Kylin 構建

Apache Kylin 上游通常有複雜的數據 ETL 過程,如 Hive 入庫、數據清洗等;下游有報表刷新,郵件分發等。集成 Apache DolphinScheduler 後,Kylin 可以方便地將大數據平臺各組件串聯起來,讓各個任務通過 DAG 統一調度。

 

 

01 背景

Apache Kylin 是一個支持海量大數據的在線分析引擎,需要離線或流式地從 Apache Hive、Apache Kafka 加載數據。通常當上遊數據準備好以後,用戶需要使用 Kylin 的 Web 界面或 API 觸發以生成數據加載的任務。爲了讓整個工作流自動化起來,通常要結合一些任務調度平臺,如 Oozie,Linux crontab 等。本文將介紹如何使用 Apache DolphinScheduler 這個新的開源平臺跟 Kylin 進行集成完成數據構建。

 

 

02 什麼是 DolphinScheduler

Apache DolphinScheduler(incubating)(簡稱 DS) 是一個 Apache 孵化器項目,是由國內企業易觀開源的大數據項目,是一個面向大數據應用的分佈式工作流任務調度系統,之前叫 EasyScheduler。目前,DS 在國內已經有一定規模的用戶基礎,包括美團 、平安、雪球等。(官網:https://dolphinscheduler.apache.org/)

這裏我們引用一下 DS 剛開源時的介紹 [1]:相信做過數據處理的夥伴們對開源的調度系統如 Oozie、Azkaban、Airflow 應該都不陌生,在使用這些調度系統中可能會有這樣的體驗:比如配置工作流任務不能可視化、任務的運行狀態不能實時在線查看、 任務運行時不能暫停、不能支持參數傳遞、不能補數、不能多租戶使用、調度系統不高可用等等問題所煩擾過。Easy Scheduler 正是在這種背景下應運而生,其目標就是爲使調度更加 easy,更可以從其中文名“易調度”看出我們的初衷。

下圖是一個跟 Azkaban、Airflow 的多方面對比:

 

從這個圖上可以看出,DS 設計之初就考慮了高可用、多租戶、可視化等高級功能,也支持擴展任務類型等,相比於其它工具來說,更適合企業內的複雜場景,可視化的操作界面也非常適合作爲平臺交給各部門自助使用(注:Airflow 目前也有多租戶的支持)。

 

 

03 DS 的安裝

爲了驗證 DS 的功能,我們決定先在一個單機上進行安裝。參考文檔後,發現它的安裝配置步驟稍多,於是先嚐試 Docker 安裝;可惜的是,它的 Dockerfile 跟當前代碼有一點不匹配,加上國內的網絡條件,Docker build 較慢屢次失敗,於是就放棄了,嘗試單機用二進制包安裝。

從官網 [2] 下載 1.2.0 版本的安裝包,分前端和後端兩個包;前端是一些靜態文件,不到 2MB;後端是主程序,較大 127MB;前後端需要分別安裝和配置。(據瞭解從 1.2.1 後,前後端將不再分離。)

參考前端安裝文檔 [3],將資源放到某個目錄,然後安裝和配置 Nginx,讓其 8888 端口的靜態資源從 DS 的前端目錄獲取,如果是 API 的調用,轉給後端服務 12345 端口;瞭解 Nginx 配置的話這塊不難。小注意一下,它的安裝腳本 install-dolphinscheduler-ui.sh 會自動安裝 Nginx,如果你的系統中已經有 Nginx 服務的話,需要手動修改腳本以避免重新安裝。

後端的安裝相對比較複雜一些。首先你需要準備前置條件:

1.  Linux 服務器一臺,CentOS 6/7 或 Ubuntu;

2. 創建一個 DolphinScheduler 的 Linux 賬戶,有 sudo 權限,且開啓免密碼登錄;因爲要切換不同租戶,所以單機安裝也需要這個賬戶;

3. MySQL 5.5 或以上;起初我的 MySQL 版本較低(5.1),遇到 DB 初始化腳本失敗的問題,切換高版本 MySQL 後解決;(注:目前 MySQL 8 也不支持);

4.  Zookeeper,用於協調多個節點的狀態。

安裝的時候,需要仔細查看它的安裝文檔 [4];文檔中介紹了多節點的自動部署(爲有自動化一鍵安裝腳本點贊),但沒有介紹單節點的手動部署。我先用了它的自動部署腳本 install.sh,發現略有點複雜,在 DS 開發者的指導下改用手動部署。下面是一些注意事項:

1.  安裝和啓動服務的時候,切換到 dolphinscheduler用戶,建議不要用 root;使用 root 會讓一些新創建的目錄權主是 root,其它用戶不可訪問;

2.  安裝目錄不要放到 /root 等高權限目錄,最好放到 /opt 或 dolphinscheduler 的 home 目錄下;

3. MySQL JDBC 連接的配置,除了在 conf/application-dao.properties 以外,還需要在 conf/quartz.properties 也裏配置一下;

4. DS 的安裝目錄,需要顯式地在 conf/common/common.properties 裏配置一下,默認的安裝目錄 /data1_1T/dolphinscheduler 很可能不是你的安裝路徑;

5. 在 conf/config/run_config.conf 中配置各個節點的機器名;如果單機的話,配置本機的機器名;

6.  在 conf/zookeeper.properties 中配置 zk 地址;

7.  啓動使用 scripts/start-all.sh 和 scripts/stop-all.sh  來啓動和停止;如果不正常,檢查在 logs 目錄下的日誌;

8.  確保 Nginx 之前已經正常啓動。

 

 

04 DS 創建項目和進程

如果一切正常的話,瀏覽器打開  http://<host_name>:8888  就會出現 DS 的登錄界面,初始用戶/密碼爲:admin/dolphinscheduler123。

按照使用操作手冊,先創建項目,再創建一個租戶(tenant);租戶就是運行任務的 Linux 用戶。

 

創建租戶後,還要將 DS 的用戶跟租戶進行綁定,默認的 admin 用戶初始是沒有租戶的,所以需要進行綁定後纔可以執行任務,切記;

 

在這之後,你就可以進入項目,創建進程(process)了,DS 提供了可視化的界面,讓你可以圖形化拖拽地方式定義工作流 DAG:

 

這裏看到,DS 內置了若干種任務,例如 Spark, Flink,MapReduce,Shell, HTTP,Python 等,基本足夠普通調度需求了。

 

05 DS 觸發 Kylin 構建任務

我們的測試場景是 Kylin 的流式構建,需要每五分鐘觸發一次任務;Kylin 提供 Rest API 供外部觸發,但本身不提供調度器;通常用戶使用外部調度器或 Linux crontab 等服務來執行;使用 Linux crontab 最簡單,但是難以監控和修改,因此一些用戶會覺得麻煩。所以我們可以集成 DS 和 Kylin 做到一站式調度和監控。這裏觸發Kylin的構建任務,可以用 shell(如 curl)命令,也可以用 HTTP(post、put 等)的方式進行;這裏我選擇用 shell 因爲它非常簡單,在輸入之前,先確保這個 shell 命令是無誤的,手動在 Linux 命令行中執行驗證。

 

隨後對這個進程指定定時器(cron),語法基本上跟 Linux crontab 相同,用戶還可以指定生效範圍,通知策略等:

 

 

06 運行

之後分別上線這個定時器,以及這個進程;過一會兒我們就會在平臺上看到執行的任務:

 

執行的詳細日誌也是可以直接在線查看:

 

Kylin 這邊,我們看到任務被正常觸發執行:

 

繼續一天,兩邊平臺都很穩定,180 多次調度都成功執行:

 

 

07 總結

DolphinScheduler 是一款功能強大的大數據調度平臺。一次配置好任務流,後續就可以靠 DS 自動定時調度了,任務成功或出錯都可以得到郵件通知。如果任務較多,可以水平添加更多節點以擴展資源。Kylin 上游通常有複雜的數據 ETL 過程,如 Hive 入庫,數據清洗等;下游有報表刷新,郵件分發等;有了它可以方便地將大數據平臺各組件串聯起來,讓各個任務通過 DAG 統一調度。此次時間有限,沒有進一步測試 DS 的高級功能,後續如果社區基於插件機制開發出 Kylin 的觸發器,對用戶會更加簡單易用。

在此也非常感謝 DolphinScheduler 社區的代立冬等小夥伴們,非常熱心地幫忙回答和解決問題!

 

參考資料:

[1]http://www.clickhouse.com.cn/topic/5cab67b369c415035e68d526

[2]https://dolphinscheduler.apache.org/en-us/docs/release/download.html

[3]https://dolphinscheduler.apache.org/en-us/docs/1.2.0/user_doc/frontend-deployment.html

[4]https://dolphinscheduler.apache.org/en-us/docs/1.2.0/user_doc/backend-deployment.html

[5]https://dolphinscheduler.apache.org/en-us/docs/1.2.0/user_doc/quick-start.html

 

瞭解更多大數據資訊,點擊進入Kyligence官網

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章