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

  • 相关阅读:
    JS进阶篇2---函数防抖(debounce)
    vue 的"响应式"是什么意思/ Object.freeze( ) 阻止数据响应
    try{...}catch(){...}语句的使用
    总结一下ES6的promise
    《ES6标准入门》(六)之Promise对象2——then()和catch()方法
    大白话讲解Promise(一)
    解决VSCode单击文件会替换已经打开文件的问题
    通俗理解“回调函数”
    vue中的时间格式处理
    vue之项目踩坑笔记
  • 原文地址:https://www.cnblogs.com/rongfengliang/p/15878502.html
Copyright © 2020-2023  润新知