前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Dlink + FlinkSQL构建流批一体数据平台——部署篇

Dlink + FlinkSQL构建流批一体数据平台——部署篇

作者头像
文末丶
发布2022-01-21 19:11:58
5.7K0
发布2022-01-21 19:11:58
举报
文章被收录于专栏:DataLink数据中台DataLink数据中台

摘要:本文介绍了某零售企业用户基于 Dlink + FlinkSQL 构建批流一体数据平台的实践,主要为部署的分享。内容包括:

  1. 前言
  2. 部署
  3. 集群中心
  4. 系统配置

GitHub 地址

https://github.com/DataLinkDC/dlink

欢迎大家关注 Dlink 的发展~

一、前言

由于公司需求,最近调研了很多的开源项目,最终发现 Dlink 在建立批流一体的数据平台上更满足需求。数据开发的便捷性对于数据平台来说非常重要,决定了项目的建设与运维成本,而 Dlink 提供了 FlinkSQL 与其他 SQL 的开发与调试能力,使数据开发工作达到Hue 的效果,自动提交及创建远程集群的能力降低了使用门槛,与作者沟通后,得知 Dlink 的 RoadMap 正为所需求的数据平台,于是部署研究后,效果不错,准备节后上线生产,期间踩了一些坑,整理了一篇文章来分享,时间关系,后续还会分享其他的内容。

二、部署

一.解压到指定目录

Dlink 不依赖任何外部的 Hadoop 或者 Flink 环境,可以单独部署在 flink、 hadoop 和 K8S 集群之外,完全解耦,支持同时连接多个不同的集群实例进行运维。

代码语言:javascript
复制
tar -zxvf dlink-release-0.5.0-SNAPSHOT.tar.gz
mv dlink-release-0.5.0-SNAPSHOT dlink
cd dlink
修改配置文件

二.配置文件

Dlink采用mysql作为后端的存储库,mysql支持5.6+。这里假设你已经安装了mysql

首先需要创建Dlink的后端数据库,这里以配置文件中默认库创建

代码语言:javascript
复制
#登录mysql
mysql -uroot -proot@123
#授权并创建数据库
mysql> grant all privileges on *.* to 'dlink'@'%' identified by 'dlink' with grant option;
mysql> grant all privileges on *.* to 'dlink'@'fdw1' identified by 'dlink'  with grant option;
mysql> flush privileges;
#此处用dlink用户登录
mysql -h fdw1  -udlink -pdlink
mysql> create database dlink;

创建好数据库后,就可以修改dlink连接mysql的配置文件啦,根据个人情况修改。配置文件比较简单,这里就不多说了。

代码语言:javascript
复制
#切换目录
cd /opt/dlink/config/
vim application.yml

配置文件修改好后,下一步就是安装nginx。如果已安装nginx可以忽略。因为Dlink部署需要nginx,所以先要部署nginx,配置完成后,才能正常启动。

三.初始化数据库

在dlink根目录sql文件夹下有2个sql文件,分别是dlink.sql和dlink_history.sql。如果第一次部署,可以直接将dlink.sql文件在dlink数据库下执行。(如果之前已经建立了 dlink 的数据库,那 dlink_history.sql 存放了各版本的升级 sql ,根据版本号按需执行即可)

代码语言:javascript
复制
#首先登录mysql
mysql -h fdw1  -udlink -pdlink
mysql> use dlink;
mysql> source /opt/dlink/sql/dlink.sql

执行完成后,接下来,部署nginx服务。

四.部署nginx

在linux,首先要配置好相应的yum库,因为在安装过程中没有配置,这里可以大概讲述下步骤,可以选择连接网络或者本地yum源都可以,这里选择连接网络方式配置

代码语言:javascript
复制
#下载yum源
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
#清除缓存
yum makecache
#接下来安装nginx
yum -y install epel-release
yum -y install nginx
sudo systemctl enable nginx
sudo service nginx start
sudo service nginx reload
nginx -v
#最后查看进程看是否正常启动
ps -ef|grep nginx

