beam_flink1.9_job_server

apache/beam_flink1.9_job_server Docker Image

基于Apache Beam统一数据处理模型和Flink 1.9框架的作业服务器,用于管理和运行批处理与流处理作业。

2 次收藏下载次数: 0状态:社区镜像维护者:Apache 软件基金会镜像仓库类型:镜像最近更新:

Apache Beam 镜像文档

1. 镜像概述

Apache Beam 是一个统一的编程模型,用于定义批处理和流处理数据并行处理管道,同时提供一套特定于语言的 SDK 用于构建管道,以及在分布式处理后端(如 Apache Flink、Apache Spark、Google Cloud Dataflow 等)执行管道的运行器(Runners)。本镜像基于 Apache Beam,特别优化了与 Apache Flink 1.9 版本的集成,提供 Job Server 功能,支持在 Flink 1.9 集群上部署和执行 Beam 数据处理管道。

2. 核心功能与特性

2.1 统一数据处理模型

  • 同时支持批处理(Bounded)和流处理(Unbounded)数据场景,提供一致的编程接口。
  • 基于“Dataflow 模型”设计,支持精确的窗口(Windowing)、水印(Watermark)和触发器(Trigger)机制,满足复杂流处理需求。

2.2 多语言 SDK 支持

  • 提供 Java、Python、Go 等多语言 SDK,适配不同开发团队的技术栈。
  • SDK 抽象了底层执行细节,开发者可专注于业务逻辑实现。

2.3 多后端运行器兼容

  • 支持在多种分布式处理引擎上执行管道,包括 Apache Flink、Apache Spark、Google Cloud Dataflow、Hazelcast Jet 等。
  • 本镜像默认集成 Flink 1.9 Runner,优化了与 Flink 1.9 集群的通信和任务调度。

2.4 轻量化与可扩展性

  • 镜像体积精简,适合容器化部署;支持横向扩展 Job Server 实例,提高任务并发处理能力。
  • 支持自定义管道配置,可通过环境变量或配置文件调整运行参数。

3. 使用场景与适用范围

3.1 数据处理管道开发与部署

  • 数据工程师:使用 Beam SDK 编写数据清洗、转换、聚合等管道,通过本镜像部署到 Flink 1.9 集群执行。
  • 场景示例:实时日志处理、用户行为数据分析、ETL 批处理任务。

3.2 跨平台数据处理统一管理

  • 企业内部存在多套处理引擎(如 Flink、Spark)时,通过 Beam 统一编程模型降低开发和维护成本。

3.3 SDK 与运行器扩展开发

  • SDK 开发者:基于 Beam 核心模型扩展新语言 SDK(如 Scala、R)。
  • 运行器开发者:为自定义分布式处理引擎实现 Beam 兼容的运行器。

3.4 本地调试与集群部署无缝衔接

  • 开发阶段使用本地 DirectRunner 调试,生产环境通过本镜像切换至 Flink 1.9 Runner,无需修改业务代码。

4. 使用方法与配置说明

4.1 镜像拉取

bash
docker pull docker.xuanyuan.run/apache/beam-flink1.9-job-server:latest

4.2 Docker 运行示例

4.2.1 本地模式(使用 Flink 嵌入式集群)

适用于开发调试,直接在容器内启动嵌入式 Flink 集群:

bash
docker run -d \
  --name beam-flink-jobserver \
  -p 8099:8099 \  # Job Server 端口
  -e BEAM_PIPELINE_RUNNER=FlinkRunner \
  -e FLINK_MODE=embedded \
  apache/beam-flink1.9-job-server:latest

4.2.2 连接外部 Flink 1.9 集群

生产环境推荐,指定外部 Flink 1.9 集群地址:

bash
docker run -d \
  --name beam-flink-jobserver \
  -p 8099:8099 \
  -e BEAM_PIPELINE_RUNNER=FlinkRunner \
  -e FLINK_MODE=cluster \
  -e FLINK_MASTER_URL=flink-cluster:8081 \  # 外部 Flink 集群 JobManager 地址
  -v /local/jobs:/jobs \  # 挂载本地作业目录
  apache/beam-flink1.9-job-server:latest

4.3 Docker Compose 配置示例

yaml
version: '3'
services:
  beam-jobserver:
    image: docker.xuanyuan.run/apache/beam-flink1.9-job-server:latest
    ports:
      - "8099:8099"
    environment:
      - BEAM_PIPELINE_RUNNER=FlinkRunner
      - FLINK_MODE=cluster
      - FLINK_MASTER_URL=flink-jobmanager:8081
      - JOB_SERVER_PORT=8099
      - LOG_LEVEL=INFO
    volumes:
      - ./jobs:/opt/beam/jobs  # 挂载作业 JAR/Python 脚本目录
    depends_on:
      - flink-jobmanager
      - flink-taskmanager

  flink-jobmanager:
    image: docker.xuanyuan.run/flink:1.9-scala_2.11
    ports:
      - "8081:8081"
    command: jobmanager
    environment:
      - JOB_MANAGER_RPC_ADDRESS=flink-jobmanager

  flink-taskmanager:
    image: docker.xuanyuan.run/flink:1.9-scala_2.11
    depends_on:
      - flink-jobmanager
    command: taskmanager
    environment:
      - JOB_MANAGER_RPC_ADDRESS=flink-jobmanager

