返回介绍

Mesos 设置

发布于 2025-05-02 18:19:18 字数 6085 浏览 0 评论 0 收藏

背景

Mesos 实现包含两个组件:Application Master 和 Worker。Worker 是简单的 TaskManagers,它们由应用程序主机设置的环境进行参数化。Mesos 实现中最复杂的组件是应用程序主机。应用程序主机当前托管以下组件:

Mesos 调度程序

调度程序负责向 Mesos 注册框架,请求资源和启动工作节点。调度程序不断需要向 Mesos 报告以确保框架处于健康状态。为了验证群集的运行状况,调度程序监视生成的 worker 并将其标记为失败,并在必要时重新启动它们。

Flink 的 Mesos 调度程序本身目前不具备高可用性。但是,它会在 Zookeeper 中保存有关其状态(例如配置,工作者列表)的所有必要信息。在出现故障时,它依赖于外部系统来启动新的调度程序。然后,调度程序将再次向 Mesos 注册并完成协调阶段。在协调阶段,调度程序接收正在运行的工作程序节点的列表。它将这些与 Zookeeper 中恢复的信息进行匹配,并确保在故障之前将群集恢复到状态。

工件服务器

工件服务器负责向工作节点提供资源。资源可以是从 Flink 二进制文件到共享机密或配置文件的任何内容。例如,在非容器化环境中,工件服务器将提供 Flink 二进制文件。将提供哪些文件取决于使用的配置覆盖。

Flink 的调度程序和 Web 界面

Dispatcher 和 Web 界面为监视,作业提交和其他客户端与群集的交互提供了一个中心点(请参阅 FLIP-6 )。

启动脚本和配置叠加层

启动脚本提供了一种配置和启动应用程序主机的方法。然后,工作节点继承所有进一步的配置。这是使用配置叠加来实现的。配置覆盖提供了一种从环境变量和配置文件推断配置的方法,这些配置文件将发送到工作节点。

DC / OS

本节涉及 DC / OS ,它是具有复杂应用程序管理层的 Mesos 分发。它预装了 Marathon,这是一种监控应用程序并在发生故障时保持其状态的服务。

如果您没有正在运行的 DC / OS 群集,请按照 如何在官方网站上安装 DC / OS说明进行 算子操作

拥有 DC / OS 群集后,您可以通过 DC / OS Universe 安装 Flink。在搜索提示中,只需搜索 Flink。或者,您可以使用 DC / OS CLI:

dcos package install flink

更多信息可以在 DC / OS 示例文档中找到

没有 DC / OS 的 Mesos

您也可以在没有 DC / OS 的情况下运行 Mesos。

安装 Mesos

请按照 官方网站上如何设置 Mesos说明进行 算子操作

安装后,您必须通过创建文件 MESOS_HOME/etc/mesos/masters 和配置主节点和代理节点集 MESOS_HOME/etc/mesos/slaves 。这些文件在每一行中包含一个主机名,相应的组件将在该主机名上启动(假设 SSH 访问这些节点)。

接下来,您必须创建 MESOS_HOME/etc/mesos/mesos-master-env.sh 或使用在同一目录中找到的模板。在此文件中,您必须定义

export MESOS_work_dir=WORK_DIRECTORY

并建议取消注册

export MESOS_log_dir=LOGGING_DIRECTORY

要配置 Mesos 代理,您必须创建 MESOS_HOME/etc/mesos/mesos-agent-env.sh 或使用在同一目录中找到的模板。你必须配置

export MESOS_master=MASTER_HOSTNAME:MASTER_PORT

并取消注释

export MESOS_log_dir=LOGGING_DIRECTORY
export MESOS_work_dir=WORK_DIRECTORY

Mesos 类库

要使用 Mesos 运行 Java 应用程序,必须 MESOS_NATIVE_JAVA_LIBRARY=MESOS_HOME/lib/libmesos.so 在 Linux 上导出。在 Mac OS X 下,您必须导出 MESOS_NATIVE_JAVA_LIBRARY=MESOS_HOME/lib/libmesos.dylib