五.nginx中配置dlink

如果是yum源安装的nginx,配置文件在etc下,如果是源码包安装,请自行找到配置文件

代码语言:javascript
复制
#切换到nginx配置目录
cd /etc/nginx/

vim /etc/nginx/nginx.conf打开配置文件,修改server中的内容,其中server中的内容按照github上的配置即可

代码语言:javascript
复制
    server {
        listen       9999;
        #listen       [::]:80;
        server_name  bigdata3;
        root         /usr/share/nginx/html;
                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]\.";

        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;
        
        location / {
            root   html;
            index  index.html index.htm;
            try_files $uri $uri/ /index.html;
        }
        error_page 404 /404.html;
        location = /404.html {
        }

        error_page 500 502 503 504 /50x.html;
        location = /50x.html {
        }
        
        location ^~ /api {
            proxy_pass http://192.168.0.0:8888;
            proxy_set_header   X-Forwarded-Proto $scheme;
            proxy_set_header   X-Real-IP         $remote_addr;
        }
    }

修改内容:

  • listen 监听端口;
  • 存放html路径;
  • location / 这里可以指定为绝对路径红色部分就是所修改的地方

配置完成后,保存退出。并重启nginx并重新加载生效

代码语言:javascript
复制
$systemctl restart nginx.service
$systemctl reload nginx.service
#查看nginx是否配置成功
nginx -t
$nginx -s reload

六.加载依赖

Dlink具备自己的 Flink 环境,该 Flink 环境的实现需要用户自己在 Dlink 根目录下创建 plugins 文件夹并上传相关的 Flink 依赖,如 flink-dist, flink-table 等,具体请阅 Readme(后续的扩展依赖也放到该目录下)。当然也可在启动文件中指定 FLINK_HOME,但不建议这样做。

Dlink当前版本的yarn的perjob与application执行模式依赖Flink-shade-hadoop去启动,需要额外添加Flink-shade-hadoop 包。

代码语言:javascript
复制
#创建目录
cd /opt/dlink/
mkdir plugins

将Flink-shade-hadoop上传到到plugins文件目录下对于使用hadoop2 或者 hadoop 3 的均可使用 flink-shade-hadoop-3 地址如下:

https://mvnrepository.com/artifact/org.apache.flink/flink-shaded-hadoop-3-uber?repo=cloudera-repos

如果是CDH及HDP使用开源flink-shade对Dlink没有任何影响,其他用到的依赖取决于CDH或者HDP与开源版本的兼容性,需要自行根据兼容性添加依赖即可正常使用 Dlink 的所有功能。

七.启动Dlink

代码语言:javascript
复制
#启动
$sh auto.sh start
#停止
$sh auto.sh stop
#重启
$sh auto.sh restart
#查看状态
$sh auto.sh status

看到如下界面说明Dlink部署成功

默认用户名/密码:admin/admin

如果访问失败,请检查防火墙是否关闭、Nginx的配置是否正确。

接下来,是关于Dlink用户部署,对于一些公司来说,禁止在非root用户下操作,或者采用资源调度(yarn),需要用非root用户提交FlinkSQL。那么Dlink遵循的原则是,Dlink启动用那个用户就会通过那个用户去提交任务。下面就说下,如何在非root用户下得操作;

八.非root用户提交任务

创建flink提交用户的队列用flink

代码语言:javascript
复制
$useradd flink

在hdfs下创建/user/flink用户文件夹,要使用root用户去创建,并授与flink权限。如果是CDH平台,采用HDFS用户去创建,这里采用的root

代码语言:javascript
复制
$hadoop fs -mkdir -p  /user/flink
#授权
$hadoop fs -chown -R flink:flink   /user/flink

对Dlink进行授权,采用Flink权限后,Dlink在Flink用户下启动,那么这个时候FlinkSQL开发的作业都会通过Flink用户提交

代码语言:javascript
复制
$chown -R flink:root dlink

