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

2022-01-21 19:11:58 浏览数 (1)

摘要:本文介绍了某零售企业用户基于 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的入门,望大家期待哦~

0 人点赞