使用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

使用minio 做为lakefs 的数据存储

 

 

  • lakefs repo

使用minio 做为lakefs 的数据存储

 

 

  • dremio 查询

使用minio 做为lakefs 的数据存储

 

 

说明

lakefs 设计上的问题,对于分支未提交的文件在s3中是可以看到的,这样对于基于流程管理的比较方便,我们会基于特定分支创建新的分支,然后进行管理
但是有时未提交文件直接可见可能不会很好(容易造成数据的不一致,已经赃数据),lakefs 的数据存储是比较有意思的,使用了sstable,比较高效,目
前一个问题是官方的部署需要依赖一个pg,官方也在逐步去除pg
一个s3数据存储的效果

使用minio 做为lakefs 的数据存储

 

 


以上使用了自己构建的一个版本的lakefs,当时主要是为了支持http (minio) 同时还添加了一个配置,但是后边发现官方是直接支持的,所以使用的时候可以直接走官方镜像

参考资料

https://docs.lakefs.io/understand/architecture.html
https://docs.lakefs.io/understand/data-model.html

上一篇:Java笔记12: String,StringBuffer与StringBuilder的区别


下一篇:Docker 部署Minio