切换到Flink用户启动Dlink即可正常使用

代码语言:javascript
复制
su  flink
sh auto.sh start

问题记录:

1.standalone、yarn-session、k8s-session 适合测试以及对源数据库的查询,例如OLAP,并且在standalone和yarn session模式下禁用savepoints,如果使用 SELECT 和 SHOW 等查询操作,需要关闭语句集、开启结果预览才可。

2.perjob和application模式推荐在生产使用,开启语句集,savepoint设置为最近一次。

3.local 不熟悉的话慎用,并不要执行流任务。

三、集群中心

集群中心配置包括:

  • 集群实例
  • 集群配置其中集群实例适用场景为standalone和yarn session以及k8s session。注册 Flink 集群地址时,格式为 host:port ,用英文逗号分隔。即添加 Flink 集群的 JobManager 的 RestApi 地址。当 HA 模式时,地址间用英文逗号分隔,例如:192.168.123.101:8081,192.168.123.102:8081,192.168.123.103:8081。新增和修改的等待时间较长,是因为需要检测最新的 JobManager 地址。心跳检测为手动触发,会更新集群状态与 JobManager 地址。

集群配置适用场景为yarn-per-job和yarn-application。k8s-application则通过set语法来配置。

一.集群实例

如果要配置集群实例,第一步,要点击"集群中心",进入集群中心后,第二步,点击"集群实例",进入"集群实例"后,会看到如下界面

如上图所示,里面包括新建,心跳,回收,刷新等按钮。

第三步,点击"新建"按钮,会出现"添加Flink集群"界面

包括名称,别名,类型,JobManager HA地址。其中名称和别名根据情况自定义,类型包含yarn session,standalone,yarn per-job,yarn application。集群实例适合yarn session,k8s session,standalone。添加Flink集群默认是启用。下面以standalone创建一个Flink集群,界面如下:

填写完成后,点击"提交"按钮。提交完成后,下一步点击"心跳"按钮,界面如下:

会看到状态刷新完成,会自动获取到 Flink 的版本号。至此一个集群实例就注册完成。yarn session和k8s session集群实例注册类似。

如果需要更改集群实例,需要点击配置或者编辑,出现集群编辑界面,可以对集群实例进行更改或者删除。如下图

二.集群配置

集群配置更多适用于yarn per-job和yarn application。

第一步,点击"集群配置",界面如下:

第二步,点击"新建",出现"创建集群配置",界面如下:

集群配置中包括hadoop配置,Flink配置,基本配置。

在Hadoop配置中必填项包含配置文件路径及ha.zookeeper.quorum(可不填)

Flink配置必填项包含lib 路径和配置文件路径

基本配置必填项包含标识

在基本配置中最后点击"是否启用",那么集群配置信息配置完成。

信息填写完成后,点击"测试"按钮,看集群是否配置成功,如果配置成功,会出现测试链接成功,否则出现"请求失败",最后点击"完成"。

集群配置如何修改,点击对应的"更多"按钮,即可对集群配置进行编辑和删除,同集群实例。

以上为集群中心的配置过程,到这里集群配置就完成了。

四、系统设置

一.用户管理

新建用户密码默认:123456

二.Flink设置

第一步,点击"系统设置">>"Flink设置",界面如下:

提交FlinkSQL的Jar文件路径主要是为yarn application服务,我们需要将Dlink中的dlink-app依赖包上传到HDFS的指定路径,点击"修改"后,保存即可。其他的默认,不需要额外修改。

部署篇今天就介绍到这里啦!后期将会有一篇介绍Dlink的入门,望大家期待哦~

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-01-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Dinky开源 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一.解压到指定目录
  • 二.配置文件
  • 三.初始化数据库
  • 四.部署nginx
  • 五.nginx中配置dlink
  • 六.加载依赖
  • 七.启动Dlink
  • 八.非root用户提交任务
相关产品与服务
大数据
全栈大数据产品,面向海量数据场景,帮助您 “智理无数,心中有数”!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档