5分钟部署Venice集群:Docker单机数据中心快速上手教程
【免费下载链接】veniceVenice, Derived Data Platform for Planet-Scale Workloads.项目地址: https://gitcode.com/gh_mirrors/venic/venice
Venice 是 LinkedIn 开源的派生数据平台(Derived Data Platform),专为行星级别工作负载设计。本文将带你使用 Docker 在 5 分钟内部署一个 Venice 集群(单机数据中心模式),完成从创建 Store、批量推送数据到查询读取的完整流程,新手零门槛即可上手。
一、Venice 是什么?为什么选择它?
💡 先用一句话理解 Venice:一个把 Kafka、ZooKeeper 和自研存储引擎组合起来的分布式键值存储系统。
它适合以下场景:
- 批量 + 实时数据融合:先全量推送一批数据,再持续摄入 Kafka 实时流,自动合并
- 多数据中心主动复制:跨 DC 容错,确定性冲突解决
- 读写计算:支持 Write-Compute 和 Read-Compute,减少数据移动
二、集群架构:Docker Compose 拉起 6 个容器
Docker 单机部署文件位于docker/docker-compose-single-dc-setup.yaml,一键启动 6 个容器,按依赖顺序自动编排:
| 组件 | 镜像 | 职责 |
|---|---|---|
| ZooKeeper | venicedb/apache-zookeeper | 分布式协调服务 |
| Kafka | venicedb/apache-kafka | 实时数据流与元数据通道 |
| Venice Controller | venicedb/venice-controller | 集群管理大脑,处理建 Store 等请求 |
| Venice Server | venicedb/venice-server | 存储引擎,负责数据摄入与存储 |
| Venice Router | venice-router | 读写请求的流量入口 |
| Venice Client | venicedb/venice-client | 预装管理工具与示例数据的"操作台" |
每个容器都配置了健康检查(healthcheck),只有前一个组件健康后,下一个才会启动,因此不需要手动控制启动顺序。
三、部署步骤(全程约 5 分钟)
第 1 步:安装 Docker 并克隆仓库
确认本机已安装 Docker Engine 与 Docker Compose 并正在运行。然后克隆 Venice 仓库:
git clone https://gitcode.com/gh_mirrors/venic/venice cd venice/docker第 2 步:一条命令启动 Venice 集群
docker-compose -f docker-compose-single-dc-setup.yaml up -d首次运行会拉取 6 个镜像,耗时取决于网络。启动完成后会自动创建一个名为venice-cluster的测试集群。可以用以下命令确认所有容器均已 Running:
docker-compose -f docker-compose-single-dc-setup.yaml ps第 3 步:进入客户端容器
docker exec -it venice-client bash客户端容器预装了venice-admin-tool管理工具和示例数据,后续所有操作都在这里完成。
第 4 步:创建你的第一个 Store
Store 是 Venice 中数据的基本组织单位。使用示例脚本(docker/venice-client/create-store.sh)创建名为test-store的 Store,键值 Schema 均为 string 类型:
./create-store.sh http://venice-controller:5555 venice-cluster0 test-store \ sample-data/schema/keySchema.avsc sample-data/schema/valueSchema.avsc该脚本同时开启了增量推送(incremental push)并设置无限存储配额,为后续步骤做准备。
第 5 步:批量推送 100 条数据
Venice 的批量推送由VPJ(Venice Push Job)完成。示例数据为 100 条键值对(key: 1~100,value: val1~val100),配置文件位于docker/venice-client/sample-data/single-dc-configs/batch-push-job.properties:
# 先看看数据长什么样(可选) ./avro-to-json.sh sample-data/batch-push-data/kv_records.avro # 执行批量推送 ./run-vpj.sh sample-data/single-dc-configs/batch-push-job.properties推送成功后,数据即完成"全量摄入",可被查询。
第 6 步:两种客户端查询数据
Venice 提供两种读取方式,演示脚本都在docker/venice-client/目录下:
方式 A:Thin Client(经 Router 路由)
./fetch.sh http://venice-router:7777 test-store 1 # 输出: # key=1 # value=val1方式 B:Fast Client(直连存储节点,绕过 Router)
Fast Client 通过服务发现直连 Server,延迟更低,但需要先在 Store 上开启存储节点读配额:
java -jar /opt/venice/bin/venice-admin-tool-all.jar --update-store \ --url http://venice-controller:5555 --cluster venice-cluster0 \ --store test-store --storage-node-read-quota-enabled true ./fast-client-fetch.sh test-store 1📌 查询不存在的 key(如 101)会返回
value=null,这是正常行为。
第 7 步:体验增量推送(Incremental Push)
这是 Venice 的招牌能力:更新 91~100 的值,并新增 101~110 的行,一条命令完成:
./run-vpj.sh sample-data/single-dc-configs/inc-push-job.properties再次查询即可看到效果:
./fetch.sh http://venice-router:7777 test-store 100 # value=val100_v1 ← 已被更新 ./fetch.sh http://venice-router:7777 test-store 101 # value=val101 ← 新增的行批量 + 增量 =Lambda 架构中的批流融合,Venice 自动帮你合并。
四、关闭集群
演示完毕,回到宿主机执行:
docker-compose -f docker-compose-single-dc-setup.yaml down所有容器与数据会被清理,随时可以再次up起来。
五、常见问题(FAQ)
Q1:启动后部分容器显示 restarting,怎么办?等 1~2 分钟再查看,镜像拉取或 Kafka 初始化需要时间。可执行docker logs kafka查看具体日志。
Q2:./run-vpj.sh推送卡住不动?检查venice-controller容器是否 Running,推送任务需要 Controller 协调创建 Kafka topic。
Q3:如何修改推送数据量或数据内容?替换sample-data/batch-push-data/下的 Avro 文件,并修改batch-push-job.properties中的input.path即可。
Q4:想体验多数据中心部署?仓库中还提供了docker/docker-compose-multi-dc-setup.yaml,可一键拉起双数据中心集群,相关文档见docs/getting-started/deployments/quickstart-multi-dc.md。
六、下一步学习
本教程的完整官方指南在docs/getting-started/deployments/quickstart-single-dc.md。跑通单机部署后,建议继续探索:
- 📖写入 API 全览:在线生产者、Stream Processor 等(
docs/user-guide/write-apis/index.md) - 📖读取 API 对比:Thin Client 与 Fast Client 的选型(
docs/user-guide/read-apis/index.md) - 📖架构原理:Venice 如何做到批流融合(
docs/getting-started/learn-venice/architecture-overview.md)
恭喜!你已经在 5 分钟内拥有了一个可用的 Venice 集群。🎉
【免费下载链接】veniceVenice, Derived Data Platform for Planet-Scale Workloads.项目地址: https://gitcode.com/gh_mirrors/venic/venice
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考