服务端口(默认值)
| 端口 | 服务 | 用途 |
|---|---|---|
| 1260 | Table Service | 计算引擎访问 AMS Catalog。 |
| 1261 | Optimizing Service | Optimizer 连接 AMS 并领取任务。 |
| 1630 | HTTP Service | Amoro WebUI 和 Open API。 |
日志
AMS 日志默认位于 ${AMORO_HOME}/logs,可通过 AMORO_LOG_DIR 环境变量修改。Optimizer 日志位置取决于部署方式:Local Container 位于本地进程日志;Flink/Spark on YARN 通过 Application ID 查看聚合日志;Kubernetes 通过 Pod 日志和事件查看;External Container 在外部任务平台查看。
日常巡检
检查 AMS 进程、HTTP/Thrift 端口和系统数据库连接。
检查优化任务积压和优化失败增量。
检查系统数据库备份、日志目录、Warehouse 容量和对象存储请求异常。
检查 Catalog 认证凭据有效期、Kerberos 时间同步和服务域名解析。
变更前导出 config.yaml、插件配置和 Catalog/Optimizer Group 关键参数。
监控指标
metric-reporters:
- name: prometheus-exporter
enabled: true
properties:
port: 9090| 重点指标 | 用途 |
|---|---|
| table_optimizing_status_*_duration_mills | 观察表在 Pending、Planning、Executing、Committing 等阶段的停留时间。 |
| table_optimizing_process_failed_count | 观察优化失败次数增量。 |
| optimizer_group_pending_tasks | 观察待执行任务积压。 |
| optimizer_group_optimizer_instances | 观察可用 Optimizer 实例数。 |
| optimizer_group_threads | 观察 Group 的总执行线程数。 |
高可用
AMS支持“一主多备”的高可用性(HA)模式。该模式通过Zookeeper实现领导者选举机制,并需指定AMS集群名称及Zookeeper地址。AMS集群名称用于将同一Zookeeper集群下的不同AMS集群进行绑定,以避免相互干扰。
多个实例应连接同一个生产系统数据库,并保持配置、插件和 cluster-name 一致。
ams:
ha:
enabled: true
cluster-name: production# Differentiating binding multiple sets of AMS on the same ZooKeeper.
zookeeper-address: zk1:2181,zk2:2181,zk3:2181# ZooKeeper server address.配置Flink Optimizer
Flink Container通过Flink作业运行Optimizer,适用于在YARN或Kubernetes上扩展优化资源。配置分为运行环境、AMSContainer、OptimizerGroup和作业参数四部分。
部署前提
AMS节点已安装与集群兼容的Flink、Hadoop和YARN客户端,并能够使用目标提交用户访问HDFS、YARNResourceManager和HiveMetastore。
AMS与Optimizer节点时间同步;启用Kerberos时,krb5.conf、principal、keytab和Hadoop配置文件均可访问。
确认${AMORO_HOME}/plugin/optimizer/flink/optimizer-job.jar存在,Flink版本与Amoro插件兼容。
确认以下环境变量已设置并生效(通常配置在/etc/profile.d/flink.sh文件下):
export HADOOP_HOME=/usr/local/hadoop3
export FLINK_HOME=/usr/local/flink
export HADOOP_CONF_DIR=/etc/hadoop/conf
export FLINK_CONF_DIR=$FLINK_HOME/conf
export PATH=$PATH:$FLINK_HOME/bin:$HADOOP_HOME/bin:$HADOOP_CONF_DIR
export HADOOP_CLASSPATH=`hadoop classpath`在配置文件添加 Flink Container
编辑 ${AMORO_HOME}/conf/config.yaml(在翼MR Manager中Amoro的配置管理页面进行操作)。将 ams.server-expose-host 设置为 Optimizer 节点可访问的 AMS 主机名或 IP;不要使用 localhost。然后在 containers 中添加 Flink Container。完成配置项修改后,需重启amoro服务。
ams:
server-expose-host: “X.X.X.X”
containers:
- name: flinkContainer
container-impl: org.apache.amoro.server.manager.FlinkOptimizerContainer
properties:
flink-home: /usr/local/flink
target: yarn-per-job
export.HADOOP_CONF_DIR: /usr/local/hadoop3/etc/hadoop
export.HADOOP_USER_NAME: hdfs
export.FLINK_CONF_DIR: /usr/local/flink/conf
export.JVM_ARGS: -Djava.security.krb5.conf=/etc/krb5.conf配置 Flink 运行参数
根据集群环境修改 ${FLINK_HOME}/conf/flink-conf.yaml(在翼MR Manager中Flink的配置管理页面进行操作)。Kerberos 集群至少应核对 security.kerberos.login.use-ticket-cache、security.kerberos.login.keytab、security.kerberos.login.principal 和 security.kerberos.login.contexts等参数,示例配置:
security.kerberos.login.use-ticket-cache: true
security.kerberos.login.keytab: /etc/security/keytabs/hdfs.keytab
security.kerberos.login.principal: hdfs/<部署主机名>@<REALM名称>
security.kerberos.login.contexts: Client,KafkaClient完成配置项修改后,需保存并同步配置到Flink节点(具体操作见配置服务参数)。
YARN 场景应确认队列、日志聚合、Hadoop 配置目录和 Java 路径。以下参数也可在 Optimizer Group 的 Properties 中以 flink-conf.<key> 形式覆盖。
| 配置项 | 建议值 | 说明 |
|---|---|---|
| flink-conf.yarn.classpath.include-user-jar | DISABLED | 与 child-first 配合,降低 Amoro 与 Flink lib 中 Iceberg 版本冲突风险。 |
| flink-conf.classloader.resolve-order | child-first | 优先加载 Optimizer 作业携带的依赖。 |
| flink-conf.taskmanager.memory.managed.size | 32mb | Optimizer 不使用 Flink 状态,托管内存可按压测结果调小。 |
| flink-conf.taskmanager.memory.network.min | 32mb | Optimizer 算子间网络开销较小,可降低网络内存下限。 |
| flink-conf.taskmanager.memory.network.max | 32mb | 与 network.min 保持一致;大规模任务需结合运行指标复核。 |
| flink-conf.taskmanager.memory.process.size | 按数据量设置 | 内存不足时逐步增大,例如从 1728m 或 2g 起进行压测。 |
| flink-conf.taskmanager.numberOfTaskSlots | 1 | 单槽隔离便于控制单个 Optimizer 的资源;提高前先评估内存与并发。 |
创建 Optimizer Group
登录 WebUI,进入 Optimizing > Optimizer Groups,新增 Group 并将 Container 选择为 flinkContainer。Properties 是 Scale Out 时的默认作业参数;参数优先级为 Optimizer Group > Flink Container > flink-conf.yaml。
| 属性 | 是否必填 | 说明 |
|---|---|---|
| scheduling-policy | 否 | quota 按表配额调度;balanced 优先调度等待时间较长的表。默认 quota。 |
| ams-optimizing-uri | 否 | 表优化服务端点。当默认端点不可访问时,配置 thrift://<AMS_HOST>:1261。 |
| flink-conf.<key> | 否 | 覆盖任意 Flink 原生配置,例如内存、队列、并行度和类加载参数。 |
关联 Catalog 并启动
1、在Catalog 配置中将Optimizer Group指向新建的Flink Group,并确认目标表已启用自优化。
2、返回Optimizer Groups,单击Scale Out,设置并行度后确认。提交到YARN可能需要数分钟。
3、在Optimizers页面确认实例状态为RUNNING;同时在 YARN Application中确认作业已启动。
4、观察Pending、Executing、Committing、失败数和 TaskManager内存;确认至少一个完整优化周期能够正常完成。
运维注意事项
Scale Out无响应时,先检查ams.server-expose-host、HADOOP_CLASSPATH、HADOOP_CONF_DIR、YARN 客户端和 1261 端口连通性,其次查看日志是否有异常报错。
出现No Executor Found时,重点检查 HADOOP_CLASSPATH是否包含 hadoop classpath,以及提交账户是否能访问Hadoop/YARN配置。
删除Optimizer Group前,先解除Catalog关联并Release组内Optimizer;若外部 Application未退出,应在确认无任务提交后到YARN侧终止。
不要将真实 principal、keytab 内容、密码或集群地址写入对外文档;示例值应替换为实际环境配置,并妥善保护凭据。