Apache Griffin Docker Compose 部署指南

从零在 Linux 服务器上以官方 Compose 套件部署 Apache Griffin 0.6.0:内核参数 vm.max_map_count 前置、官方 compose 文件真实位置获取与 legacy v1 格式修正、apachegriffin 组件拉取实测、服务核验(version/ES/Livy/Hive 元数据),以及版本错位等常见问题的完整排障链与停止卸载清理。

Apache GriffinApacheGriffin大数据SparkDocker Compose容器化部署数据质量2026/10/15

Apache Griffin Docker Compose 部署指南

目标:在 Linux 服务器上从零通过官方 compose 套件部署 Apache Griffin 0.6.0(batch 批处理形态),覆盖内核参数前置、官方 compose 文件的真实位置获取与格式修正、组件镜像拉取实测、一键启动、服务逐项核验与停止卸载。全部命令与回显均在真实环境实测通过(Linux 服务器,docker compose v5.5.1,部署后 GET /api/v1/version 正常响应)。

一、环境信息

本指南的实测环境如下,读者在同等环境操作时回效应可完全对齐:

  • 操作系统:Linux(x86_64),root 用户
  • Docker Engine + docker compose 插件(实测 docker compose 版本 v5.5.1,拉取走代理与加速 mirror)
  • 目标版本:Apache Griffin 0.6.0 官方部署套件(代码仓 tag griffin-0.6.0)
  • 部署形态:batch 批处理套件(griffin + es 两个服务实例;streaming 变体见 4.4 节)
  • 工作目录:/root/griffin/
  • 磁盘占用:griffin 主组件包 3.9GB、elasticsearch 组件包 897MB(streaming 形态另需 kafka 495MB + zookeeper 416MB)

部署完成后的版本核验实测回显(Griffin Service 监听 38080 端口):

curl http://localhost:38080/api/v1/version
0.2.0

💡 说明:官方 0.6.0 套件的 compose 配置引用的组件包标记为 griffin_spark2:0.3.0,但内置的 Griffin Service 实际报版本 0.2.0(服务 jar 文件日期 2018-09-06)——这是官方部署物的真实状态,不影响主线功能使用,详见常见问题 Q5。

二、镜像选型说明

2.1 官方镜像矩阵与拉取实测

