持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第11天,点击查看活动详情
flink cdc mysql to hudi
背景
公司需要使用FlinkCDC同步Mysql数据,通过Hudi实时同步数据到Hadoop/Hive,为下游用户提供实时数据查询。
环境
hdfs环境: jdk:1.8+ scala:2.11 flink:1.13.5 mysql:5.7+ hudi:0.10.0
hudi环境参考
flinkCDC环境参考
flink配置
flink-conf.yaml配置
flink-1.13.1/conf/flink-conf.yaml
taskmanager.numberOfTaskSlots: 4
#状态管理
state.backend: rocksdb state.backend.incremental: true
state.checkpoints.dir: hdfs://<hdfsclustername>/tmp/flink/checkpoints
#类加载
classloader.check-leaked-classloader: false
classloader.resolve-order: parent-first
#on yarn配置, cluster_namespace为hdfs命名空间
rest.address: cluster_namespace
jobmanager.rpc.address: cluster_namespace
jobmanager.archive.fs.dir: hdfs://<hdfsclustername>/tmp/flink/completed-jobs/
historyserver.archive.fs.dir: hdfs://<hdfsclustername>/tmp/flink/completed-jobs/
sql-client-defaults.yaml配置
flink-1.13.1/conf/sql-client-defaults.yaml
execution:
planner: blink
type: streaming
FLINK_HOME/lib下添加依赖
# flinkcdc编译文件
flink-format-changelog-json-2.1.1.jar
flink-sql-connector-mysql-cdc-2.2.1.jar
# flinkcdc依赖 flink-sql-connector-kafka_2.11-1.13.5.jar
#HADOOP_HOME/lib下拷贝
hadoop-mapreduce-client-common-3.1.1.3.1.4.0-315.jar
hadoop-mapreduce-client-core-3.1.1.3.1.4.0-315.jar
hadoop-mapreduce-client-jobclient-3.1.1.3.1.4.0-315.jar
# hudi编译文件 hudi-flink-bundle_2.11-0.10.0.jar
hudi-flink-bundle_2.11-0.10.0.jar
启动flink yarn session服务
./bin/yarn-session.sh -s 4 -jm 1024 -tm 2048 -nm flink-hudi -d
Flink on yarn session启动成功
重新执行命令,flink on yarn session启动成功,命令行日志中可以看到对应的yarn applicationId。
点击Yarn web UI下的
ApplicationMaster进入Flink session集群,后续在这里跟踪flinkcdc作业状态。
启动Flink sql client
./bin/sql-client.sh -s yarn-session -j lib/hudi-flink-bundle_2.11-0.10.0.jar shell