文章目录
- Flink源码之任务启动
- 前言
- 一、环境介绍
- 二、启动脚本
- 1. 入口 start-cluster.sh
- 2.jobmanager.sh和taskmanager.sh
- 3.启动进程flink-daemon.sh
- 总结
前言
最近在升级公司的实时开发平台,于是开始研究下flink的源码。本文是flink源码第一篇,从flink的集群启动脚本开始。
一、环境介绍- flink 1.12.x
安装过flink的同学都知道是通过start-cluster.sh去启动的,下面就从这个脚本开始。
代码路径
1. 入口 start-cluster.shflink-dist/src/main/flink-bin/bin
该脚本就干了下面两件事。
- 启动jobManager
"${FLINK_BIN_DIR}"/jobmanager.sh start
- 启动TaskManager
TMWorkers start
TMWorkers方法在config.sh里面,如下
"${FLINK_BIN_DIR}"/taskmanager.sh "${CMD}"
2.jobmanager.sh和taskmanager.sh
- jobmanager.sh
// 指定类型
ENTRYPOINT=standalonesession
// 守护进程启动
"${FLINK_BIN_DIR}"/flink-daemon.sh $STARTSTOP $ENTRYPOINT "${args[@]}"
- taskmanager.sh
// 指定类型
ENTRYPOINT=taskexecutor
// 守护进程启动
"${FLINK_BIN_DIR}"/flink-daemon.sh $STARTSTOP $ENTRYPOINT "${ARGS[@]}"
3.启动进程flink-daemon.sh
- 根据类型确认启动的java类
case $DAEMON in
// 从节点: TaskManagerRunner
(taskexecutor)
CLASS_TO_RUN=org.apache.flink.runtime.taskexecutor.TaskManagerRunner
;;
(zookeeper)
CLASS_TO_RUN=org.apache.flink.runtime.zookeeper.FlinkZooKeeperQuorumPeer
;;
(historyserver)
CLASS_TO_RUN=org.apache.flink.runtime.webmonitor.history.HistoryServer
;;
// 主节点: StandaloneSessionClusterEntrypoint
(standalonesession)
CLASS_TO_RUN=org.apache.flink.runtime.entrypoint.StandaloneSessionClusterEntrypoint
;;
(standalonejob)
CLASS_TO_RUN=org.apache.flink.container.entrypoint.StandaloneApplicationClusterEntryPoint
;;
(*)
echo "Unknown daemon '${DAEMON}'. $USAGE."
exit 1
;;
esac
- 启动java进程
$JAVA_RUN $JVM_ARGS ${FLINK_ENV_JAVA_OPTS} "${log_setting[@]}" -classpath "`manglePathList "$FLINK_TM_CLASSPATH:$INTERNAL_HADOOP_CLASSPATHS"`" ${CLASS_TO_RUN} "${ARGS[@]}" > "$out" 200<&- 2>&1 < /dev/null &
总结
本文介绍了如何以start-cluster.sh脚本为入口,找到启动jobmanager和taskmanager其实就是启动了StandaloneSessionClusterEntrypoint和TaskManagerRunner两个java类,后面将对着两个类源码进行跟踪分析。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)