Flink SQL 知其所以然之Flink SQL 開發企業級利器之 Dlink
本文轉載自微信公眾號「大數據羊說」,作者antigeneral了呀。轉載本文請聯系大數據羊說公眾號。
1.序篇
博主這個系列都是講 flink sql 相關的實踐的。
講到這個章節,其實挺多常用的 flink sql 語法及實戰案例都已經講了。
那么原理講了,得在自己家公司把 flink sql 這等好東西用起來啊。
搞大數據開發的同學基本都知道在 HUE 上面寫 hive sql 賊爽。那么有沒有寫 flink sql 的企業級的 web IDE 推薦的呢?
經過博主調研之后,發現有兩款非常優秀的利器:
- Apache Zeppelin
- Dlink
為啥先介紹 Dlink 呢?
因為博主和其開發人員混的很熟了,所以就先拿 Dlink 來嘗試嘗試。
廢話不多說,大家都想先看效果再看怎么部署。先看看最終效果。
2.Dlink 平臺效果
2.1.登錄
登錄
登錄賬號和密碼默認為 admin/admin。
2.2.flink sql 開發界面
具體功能如下圖所示:
sql 開發
注意:
預跑就是用于快速驗證 sql 是否是正確的,可以快速以 standalone 模式跑出來一個結果。肥腸地好用。想看到預跑的結果,在 sql 中不能寫 insert into xxx 這段。
可以看到是一個功能很齊全的 web IDE。
接下來我們看看怎么安裝部署 Dlink 0.4.0。
3.安裝部署篇
3.1.Dlink 的 github
源碼直接去 github 上看,已經開源了,鏈接如下。
https://github.com/DataLinkDC/dlink
3.2.部署環境準備
此部署示例是在 Mac OS 上進行,其他環境未測試。
環境 | 版本 | 備注 |
---|---|---|
jdk | 1.8.0_201 | web 基礎環境 |
mysql | 8.0+ | 存儲 web IDE 作業,集群等信息 |
nginx | 博主使用的是 1.21.1 | web 前端訪問 |
3.3.下載解壓 Dlink 安裝包
博主是基于 Dlink 0.4.0 版本部署安裝的。
第一步:下載 Dlink 0.4.0 安裝包。
我們打開 Dlink 0.4.0 release Notes 看看,鏈接如下:
https://github.com/DataLinkDC/dlink/releases/tag/0.4.0
打開上述 0.4.0 release Notes 鏈接后,點擊下圖中的 dlink-release-0.4.0.tar.gz 下載 Dlink 0.4.0 的安裝包。
Dlink 下載
第二步:解壓 Dlink 0.4.0 安裝包看看。
Dlink
解壓后得到的 dlink-release-0.4.0 目錄結構如下:
注意這里只是 Dlink 相關的包和文件,flink 任務的執行必然還會依賴到 flink 相關的包,這就需要你在 dlink-release-0.4.0 目錄下自己創建一個 plugins 文件夾。并且將 flink 相關的 jar 放在 plugins 文件夾下。即從 https://archive.apache.org/dist/flink/flink-1.13.2/ 下載對應的 flink tar.gz 到本地后,將解壓后的 flink jar 全部 copy 到 plugins 文件夾下即可。
config/ -- 配置文件
- config/ -- 配置文件
- |- application.yml
- lib/ -- 外部依賴及Connector
- |- dlink-client-1.13-0.4.0.jar
- |- dlink-connector-jdbc-1.13-0.4.0.jar
- |- dlink-function-0.4.0.jar
- |- dlink-metadata-clickhouse-0.4.0.jar
- |- dlink-metadata-mysql-0.4.0.jar
- |- dlink-metadata-oracle-0.4.0.jar
- |- dlink-metadata-postgresql-0.4.0.jar
- sql/
- |- dlink.sql -- Mysql初始化腳本
- auto.sh -- 啟動停止腳本
- dlink-admin-0.4.0.jar -- 程序包
3.4.配置 Dlink MySQL
既然是一個 web IDE,必然會存儲一些 web 應用相關的信息。這些信息就是存儲在 MySQL 中的。
第一步:創建 MySQL dlink 庫。
使用 MySQL-cli 連接 MySQL 創建庫。
- > mysql -u用戶名 -p密碼
- mysql> create database dlink;
- mysql> show databases;
Dlink MySQL
第二步:使用 Dlink 的 sql 腳本(dlink 目錄\sql 目錄\dlink.sql)初始化 Dlink 數據庫表信息,具體初始化命令行如下。
- > mysql -h localhost -u用戶名 -p密碼 -Ddlink < dlink.sql
- > mysql -u用戶名 -p密碼
- mysql> use dlink;
- mysql> show tables;
Dlink MySQL Table
第三步:Dlink 也是個 web 項目,用的是 SpringBoot 那一套東西,所以連接 MySQL 得需要進行 Spring 相關的配置。
所以需要去 dlink 目錄\config 目錄\application.yml 中修改 MySQL 相關的配置。由于博主是在本地部署。所以涉及到改動的只有用戶名和密碼,改完之后保存。
application.yml
3.5.啟動 web 后端
Dlink 是前后端分離的,剛剛我們配置了 MySQL 相關的環境,則可以直接啟動后端了,后端占用的端口是 8888,啟動命令如下。
- sh auto.sh start
在 Mac OS 下啟動可能會遇到下面的問題:
bash error
這個錯誤的原因如下鏈接:
https://jingyan.baidu.com/article/9f63fb91d014b8c8410f0e7a.html
解決方案如下:
直接把 auto.sh 在其他編輯器中重新復制出來一個 auto1.sh 啟動就可以。
其他命令:
- # 停止
- sh auto.sh stop
- # 重啟
- sh auto.sh restart
- # 狀態
- sh auto.sh status
運行日志:
控制臺輸出:項目根目錄下的 dlink.log 文件。
日志歸檔輸出:項目根目錄下的 logs 目錄下。
3.6.配置 web 前端
前端都是一些靜態文件,Dlink 使用 Nginx 作為訪問前端靜態文件的服務器。
第一步:Nginx 在 Mac OS 的安裝,如下鏈接:
https://www.jianshu.com/p/4f433d219ab7
第二步:在 nginx.conf 文件中配置 Dlink 的 server 信息。
本地安裝的話,直接把下面這段 copy 到 nginx.conf 中對應的 server 配置下就行。
server {
listen 9999;
server_name localhost;
# gzip config
gzip on;
gzip_min_length 1k;
gzip_comp_level 9;
gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
gzip_vary on;
gzip_disable "MSIE [1-6]\.";
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html;
index index.html index.htm;
try_files $uri $uri/ /index.html;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
location ^~ /api {
proxy_pass http://127.0.0.1:8888;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
}
}
第三步:注意,重點。一定要將 【dlink 目錄\html 目錄\所有文件】上傳至 Nginx 的 [html 目錄]下。不然訪問 http://127.0.0.1:9999 啥都看不到。
第四步:reload Nginx 配置信息。
第五步:然后我們就可以 happy 的使用 Dlink 了。
4.總結及展望
其他功能博主還在測試中。
引用 Dlink 官網的介紹,Dlink 將緊跟 Flink 官方社區發展,為推廣及發展 Flink 的應用而奮斗,打造 FlinkSQL 的最佳搭檔的形象。