0.6.0 官方部署套件共引用 4 个组件包(batch 两个、streaming 四个),全部来自 apachegriffin/* 与官方通用包。逐个拉取的实测结果如下:

组件包拉取结果大小Digest(实测)
apachegriffin/griffin_spark2:0.3.0✅ 成功3.9GBsha256:536ca62f310435eb261230c8823575d5e01eb25d8dd94eea1d23431415f95ae9
apachegriffin/elasticsearch✅ 成功(tag latest,ES 5.5.2)897MBsha256:c582e97e357f0ac925d4216f5bdcf625bc14a0ad03c47bd049974084590d8006
apachegriffin/kafka(streaming 用)✅ 成功(内含 Kafka 0.8 与流式 demo 数据)495MBsha256:d8e9202d994ef01fcdec35e393211d1d63e87aa36772fdba9c8f72316b7fd9b4
zookeeper:3.5(streaming 用)✅ 成功(官方通用包)416MBsha256:abf67ca6ebb02a8ba0a81683a13210d18eebc6282c1d8b1c686bf3397e01bb57

主组件包的拉取回显(输出节选,实测):

docker pull apachegriffin/griffin_spark2:0.3.0
Digest: sha256:536ca62f310435eb261230c8823575d5e01eb25d8dd94eea1d23431415f95ae9
Status: Downloaded newer image for apachegriffin/griffin_spark2:0.3.0

该包是 all-in-one 环境:内含 MySQL、Hadoop、Hive、Spark、Livy、Griffin Service、Griffin Measure 与预置 demo 数据,以单节点 Spark 集群形态运行(官方指南原文说明)。Elasticsearch 包在官方包基础上开启了 CORS 配置,专用于指标持久化。

2.2 官方 org 现状与镜像搜索(排障实录)

按惯例尝试 apache/griffin 官方命名空间的组件包,实测不存在:

docker pull apache/griffin:latest
Error response from daemon: error from registry: denied

用 docker search 交叉核实(实测前 20 个结果):

docker search griffin

实测结果中没有 apache/griffin 与 apachegriffin/*(返回的均为无关个人包,如 cricker3/griffin、griddynamics/griffin 等,全部 0 星)。

💡 说明:结论——Apache Griffin 官方在 Docker Hub 的 apache org 下没有可直接拉取的仓库,官方发布物是 apachegriffin/* 命名空间(Griffin 项目孵化时期的命名)。选型时直接以官方 compose 配置里引用的名字为准,不要"想当然"换成 apache org。另有第三方打包(如 bhlx/griffin)实测被加速 mirror 白名单拦截,见常见问题 Q4。

三、前置条件

3.1 软件与网络要求

  • Linux 服务器,root 权限,能访问 Docker Hub(或已配置加速 mirror/代理);
  • 已安装 Docker Engine 与 docker compose 插件(本指南实测 v5.5.1);
  • 磁盘剩余空间 ≥ 6GB(batch 形态);内存建议 ≥ 4GB 空闲(官方指南对内存的建议值:Griffin 主服务内置 JVM 以 -Xmx1500m -Xms1500m 运行,另有 ES 实例);
  • 内核参数 vm.max_map_count ≥ 262144(Elasticsearch 5.x 的启动硬性要求,官方指南明确列出),见 3.2 节。

3.2 内核参数 vm.max_map_count(必做)

ES 5.5.2 启动时会检查 vm.max_map_count,低于 262144 会拒绝启动(启动日志中报 max virtual memory areas 过低的错误并退出)。实测宿主机默认值只有 65530,必须调整:

sysctl vm.max_map_count
vm.max_map_count = 65530
sysctl -w vm.max_map_count=262144
vm.max_map_count = 262144

验证手段:再次查询应返回新值:

sysctl vm.max_map_count
vm.max_map_count = 262144

⚠️ 注意:sysctl -w 只写入运行时内核,服务器重启后回退为默认值。持久化需把 vm.max_map_count=262144 追加到 /etc/sysctl.conf(或 /etc/sysctl.d/ 下的独立配置文件)后执行 sysctl -p 生效;这一步是标准 sysctl 持久化做法,请按你服务器的配置习惯落实。

四、官方 Compose 文件获取与格式修正

4.1 master 分支旧路径已 404(排障实录)

很多教程引用的 master/docker/docker-compose.yml 路径在当前仓库中已不存在,实测访问:

curl -sL https://raw.githubusercontent.com/apache/griffin/master/docker/docker-compose.yml
404: Not Found

用 GitHub API 核实 docker 目录确实不存在:

curl -sL https://api.github.com/repos/apache/griffin/contents/docker
{"message": "Not Found", "documentation_url": "...", "status": "404"}

而 master 分支根目录(实测枚举)为 dev, griffin-doc, measure, service, ui, pom.xml ...,没有 docker/ 目录。

4.2 0.6.0 官方 compose 的真实位置与下载

在 tag griffin-0.6.0 的完整文件树中检索 docker/compose 关键字,实测命中的部署相关文件为:

griffin-doc/docker/compose/docker-compose-batch.yml
griffin-doc/docker/compose/docker-compose-streaming.yml
griffin-doc/docker/griffin-docker-guide.md
service/src/main/resources/application-docker.properties

💡 技术拓展:官方套件提供 batch 与 streaming 两种部署形态——

形态服务构成数据源适用场景
batchgriffin(all-in-one)+ esHive/HDFS 分区表定期对账类质量检测(准确率/完整性/画像)
streaminggriffin + es + zk(3.5) + kafka(0.8)Kafka 流数据流式准确率/画像/时效性监控

本文采用 batch 形态:它是质量平台的主线路径、资源占用更低,且端到端检测链路已在配套实战篇完整验证;streaming 变体的文件差异见 4.4 节。

从 0.6.0 tag 下载 batch 套件到工作目录:

mkdir -p /root/griffin && cd /root/griffin
curl -sL https://raw.githubusercontent.com/apache/griffin/griffin-0.6.0/griffin-doc/docker/compose/docker-compose-batch.yml -o docker-compose-batch.yml

下载后查看内容确认(原样照抄,即官方 legacy 格式原文件):

griffin:
  image: apachegriffin/griffin_spark2:0.3.0
  hostname: griffin
  links:
    - es
  environment:
    ES_HOSTNAME: es
  volumes:
    - /var/lib/mysql
  ports:
    - 32122:2122
    - 38088:8088  # yarn rm web ui
    - 33306:3306  # mysql
    - 35432:5432  # postgres
    - 38042:8042  # yarn nm web ui
    - 39083:9083  # hive-metastore
    - 38998:8998  # livy
    - 38080:8080  # griffin ui
  tty: true
  container_name: griffin

es:
  image: apachegriffin/elasticsearch
  hostname: es
  ports:
    - 39200:9200
    - 39300:9300
  container_name: es

4.3 legacy v1 格式报错与修正(必做)

官方文件是 compose v1 时代格式——顶层直接写服务名、没有 services: 键,新版 docker compose 校验直接拒绝。实测报错:

docker compose -f griffin-compose.yml up -d
validating /root/griffin/griffin-compose.yml:
  additional properties 'griffin', 'es' not allowed

原因定位:additional properties 'griffin', 'es' not allowed 表示顶层出现了不被识别的键 griffin、es——新版 compose 只认 services: 顶层结构,不再兼容 v1 写法。

修正方法:复制一份为可运行文件 griffin-compose.yml,为全部服务加一层顶层 services: 键并整体缩进,其余内容与官方逐字一致(以下为修正后的完整内容,Apache 许可头注释略):

services:
  griffin:
    image: apachegriffin/griffin_spark2:0.3.0
    hostname: griffin
    links:
      - es
    environment:
      ES_HOSTNAME: es
    volumes:
      - /var/lib/mysql
    ports:
      - 32122:2122
      - 38088:8088  # yarn rm web ui
      - 33306:3306  # mysql
      - 35432:5432  # postgres
      - 38042:8042  # yarn nm web ui
      - 39083:9083  # hive-metastore
      - 38998:8998  # livy
      - 38080:8080  # griffin ui
    tty: true
    container_name: griffin

  es:
    image: apachegriffin/elasticsearch
    hostname: es
    ports:
      - 39200:9200
      - 39300:9300
    container_name: es

逐项说明关键配置:

  • image:主服务 all-in-one 包与 ES 包,名字必须与 2.1 节实测可得的名字一致;
  • links:legacy 网络链接写法,把 es 注入主服务的主机名解析(新项目建议用自定义网络 + 服务名,官方文件如此故保留);
  • environment.ES_HOSTNAME: es:Griffin Service 连接 ES 的主机名,与 hostname: es 对应;
  • volumes: /var/lib/mysql:匿名数据卷,持久化内置 MySQL 数据目录(详见六、);
  • ports:宿主机高位端口映射,避免与服务器已有服务冲突(详见 7.3 节端口矩阵);
  • tty: true:保持交互终端,主服务以 bootstrap 脚本拉起全套进程;
  • container_name:固定实例名 griffin/es,便于日志与核验命令。

4.4 streaming 变体(可选)

如需流处理形态,同目录下载 docker-compose-streaming.yml 并做相同的 services: 修正。其与 batch 版的服务差异(原样照抄的增量部分):

  griffin:
    links:
      - es
      - zk
      - kafka
    environment:
      ES_HOSTNAME: es
      ZK_HOSTNAME: zk
      KAFKA_HOSTNAME: kafka

  zk:
    image: zookeeper:3.5
    hostname: zk
    ports:
      - 32181:2181
    container_name: zk
    restart: always

  kafka:
    image: apachegriffin/kafka
    hostname: kafka
    ports:
      - 39092:9092
    container_name: kafka
    tty: true

💡 说明:streaming 版在 batch 版基础上增加了 ZooKeeper(流式度量协调)与 Kafka 0.8(流数据源,内含官方 demo 流数据),端口映射矩阵相应多出 32181->2181、39092->9092 两行;流式度量通过主服务内 ~/measure/streaming-accu.sh、streaming-prof.sh 脚本启动(官方指南说明)。

五、部署启动与服务核验

5.1 一键启动

在工作目录执行(先确认 3.2 节内核参数已调整、2.1 节组件包已可拉取,首次启动会自动拉取缺失包):

cd /root/griffin
docker compose -f griffin-compose.yml up -d

实测输出(退出码 0):

 Network griffin_default Creating
 Network griffin_default Created
 Container es Creating
 Container es Created
 Container griffin Creating
 Container griffin Created
 Container es Starting
 Container es Started
 Container griffin Starting
 Container griffin Started

5.2 实例状态核验

启动约 5 秒后查看实例状态:

docker compose -f griffin-compose.yml ps
NAME      IMAGE                                COMMAND                   SERVICE   CREATED         STATUS         PORTS
es        apachegriffin/elasticsearch          "/docker-entrypoint.…"   es        6 seconds ago   Up 5 seconds   0.0.0.0:39200->9200/tcp, 0.0.0.0:39300->9300/tcp
griffin   apachegriffin/griffin_spark2:0.3.0   "/etc/bootstrap-all.…"   griffin   6 seconds ago   Up 5 seconds   6066/tcp, 8030-8033/tcp, 8040/tcp, 9000/tcp, 10020/tcp, 19888/tcp, 27017/tcp, 49707/tcp, 50010/tcp, 50020/tcp, 50070/tcp, 50075/tcp, 50090/tcp, 0.0.0.0:32122->2122/tcp, 0.0.0.0:33306->3306/tcp, 0.0.0.0:35432->5432/tcp, 0.0.0.0:38042->8042/tcp, 0.0.0.0:38080->8080/tcp, 0.0.0.0:38088->8088/tcp, 0.0.0.0:38998->8998/tcp, 0.0.0.0:39083->9083/tcp

核验要点:griffin 与 es 均为 Up 状态,PORTS 列应能看到 38080、39200、38998、38088 等映射(完整端口矩阵见 7.3 节)。

5.3 启动日志与内置进程

查看主服务实例的启动日志:

docker logs griffin

日志关键行摘录(实测,bootstrap 依次拉起全套组件):

 * Starting MySQL database server mysqld                                 [ OK ]
 * Starting PostgreSQL 9.3 database server                               [ OK ]
 * Starting OpenBSD Secure Shell server sshd                             [ OK ]
Starting namenodes on [griffin]
griffin: starting namenode, logging to /apache/hadoop-2.6.5/logs/hadoop-root-namenode-griffin.out
starting yarn daemons
starting resourcemanager, logging to /apache/hadoop-2.6.5/logs/yarn--resourcemanager-griffin.out
starting org.apache.spark.deploy.master.Master, logging to /apache/spark/logs/spark--org.apache.spark.deploy.master.Master-1-griffin.out
localhost: starting org.apache.spark.deploy.worker.Worker, logging to /apache/spark/logs/spark-root-org.apache.spark.deploy.worker.Worker-1-griffin.out

启动约 2 分钟后,进入实例核实关键进程与端口(docker exec -it griffin bash 进入后执行,输出节选,... 为节选省略):

root  2159  ... org.apache.spark.deploy.master.Master --host griffin --port 7077 --webui-port 8082
root  2265  ... org.apache.spark.deploy.worker.Worker --webui-port 8081 spark://griffin:7077
root  2347  ... com.cloudera.livy.server.LivyServer
root  2545  java -jar -Xmx1500m -Xms1500m service.jar
postgres 3779 ... postgres: griffin quartz 172.22.0.3(46124) idle

监听端口核实(实例内 ss -tlnp 摘录):9083(hive metastore)、3306(mysql)、5432(postgres)、8998(livy)、8088(yarn RM)、8080(griffin service)。

💡 说明:postgres: griffin quartz ... idle 这一行证明 Griffin Service 已连上 PostgreSQL 的 quartz 调度库(调度元数据落库成功);java -jar ... service.jar 即 Griffin Service 主进程(JVM 堆为镜像内置的 1500m,复核命令 ps -ef | grep [s]ervice.jar)。服务 jar 位于 /root/service/service.jar(150278077 字节,文件日期 Sep 6 2018),运行日志在 /root/service/service.log。

5.4 HTTP 服务逐项核验

宿主机上用 curl 逐项验证各服务(全部实测回显):

Griffin Service 版本(HTTP 200):

curl http://localhost:38080/api/v1/version
0.2.0

Web UI 入口(HTTP 200,正文 1937 字节):

curl http://localhost:38080/

实测要点:返回 HTTP_CODE=200,页面标题 <title>Griffin - Data Quality Service</title>(Angular 单页应用入口,浏览器访问 http://<服务器IP>:38080 即质量平台 UI)。

Elasticsearch 集群健康(HTTP 200):

curl http://localhost:39200/_cluster/health?pretty
{"cluster_name":"elasticsearch","status":"green","number_of_nodes":1,...}

(输出节选,实测;单节点 green 为正常初始态。初始索引列表为空:)

curl http://localhost:39200/_cat/indices?v

Livy 服务(HTTP 200):

curl http://localhost:38998/batches
{"from":0,"total":0,"sessions":[]}

YARN ResourceManager 页面(HTTP 200):

curl http://localhost:38088/cluster

Griffin Service 业务 API(度量列表为空、Hive 元数据可读):

curl http://localhost:38080/api/v1/measures
[]
curl http://localhost:38080/api/v1/metadata/hive/dbs
["default"]
curl "http://localhost:38080/api/v1/metadata/hive/tables/names?db=default"
["demo_src","demo_tgt"]

核验结论:以上全部返回 200 即部署成功。measures 为空表示尚无质量度量定义;demo_src、demo_tgt 是套件启动时自动生成的 demo 数据 Hive 表(主服务节点启动时由 bootstrap 脚本写入 HDFS,含 _DONE 就绪标志文件),可直接用于配套实战篇的端到端检测。

六、数据持久化说明

官方 0.6.0 套件的持久化设计非常轻量,实测配置中仅一处数据卷:

  • griffin 服务的 volumes: /var/lib/mysql:匿名数据卷,仅持久化内置 MySQL 的数据目录(随实例删除而保留在宿主机卷区,但不会落到指定目录);
  • 其余全部数据(HDFS 上的 demo 数据与指标备份、PostgreSQL 的 quartz 调度库、ES 的指标索引)都在实例可写层内:实例删除即全部重置,重新 up -d 后 bootstrap 会重新生成 demo 数据。

⚠️ 注意:该套件定位是"开箱即用的体验/测试环境",不是持久化生产方案。如需长期保留指标与调度定义,应将 HDFS 数据目录、PostgreSQL 数据目录与 ES 数据目录改为绑定挂载(bind mount)到宿主机路径(如 /opt/data/griffin/)后再启动,并自行验证重启后的数据完整性。

七、环境变量表与配置参数说明

7.1 环境变量表

官方 compose 中声明的环境变量如下(实测文件原文):

变量值所在服务作用
ES_HOSTNAMEesgriffin(batch/streaming 均有)Griffin Service 连接 Elasticsearch 的主机名
ZK_HOSTNAMEzkgriffin(仅 streaming)流式度量连接 ZooKeeper 的主机名
KAFKA_HOSTNAMEkafkagriffin(仅 streaming)流式度量连接 Kafka 的主机名

7.2 Service 关键配置(application-docker.properties)

0.6.0 源码中 service 模块针对部署形态的预置配置为 service/src/main/resources/application-docker.properties(真实内容节选照抄):

spring.datasource.url = jdbc:postgresql://10.148.215.23:35432/quartz?autoReconnect=true&useSSL=false
spring.datasource.username = griffin
spring.datasource.password = 123456
spring.datasource.driver-class-name = org.postgresql.Driver
hive.metastore.uris = thrift://10.148.215.23:39083
kafka.schema.registry.url = http://localhost:8081
elasticsearch.host = 10.148.215.23
elasticsearch.port = 39200
elasticsearch.scheme = http
livy.uri=http://10.148.215.23:38998/batches
yarn.uri=http://10.148.215.23:38088
fs.defaultFS =

逐项说明:spring.datasource.* 指向 PostgreSQL 的 quartz 调度库(账号 griffin/123456 为官方预置默认口令,生产必须修改);hive.metastore.uris 指向 Hive 元数据服务(被检表元数据入口);elasticsearch.* 指向指标存储;livy.uri 与 yarn.uri 是度量作业的提交与调度通道;fs.defaultFS 在模板中留空。

实际生效的配置文件是启动时由模板生成的 /root/service/config/application.properties(其中占位主机名被替换为实例 hostname),实测生效值关键差异:

fs.defaultFS = hdfs://griffin:9000

即被检数据与指标备份的默认文件系统是主服务节点自身的 HDFS(这也决定了质量检测的数据路径写法,见配套实战篇)。

7.3 端口映射矩阵

宿主机实例内用途
380808080griffin service(REST API + UI 同端口)
39200/393009200/9300elasticsearch
389988998livy
380888088yarn resourcemanager web ui
380428042yarn nodemanager web ui
390839083hive metastore thrift
333063306mysql
354325432postgresql
321222122ssh(streaming 版另有 39092->9092 kafka、32181->2181 zk)

💡 说明:所有服务端口都映射在 3 万段高位,避免与宿主机已有服务冲突;对外访问只需记住 38080(平台入口)与 39200(指标检索)两个即可,其余为内部组件排障用。

八、等价 docker run 命令

若不使用 compose,也可以用等价的 docker run 命令逐个启动两个服务(命令由 4.3 节 compose 配置逐项改写而来,效果一致;-t 对应 tty: true):

docker run -d --name es --hostname es \
  -p 39200:9200 -p 39300:9300 \
  apachegriffin/elasticsearch
docker run -d -t --name griffin --hostname griffin --link es:es \
  -e ES_HOSTNAME=es -v /var/lib/mysql \
  -p 32122:2122 -p 38088:8088 -p 33306:3306 -p 35432:5432 \
  -p 38042:8042 -p 39083:9083 -p 38998:8998 -p 38080:8080 \
  apachegriffin/griffin_spark2:0.3.0

启动后用 docker ps 核验实例状态与端口映射,期望状态与 5.2 节实测回显一致(两个实例均为 Up、端口映射完整)。生产与长期实验仍建议统一使用 compose 管理,便于一键启停与配置沉淀。

九、常用运维命令

日常启停与观察命令汇总(均在 /root/griffin/ 下执行):

操作命令实测要点
查看实例状态docker compose -f griffin-compose.yml ps回显见 5.2 节,重点看 STATUS 是否 Up
查看主服务日志docker logs griffin回显见 5.3 节,bootstrap 各组件启动行
进入主服务排查docker exec -it griffin bash服务日志在 /root/service/service.log
再次启动(停止后)docker compose -f griffin-compose.yml start已有实例重新拉起,数据保留
停止(保留实例)docker compose -f griffin-compose.yml stop实例与数据卷保留,ps 状态变 Exited
彻底移除实例docker compose -f griffin-compose.yml down移除实例与网络,镜像保留,详见十、

停止后再核验的手段:docker compose -f griffin-compose.yml ps 应不再显示 Up 状态实例;curl -m 2 http://localhost:38080/api/v1/version 应连接失败(服务已停)。

十、常见问题(FAQ)

Q1:docker pull apache/griffin:latest 报 denied 怎么办? 现象:Error response from daemon: error from registry: denied。定位:Apache 官方 org 下没有 griffin 仓库(docker search griffin 前 20 结果也无官方包,见 2.2 节实测)。解决:使用官方部署配置引用的 apachegriffin/* 命名空间包(griffin_spark2、elasticsearch、kafka)与官方通用包 zookeeper:3.5。

Q2:拉取第三方 griffin 包报"不在白名单"? 现象:docker pull bhlx/griffin 报 Error response from daemon: error from registry: 🚫 👀-> https://github.com/DaoCloud/public-image-mirror/issues/2328 🔗 这镜像不在白名单. this image is not in the allowlist.。定位:宿主机 Docker daemon 配置了 DaoCloud 加速 mirror,mirror 侧按白名单放行,第三方包未收录。解决:改用 apachegriffin/* 官方包;如确需第三方包,需在 daemon 配置中为 registry 域名直连(修改 mirror 配置后重启 Docker),本文不建议。

Q3:docker compose up -d 报 additional properties 'griffin', 'es' not allowed? 现象与定位:见 4.3 节——官方 0.6.0 文件是 compose v1 legacy 格式,顶层无 services: 键,新版 docker compose 校验失败。解决:按 4.3 节为文件补顶层 services: 键并整体缩进即可,其余内容不改。

Q4:教程里的 master/docker/docker-compose.yml 路径 404? 现象与定位:见 4.1 节实测,master 分支已无 docker/ 目录。解决:改从 tag griffin-0.6.0 的 griffin-doc/docker/compose/ 目录获取(4.2 节给出下载命令与文件内容)。

Q5:组件包标记 0.3.0,服务为什么报 0.2.0? 现象:GET /api/v1/version 返回 0.2.0,而 compose 文件引用 griffin_spark2:0.3.0;服务 jar 文件日期 2018-09-06。定位:0.6.0 官方部署配置自 2018 年后未随版本升级内置组件,属官方部署物的真实版本错位。影响:主线功能(度量/调度/指标)不受影响,但 0.6.0 服务端新增 API 不可用(实测 POST /api/v1/jobs/trigger/:id 返回 404,而 0.6.0 官方接口文档有此 API)。解决:体验主线用官方套件即可;需要新 API 特性须自行用 0.6.0 源码构建 service/measure 替换。

Q6:ES 实例启动失败或反复重启? 现象:es 实例状态非 Up,日志报 max virtual memory areas 相关错误。定位:内核参数 vm.max_map_count 低于 262144(ES 5.x 硬性要求,实测宿主机默认 65530)。解决:执行 sysctl -w vm.max_map_count=262144(3.2 节实测回显),并按 3.2 节提示持久化到 /etc/sysctl.conf;内存受限环境还可按官方指南给 ES 降配(在 ES 的 jvm.options 中设置 -Xms512m -Xmx512m)。

Q7:ES 集群健康为什么是 yellow? 现象:_cluster/health 返回 status:green 为初始态,写入指标后索引健康为 yellow。定位:默认索引 5 主分片 1 副本,单节点环境下副本分片无法分配,yellow 属预期。解决:体验环境无需处理;生产按集群规模调整副本数或部署多节点。

Q8:up 之后立刻 curl 38080 失败? 定位:主服务 bootstrap 需按序拉起 MySQL、PostgreSQL、SSH、Hadoop、Spark、Livy 等全套进程,实测约 2 分钟后 service.jar 进程才就绪(5.3 节进程回显)。解决:等待约 2 分钟后再执行 5.4 节核验;若超时仍未就绪,用 docker logs griffin 与实例内 ps -ef | grep [s]ervice.jar 定位。

十一、卸载与清理

停止并彻底移除部署物(按需执行,每条独立操作):

docker compose -f griffin-compose.yml stop
docker compose -f griffin-compose.yml down

down 会移除 griffin、es 实例与 griffin_default 网络,镜像仍保留在宿主机;确认不再使用后按名称删除四个组件包:

docker rmi apachegriffin/griffin_spark2:0.3.0
docker rmi apachegriffin/elasticsearch

(streaming 形态部署过的,另删 apachegriffin/kafka 与 zookeeper:3.5。)最后删除工作目录中的 compose 文件:

rm -f /root/griffin/griffin-compose.yml /root/griffin/docker-compose-batch.yml

清理核验:docker images | grep griffin 应无 apachegriffin/* 条目;docker ps -a | grep -E 'griffin|es' 应无相关实例。内核参数如需回退,sysctl -w vm.max_map_count=65530 恢复默认(或从 /etc/sysctl.conf 移除对应行后 sysctl -p)。

十二、参考链接