使用minio 做为lakefs 的数据存储
lakefs 提供了专门的存储adapter,所以支持各类还是比较方便的,官方已经内置了不少存储适配
以下是简单的集成minio
环境准备
- docker-compose文件
注意集成了dremio,dremio 添加了jprofiler扩展
version: '3'
services:
lakefs:
image: dalongrong/lakefs:dev-2022-02-09
ports:
- "8000:8000"
depends_on:
- "postgres"
environment:
- LAKEFS_AUTH_ENCRYPT_SECRET_KEY=${LAKEFS_AUTH_ENCRYPT_SECRET_KEY:-some random secret string}
- LAKEFS_DATABASE_CONNECTION_STRING=${LAKEFS_DATABASE_CONNECTION_STRING:-postgres://lakefs:lakefs@postgres/postgres?sslmode=disable}
- LAKEFS_BLOCKSTORE_TYPE=${LAKEFS_BLOCKSTORE_TYPE:-s3}
- LAKEFS_BLOCKSTORE_LOCAL_PATH=${LAKEFS_BLOCKSTORE_LOCAL_PATH:-/home/lakefs}
- LAKEFS_GATEWAYS_S3_DOMAIN_NAME=${LAKEFS_GATEWAYS_S3_DOMAIN_NAME:-s3.local.lakefs.io:8000}
- LAKEFS_BLOCKSTORE_S3_CREDENTIALS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID:-minio}
- LAKEFS_BLOCKSTORE_S3_CREDENTIALS_ACCESS_SECRET_KEY=${AWS_SECRET_ACCESS_KEY:-minio123}
- LAKEFS_LOGGING_LEVEL=${LAKEFS_LOGGING_LEVEL:-INFO}
- LAKEFS_STATS_ENABLED
- LAKEFS_BLOCKSTORE_S3_ENDPOINT=http://s3:9000
- LAKEFS_BLOCKSTORE_S3_FORCE_PATH_STYLE=true
- LAKEFS_COMMITTED_LOCAL_CACHE_DIR=${LAKEFS_COMMITTED_LOCAL_CACHE_DIR:-/home/lakefs/.local_tier}
entrypoint:
[
"/app/wait-for",
"postgres:5432",
"--",
"/app/lakefs",
"run"
]
postgres:
image: "postgres:${PG_VERSION:-11}"
command: "-c log_min_messages=FATAL"
ports:
- "5432:5432"
environment:
POSTGRES_USER: lakefs
POSTGRES_PASSWORD: lakefs
logging:
driver: none
dremio:
build: ./
ports:
- "9047:9047"
- "31010:31010"
s3:
image: minio/minio
environment:
- "MINIO_ACCESS_KEY=minio"
- "MINIO_SECRET_KEY=minio123"
command: server /data --console-address ":9001"
ports:
- "9000:9000"
- "9001:9001"
dremio dockerfile
FROM dremio/dremio-oss:20.1.0
USER root
COPY dremio-env /opt/dremio/conf/dremio-env
COPY jprofiler_linux_12_0_4.deb /opt/jprofiler_linux_12_0_4.deb
RUN dpkg -i /opt/jprofiler_linux_12_0_4.deb
USER dremio
启动
启动比较简单docker-compose 就行了,但是需要配置lakefs 以及dremio(比较简单)
lakefs http://localhost:8000/setup
dremio http://localhost:9047
使用
目前lakefs 对于s3 的处理是需要先创建好bucket的,然后才能创建repo
- s3 bucket
- lakefs repo
- dremio 查询
说明
lakefs 设计上的问题,对于分支未提交的文件在s3中是可以看到的,这样对于基于流程管理的比较方便,我们会基于特定分支创建新的分支,然后进行管理
但是有时未提交文件直接可见可能不会很好(容易造成数据的不一致,已经赃数据),lakefs 的数据存储是比较有意思的,使用了sstable,比较高效,目
前一个问题是官方的部署需要依赖一个pg,官方也在逐步去除pg
一个s3数据存储的效果
以上使用了自己构建的一个版本的lakefs,当时主要是为了支持http (minio) 同时还添加了一个配置,但是后边发现官方是直接支持的,所以使用的时候可以直接走官方镜像
参考资料
https://docs.lakefs.io/understand/architecture.html
https://docs.lakefs.io/understand/data-model.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
2021-02-10 dremio 与apache drill 的一些区别
2021-02-10 基于json lines 进行数据交换
2021-02-10 使用idea 自带的工具反编译jar包
2020-02-10 pgspider oracle fdw docker 镜像简单使用说明
2020-02-10 pgspider tds fdw sql server docker 镜像中文乱码问题解决
2019-02-10 awesome-workflow-engines
2019-02-10 Next generation configuration mgmt