部署 Mesos

要启动 mesos 群集,请使用部署脚本 MESOS_HOME/sbin/mesos-start-cluster.sh 。要停止 mesos 群集,请使用部署脚本 MESOS_HOME/sbin/mesos-stop-cluster.sh 。有关部署脚本的更多信息,请访问 此处

安装 Marathon

或者,您也可以 安装 Marathon ,使您能够以 高可用性(HA)模式 运行 Flink 。

预安装 Flink 与 Docker / Mesos 容器

您可以在所有 Mesos 主节点和代理节点上安装 Flink。您还可以在部署期间从 Flink 网站提取二进制文件,并在启动应用程序主服务器之前应用自定义配置。更方便,更易于维护的方法是使用 Docker 容器来管理 Flink 二进制文件和配置。

这是通过以下配置条目控制的:

mesos.resourcemanager.tasks.container.type: mesos _or_ docker

如果设置为“docker”,请指定镜像名称:

mesos.resourcemanager.tasks.container.image.name: image_name

独立

/bin Flink 发行版的目录中,您可以找到两个启动脚本来管理 Mesos 集群中的 Flink 进程:

  1. mesos-appmaster.sh 这将启动 Mesos 应用程序主机,它将注册 Mesos 调度程序。它还负责启动工作节点。
  2. mesos-taskmanager.sh Mesos 工作进程的入口点。您不需要显式执行此脚本。它由 Mesos 工作节点自动启动以启动新的 TaskManager。

为了运行 mesos-appmaster.sh 脚本,你必须定义 mesos.masterflink-conf.yaml 或通过它传递 -Dmesos.master=... 给 Java 进程。

执行时 mesos-appmaster.sh ,它将在您执行脚本的机器上创建一个 JobManager。与此相反,TaskManager 将作为 Mesos 集群中的 Mesos 任务运行。

一般配置

可以通过传递给 Mesos 应用程序主机的 Java 属性完全参数化 Mesos 应用程序。这还允许指定常规 Flink 配置参数。例如:

bin/mesos-appmaster.sh \
  -Dmesos.master=master.foobar.org:5050 \
  -Djobmanager.heap.mb=1024 \
  -Djobmanager.rpc.port=6123 \
  -Drest.port=8081 \
  -Dmesos.resourcemanager.tasks.mem=4096 \
  -Dtaskmanager.heap.mb=3500 \
  -Dtaskmanager.numberOfTaskSlots=2 \
  -Dparallelism.default=10

注意: 如果 Flink 处于 传统模式 ,则还应定义由 Mesos via 启动的 TaskManager 的数量 mesos.initial-tasks

高可用性

您将需要运行 Marathon 或 Apache Aurora 之类的服务,该服务负责在节点或进程出现故障时重新启动 Flink 主进程。此外,还需要像 Flink 文档 的“ 高可用性”部分中所述 配置 Zookeeper 。

Marathon

需要设置 Marathon 才能启动 bin/mesos-appmaster.sh 脚本。特别是,它还应调整 Flink 群集的任何配置参数。

以下是 Marathon 的示例配置:

{
  "id": "flink",
  "cmd": "$FLINK_HOME/bin/mesos-appmaster.sh -Djobmanager.heap.mb=1024 -Djobmanager.rpc.port=6123 -Drest.port=8081 -Dmesos.resourcemanager.tasks.mem=1024 -Dtaskmanager.heap.mb=1024 -Dtaskmanager.numberOfTaskSlots=2 -Dparallelism.default=2 -Dmesos.resourcemanager.tasks.cpus=1",
  "cpus": 1.0,
  "mem": 1024
}

使用 Marathon 运行 Flink 时,包含 JobManager 的整个 Flink 集群将作为 Mesos 集群中的 Mesos 任务运行。

配置参数

有关 Mesos 特定配置的列表,请参阅 配置文档的 Mesos 部分

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。