关于后端:面试题百日百刷flink篇九

3次阅读

共计 1785 个字符,预计需要花费 5 分钟才能阅读完成。

锁屏面试题百日百刷,每个工作日保持更新面试题。请看到最初就能获取你想要的, 接下来的是今日的面试题:

1.JobManger 在集群中表演了什么角色?**

JobManager 负责整个 Flink 集群工作的调度以及资源的治理,从客户端中获取提交的利用,而后依据集群中 TaskManager 上 TaskSlot 的应用状况,为提交的利用调配相应的 TaskSlot 资源并命令 TaskManager 启动从客户端中获取的利用。JobManager 相当于整个集群的 Master 节点,且整个集群有且只有一个沉闷的 JobManager,负责整个集群的工作治理和资源管理。JobManager 和 TaskManager 之间通过 Actor System 进行通信,获取工作执行的状况并通过 Actor System 将利用的工作执行状况发送给客户端。同时在工作执行的过程中,Flink JobManager 会触发 Checkpoint 操作,每个 TaskManager 节点 收到 Checkpoint 触发指令后,实现 Checkpoint 操作,所有的 Checkpoint 协调过程都是在 Fink JobManager 中实现。当工作实现后,Flink 会将工作执行的信息反馈给客户端,并且开释掉 TaskManager 中的资源以供下一次提交工作应用。

2.JobManger 在集群启动过程中起到什么作用?**

JobManager 的职责次要是接管 Flink 作业,调度 Task,收集作业状态和治理 TaskManager。它蕴含一个 Actor,

并且做如下操作:

RegisterTaskManager: 它由想要注册到 JobManager 的 TaskManager 发送。注册胜利会通过

AcknowledgeRegistration 音讯进行 Ack。

SubmitJob: 由提交作业到零碎的 Client 发送。提交的信息是 JobGraph 模式的作业形容信息。

CancelJob: 申请勾销指定 id 的作业。胜利会返回 CancellationSuccess,否则返回 CancellationFailure。

UpdateTaskExecutionState: 由 TaskManager 发送,用来更新执行节点 (ExecutionVertex) 的状态。胜利则返回 true,否则返回 false。

RequestNextInputSplit: TaskManager 上的 Task 申请下一个输出 split,胜利则返回 NextInputSplit,否则返回 null。

JobStatusChanged:它意味着作业的状态 (RUNNING, CANCELING, FINISHED, 等) 发生变化。这个音讯由 ExecutionGraph 发送。

3.TaskManager 在集群中表演了什么角色?**

TaskManager 相当于整个集群的 Slave 节点,负责具体的工作执行和对应工作在每个节点上的资源申请和治理。客户端通过将编写好的 Flink 利用编译打包,提交到 JobManager,而后 JobManager 会依据已注册在 JobManager 中 TaskManager 的资源状况,将任务分配给有资源的 TaskManager 节点,而后启动并运行工作。

TaskManager 从 JobManager 接管须要部署的工作,而后应用 Slot 资源启动 Task,建设数据接入的网络连接,接收数据并开始数据处理。同时 TaskManager 之间的数据交互都是通过数据流的形式进行的。能够看出,Flink 的工作运行其实是采纳多线程的形式,这和 MapReduce 多 JVM 进行的形式有很大的区别,Flink 可能极大进步 CPU 应用效率,在多个工作和 Task 之间通过 TaskSlot 形式共享系统资源,每个 TaskManager 中通过治理多个 TaskSlot 资源池进行对资源进行无效治理。

4.TaskManager 在集群启动过程中起到什么作用?**

TaskManager 的启动流程较为简单:启动类 org.apache.flink.runtime.taskmanager.TaskManager 外围启动办法:selectNetworkInterfaceAndRunTaskManager 启动后间接向 JobManager 注册本人,注册实现后,进行局部模块的初始化。

全部内容在 git 上, 理解更多请点我头像或到我的主页去取得,谢谢**

正文完
 0