4.4 核心配置参数

4.4.1 环境变量配置

环境变量名描述默认值可选值
BEAM_PIPELINE_RUNNER指定管道运行器FlinkRunnerDirectRunner, SparkRunner 等
FLINK_MODEFlink 运行模式clusterembedded(嵌入式), cluster(集群)
FLINK_MASTER_URLFlink 集群 JobManager 地址localhost:8081Flink 集群实际地址
JOB_SERVER_PORTJob Server 监听端口80991-65535 未占用端口
LOG_LEVEL日志级别INFODEBUG, WARN, ERROR
BEAM_JOB_ARGS作业额外参数(JSON 格式){}如 {"input":"hdfs:///data","output":"hdfs:///result"}

4.4.2 命令行参数

启动容器时可通过命令行参数覆盖默认配置,例如:

bash
docker run docker.xuanyuan.run/apache/beam-flink1.9-job-server:latest \
  --port 8099 \
  --flink-master flink-cluster:8081 \
  --log-level DEBUG

5. 核心概念

5.1 Beam 模型核心组件

Beam 模型定义了数据处理管道的核心抽象,确保跨场景和后端的一致性:

  • PCollection:表示数据集合,可分为有界(批处理)或无界(流处理),是管道中数据的逻辑容器。
  • PTransform:表示数据转换操作(如过滤、映射、聚合),接收一个或多个 PCollection 作为输入,输出新的 PCollection。
  • Pipeline:管理 PTransform 和 PCollection 构成的有向无环图(DAG),是数据处理逻辑的完整表示。
  • PipelineRunner:负责将 Pipeline 转换为具体后端(如 Flink)的执行计划,并在目标集群上调度执行。

6. SDK 支持

本镜像兼容以下 Apache Beam SDK 版本:

  • Java SDK:支持 Beam 2.10+ 版本,需使用 beam-sdks-java-core 依赖。
  • Python SDK:支持 Beam 2.10+ 版本,需安装 apache-beam[flink] 包。
  • Go SDK:支持 Beam 2.15+ 版本,需使用 github.com/apache/beam/sdks/v2/go 库。

注:不同 SDK 编写的管道需通过对应语言的提交工具提交至 Job Server(如 Java 作业通过 beam-runner-flink-job-server 提交,Python 作业通过 beam-cli 提交)。

7. 运行器(Runners)支持

Beam 支持在多种分布式引擎上执行管道,本镜像默认集成以下运行器:

7.1 核心运行器

  • DirectRunner:本地单机运行,适用于开发调试,无需集群环境。
  • FlinkRunner:针对 Apache Flink 集群优化,本镜像默认启用,支持 Flink 1.9.x 集群,支持批处理和流处理模式。
  • SparkRunner:支持 Apache Spark 2.4+ 集群,需通过环境变量 BEAM_PIPELINE_RUNNER=SparkRunner 切换。
  • DataflowRunner:提交至 Google Cloud Dataflow 服务,需配置 GCP 认证信息。

7.2 FlinkRunner 特性

  • 支持 Flink 1.9 集群的 Checkpoint 和 Savepoint 机制,保证流处理作业的容错性。
  • 自动适配 Flink 集群资源,动态调整并行度。
  • 支持 Flink 原生状态后端(如 RocksDB),优化大状态流处理性能。

8. 入门指南

8.1 快速开始

  1. 编写管道:使用 Java/Python/Go SDK 编写简单管道(如单词计数),示例代码可参考 https://beam.apache.org/get-started/quickstart-java/。
  2. 构建作业包:Java 作业打包为 JAR 文件,Python 作业保留 .py 脚本。
  3. 提交作业:通过 Job Server REST API 或 CLI 提交作业,例如:
    bash
    # Java 作业提交示例(需安装 beam-cli)
    beam submit \
      --job-server=localhost:8099 \
      --runner=FlinkRunner \
      ./wordcount.jar \
      --input=hdfs:///input.txt \
      --output=hdfs:///output
    

8.2 调试与监控

  • Job Server 日志:通过 docker logs beam-flink-jobserver 查看作业提交和执行日志。
  • Flink 监控:访问 Flink 集群 UI(默认 http://flink-jobmanager:8081)查看作业执行状态、Checkpoint 指标等。

9. 联系与支持

  • 用户邮件列表:订阅 ***,获取使用问题解答。
  • 开发者邮件列表:订阅 ***,参与功能讨论和代码贡献。
  • Issue 跟踪:通过 https://issues.apache.org/jira/browse/BEAM 提交 Bug 或功能需求。
  • 官方文档:更多详情参见 https://beam.apache.org/。

镜像拉取方式

您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。

轩辕镜像加速拉取命令点我查看更多 beam_flink1.9_job_server 镜像标签

docker pull docker.xuanyuan.run/apache/beam_flink1.9_job_server:<标签>

DockerHub 原生拉取命令

docker pull apache/beam_flink1.9_job_server:<标签>
专业版 · 高速稳定拉取镜像
50GB 仅 ¥8/年
高速镜像下载在线技术支持专业版保障服务可用付费会员免广告