Flink SQL 知其所以然之Flink SQL 開發(fā)企業(yè)級利器之 Dlink
本文轉(zhuǎn)載自微信公眾號「大數(shù)據(jù)羊說」,作者antigeneral了呀。轉(zhuǎn)載本文請聯(lián)系大數(shù)據(jù)羊說公眾號。
1.序篇
博主這個系列都是講 flink sql 相關(guān)的實踐的。
講到這個章節(jié),其實挺多常用的 flink sql 語法及實戰(zhàn)案例都已經(jīng)講了。
那么原理講了,得在自己家公司把 flink sql 這等好東西用起來啊。
搞大數(shù)據(jù)開發(fā)的同學(xué)基本都知道在 HUE 上面寫 hive sql 賊爽。那么有沒有寫 flink sql 的企業(yè)級的 web IDE 推薦的呢?
經(jīng)過博主調(diào)研之后,發(fā)現(xiàn)有兩款非常優(yōu)秀的利器:
- Apache Zeppelin
- Dlink
為啥先介紹 Dlink 呢?
因為博主和其開發(fā)人員混的很熟了,所以就先拿 Dlink 來嘗試嘗試。
廢話不多說,大家都想先看效果再看怎么部署。先看看最終效果。
2.Dlink 平臺效果
2.1.登錄
登錄
登錄賬號和密碼默認(rèn)為 admin/admin。
2.2.flink sql 開發(fā)界面
具體功能如下圖所示:
sql 開發(fā)
注意:
預(yù)跑就是用于快速驗證 sql 是否是正確的,可以快速以 standalone 模式跑出來一個結(jié)果。肥腸地好用。想看到預(yù)跑的結(jié)果,在 sql 中不能寫 insert into xxx 這段。
可以看到是一個功能很齊全的 web IDE。
接下來我們看看怎么安裝部署 Dlink 0.4.0。
3.安裝部署篇
3.1.Dlink 的 github
源碼直接去 github 上看,已經(jīng)開源了,鏈接如下。
https://github.com/DataLinkDC/dlink
3.2.部署環(huán)境準(zhǔn)備
此部署示例是在 Mac OS 上進(jìn)行,其他環(huán)境未測試。
環(huán)境 | 版本 | 備注 |
---|---|---|
jdk | 1.8.0_201 | web 基礎(chǔ)環(huán)境 |
mysql | 8.0+ | 存儲 web IDE 作業(yè),集群等信息 |
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 目錄結(jié)構(gòu)如下:
注意這里只是 Dlink 相關(guān)的包和文件,flink 任務(wù)的執(zhí)行必然還會依賴到 flink 相關(guān)的包,這就需要你在 dlink-release-0.4.0 目錄下自己創(chuàng)建一個 plugins 文件夾。并且將 flink 相關(guān)的 jar 放在 plugins 文件夾下。即從 https://archive.apache.org/dist/flink/flink-1.13.2/ 下載對應(yīng)的 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 應(yīng)用相關(guān)的信息。這些信息就是存儲在 MySQL 中的。
第一步:創(chuàng)建 MySQL dlink 庫。
使用 MySQL-cli 連接 MySQL 創(chuàng)建庫。
- > mysql -u用戶名 -p密碼
- mysql> create database dlink;
- mysql> show databases;
Dlink MySQL
第二步:使用 Dlink 的 sql 腳本(dlink 目錄\sql 目錄\dlink.sql)初始化 Dlink 數(shù)據(jù)庫表信息,具體初始化命令行如下。
- > mysql -h localhost -u用戶名 -p密碼 -Ddlink < dlink.sql
- > mysql -u用戶名 -p密碼
- mysql> use dlink;
- mysql> show tables;
Dlink MySQL Table
第三步:Dlink 也是個 web 項目,用的是 SpringBoot 那一套東西,所以連接 MySQL 得需要進(jìn)行 Spring 相關(guān)的配置。
所以需要去 dlink 目錄\config 目錄\application.yml 中修改 MySQL 相關(guān)的配置。由于博主是在本地部署。所以涉及到改動的只有用戶名和密碼,改完之后保存。
application.yml
3.5.啟動 web 后端
Dlink 是前后端分離的,剛剛我們配置了 MySQL 相關(guān)的環(huán)境,則可以直接啟動后端了,后端占用的端口是 8888,啟動命令如下。
- sh auto.sh start
在 Mac OS 下啟動可能會遇到下面的問題:
bash error
這個錯誤的原因如下鏈接:
https://jingyan.baidu.com/article/9f63fb91d014b8c8410f0e7a.html
解決方案如下:
直接把 auto.sh 在其他編輯器中重新復(fù)制出來一個 auto1.sh 啟動就可以。
其他命令:
- # 停止
- sh auto.sh stop
- # 重啟
- sh auto.sh restart
- # 狀態(tài)
- sh auto.sh status
運行日志:
控制臺輸出:項目根目錄下的 dlink.log 文件。
日志歸檔輸出:項目根目錄下的 logs 目錄下。
3.6.配置 web 前端
前端都是一些靜態(tài)文件,Dlink 使用 Nginx 作為訪問前端靜態(tài)文件的服務(wù)器。
第一步:Nginx 在 Mac OS 的安裝,如下鏈接:
https://www.jianshu.com/p/4f433d219ab7
第二步:在 nginx.conf 文件中配置 Dlink 的 server 信息。
本地安裝的話,直接把下面這段 copy 到 nginx.conf 中對應(yīng)的 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.總結(jié)及展望
其他功能博主還在測試中。
引用 Dlink 官網(wǎng)的介紹,Dlink 將緊跟 Flink 官方社區(qū)發(fā)展,為推廣及發(fā)展 Flink 的應(yīng)用而奮斗,打造 FlinkSQL 的最佳搭檔的形象。