环境:centos7.6 4核 16G
flink安装文件也可官网下载:
https://flink.apache.org/downloads.html
1、上传所有文件到/srv/flinkcdc
2、解压缩flink-1.13.3-bin-scala_2.12.tgz:
tar -zxvf flink-1.13.3-bin-scala_2.12.tgz
3、将几个jar包移动到flink目录的lib中:
mv flink-connector-jdbc_2.11-1.13.3.jar flink-sql-connector-oracle-cdc-2.1.0.jar flink-sql-connector-mysql-cdc-2.1.0.jar flink-1.13.3/lib/
mv mysql-connector-java-5.1.47.jar flink-1.13.3/lib/
其中flinkcdc相关组件jar包官方下载:
https://github.com/ververica/flink-cdc-connectors/releases/tag/release-2.0.2
4、修改flink配置文件:
(注:每个版本支持的配置参数不同,yaml文件中配置参数详解:https://nightlies.apache.org/flink/flink-docs-release-1.13/docs/deployment/config/)
编辑conf/flink-conf.yaml
4.1 修改端口:
rest.port:18081
4.2 添加参数避免checkpoint超时造成failover
execution.checkpointing.interval:10min
execution.checkpointing.tolerable-failed-checkpoints:100
restart-strategy.fixed-delay
restart-strategy.fixed-delay.attempts:2147483647
4.3 加大taskmanager、jobmanager内存配置:
jobmanager.memory.process.size:2900m
taskmanager.memory.process.size:3728m
4.4 修改slot数,slot数量为算子的最大并行度
taskmanager.numberOfTaskSlots:6
4.5 checkpoint设置:
state.checkpoints.dir: file:///srv/flinkcdc/flinkresults/checkpoints
(示例设置为本地,实操一般在hdfs, state.savepoints.dir: hdfs:///flink/checkpoints)
state.checkpoints.num-retained: 20
savepoint设置:
state.savepoints.dir: file:///srv/flinkcdc/flinkresults/savepoints
(示例设置为本地,实操一般在hdfs, state.savepoints.dir: hdfs:///flink/savepoints)
5、启动flink:
到达bin目录下,执行: ./start-cluster.sh
(启动或停止可能有些等待时间)
6、页面访问:
192.168.1.132:18081
### pyflink安装配置
## centos7下重设pip为清华源的方法
默认情况下,pyflink安装依赖的源路径下载速度很慢,建议先设置:
cd ~
mkdir .pip
cd .pip
vi pip.conf
写入如下数据:
[global]
index-url=https://pypi.tuna.tsinghua.edu.cn/simple
trusted-host = pypi.tuna.tsinghua.edu.cn
## windows下重设pip为清华源的方法:
在文件夹中搜索%appdata%,进入其下,创建pip文件夹,在其中新建pip.ini,输入如下内容:
[global]
time-out=60
index-url=https://pypi.tuna.tsinghua.edu.cn/simple/
[install]
trusted-host=tsinghua.edu.cn
最后执行
pip install apache-flink==1.13.3
(或者 python -m pip install apache-flink=1.13.3)
###flink-cdc使用时,对应mysql的bin-log配置
注意仅支持mysql5.7及以上的版本
1、在my.cnf中开启bin-log:
server-id=1
log-bin=mysql-bin
binlog_format=row
(只支持row格式)
2、创建专用cdc用户:
create user 'cdc'@'%' identified by '###';
GRANT ALL PRIVILEGES ON *.* TO 'cdc'@'%' IDENTIFIED BY '###' WITH GRANT OPTION;
flush privileges;
3、重启mysql: service mysqld restart
4、查看是否启用binlog日志:show variables like 'log_bin';
查看binlog内容:show binlog events;
/srv/flinkcdc/flink-1.13.3/bin/flink run -py /moojnn/pyflink/pyflink_cdc_mysql2mysql.py
另一种方式,./bin/sql-client.sh 进入flinkSQL命令行提交任务
## flink停止任务:
stop方式:
flink stop -m 192.168.1.132:18081 ef93e3d505461cb598d3d4dcb1868f45 (最后一串是flink的任务ID)
cancel方式:(若flink-conf.yaml配置了state.savepoints.dir则会自动保存savepoint,否则不会保存savepoint)
flink cancel -m 192.168.1.132:18081 ef93e3d505461cb598d3d4dcb1868f45
也可在停止过程中指定savepoint:
flink cancel -m 192.168.1.132:18081 -s /tmp/savepoint ef93e3d505461cb598d3d4dcb1868f45
最后一种方式是通过界面停止flink任务
stop是更优雅的停止正在运行流作业的方式。stop() 仅适用于 source 实现了
StoppableFunction 接口的作业。当用户请求停止作业时,作业的所有 source 都将接
收 stop() 方法调用。直到所有 source 正常关闭时,作业才会正常结束