Apache Griffin Docker Compose 部署指南
从零在 Linux 服务器上以官方 Compose 套件部署 Apache Griffin 0.6.0:内核参数 vm.max_map_count 前置、官方 compose 文件真实位置获取与 legacy v1 格式修正、apachegriffin 组件拉取实测、服务核验(version/ES/Livy/Hive 元数据),以及版本错位等常见问题的完整排障链与停止卸载清理。
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.9GB | sha256:536ca62f310435eb261230c8823575d5e01eb25d8dd94eea1d23431415f95ae9 |
| apachegriffin/elasticsearch | ✅ 成功(tag latest,ES 5.5.2) | 897MB | sha256:c582e97e357f0ac925d4216f5bdcf625bc14a0ad03c47bd049974084590d8006 |
| apachegriffin/kafka(streaming 用) | ✅ 成功(内含 Kafka 0.8 与流式 demo 数据) | 495MB | sha256:d8e9202d994ef01fcdec35e393211d1d63e87aa36772fdba9c8f72316b7fd9b4 |
| zookeeper:3.5(streaming 用) | ✅ 成功(官方通用包) | 416MB | sha256: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 的
apacheorg 下没有可直接拉取的仓库,官方发布物是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 两种部署形态——
形态 服务构成 数据源 适用场景 batch griffin(all-in-one)+ es Hive/HDFS 分区表 定期对账类质量检测(准确率/完整性/画像) streaming griffin + 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_HOSTNAME | es | griffin(batch/streaming 均有) | Griffin Service 连接 Elasticsearch 的主机名 |
| ZK_HOSTNAME | zk | griffin(仅 streaming) | 流式度量连接 ZooKeeper 的主机名 |
| KAFKA_HOSTNAME | kafka | griffin(仅 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 端口映射矩阵
| 宿主机 | 实例内 | 用途 |
|---|---|---|
| 38080 | 8080 | griffin service(REST API + UI 同端口) |
| 39200/39300 | 9200/9300 | elasticsearch |
| 38998 | 8998 | livy |
| 38088 | 8088 | yarn resourcemanager web ui |
| 38042 | 8042 | yarn nodemanager web ui |
| 39083 | 9083 | hive metastore thrift |
| 33306 | 3306 | mysql |
| 35432 | 5432 | postgresql |
| 32122 | 2122 | ssh(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)。
十二、参考链接
- Apache Griffin 官网:https://griffin.apache.org/
- 官方代码仓库:https://github.com/apache/griffin
- 0.6.0 tag 官方 compose 目录:https://github.com/apache/griffin/tree/griffin-0.6.0/griffin-doc/docker/compose
- 官方部署指南(0.6.0 tag 内
griffin-doc/docker/griffin-docker-guide.md):https://github.com/apache/griffin/blob/griffin-0.6.0/griffin-doc/docker/griffin-docker-guide.md - 官方 REST 接口 postman 集合(0.6.0 tag 内
griffin-doc/service/postman/griffin.json):https://github.com/apache/griffin/tree/griffin-0.6.0/griffin-doc/service/postman - 本专栏配套文档:《Apache Griffin 介绍与核心概念详解》《Apache Griffin 数据质量实战详解》