Big Data

Git-like Object Storage

E se fosse possível ter um object storage como repositório, com as capacidades de um S3 e com funcionalidades de um Gitlab? 😀

“lakeFS é uma plataforma de código aberto que oferece resiliência e capacidade de gerenciamento para data lakes baseados em armazenamento por objetos. Com o lakeFS, você pode criar operações de data lake repetíveis, atômicas e com versionamento – de tarefas complexas de ETL a ciência de dados e análises. É compatível com S3 e funciona perfeitamente com Spark, Hive, Presto, etc.”

Em um cenário próximo da realidade, a implementação / movimentação de dados é algo modular e com diversas camadas, com diferentes funções e especialidades entre elas, por exemplo, a arquitetura abaixo:

Este tipo de solução pode ser o caminho na modernização de um arquitetura do jargão Datalake e permite maior nível de automatismos e gestão de “versionamentos” (uma alternativa a tradicional área de staging), talvez complementando o CI/CD, DevDataOps!

Imagens

Branches criadas para o repositório/bucket “mysql”
Objetos (arquivos/ficheiros) no branch “temp” do repositório/bucket “mysql”.
Fluxo de processamento a partir dos tópicos do Kafka (que são alimentados via Debezium / CDC), transformações e armazenamento em LakeFS.

Imagens Docker

LakeFS:

docker-compose.yaml:


version: '3'
services:
lakefs:
image: "treeverse/lakefs:latest"
ports: ["8000:8000"]
links: ["postgres"]
environment:
LAKEFS_AUTH_ENCRYPT_SECRET_KEY: "some random secret string"
LAKEFS_DATABASE_CONNECTION_STRING: postgres://lakefs:lakefs@postgres/postgres?sslmode=disable
LAKEFS_BLOCKSTORE_TYPE: local
LAKEFS_BLOCKSTORE_LOCAL_PATH: /home/lakefs
LAKEFS_GATEWAYS_S3_DOMAIN_NAME: s3.local.lakefs.io:8000
entrypoint: ["/app/wait-for", "postgres:5432", "--", "/app/lakefs", "run"]
postgres:
image: "postgres:11"
environment:
POSTGRES_USER: lakefs
POSTGRES_PASSWORD: lakefs

$ docker-compose up

Debezium:

docker run -d --name zookeeper -p 2181:2181 -p 2888:2888 -p 3888:3888 debezium/zookeeper:1.4

docker run -d --name kafka -p 9092:9092 --link zookeeper:zookeeper debezium/kafka:1.4

docker run -d --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=debezium -e MYSQL_USER=mysqluser -e MYSQL_PASSWORD=mysqlpw debezium/example-mysql:1.4

docker run -d --name connect -p 8083:8083 -e GROUP_ID=1 -e CONFIG_STORAGE_TOPIC=my_connect_configs -e OFFSET_STORAGE_TOPIC=my_connect_offsets -e STATUS_STORAGE_TOPIC=my_connect_statuses --link zookeeper:zookeeper --link kafka:kafka --link mysql:mysql debezium/connect:1.4

Apache NiFi:

docker run –name nifi -p 8080:8080 -d apache/nifi:latest

Kafdrop:

$ docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' kafka

Output: 172.17.0.3

docker run -d -p 9000:9000 \
-e KAFKA_BROKERCONNECT=172.17.0.3:9092 \
-e JVM_OPTS="-Xms32M -Xmx64M" \
-e SERVER_SERVLET_CONTEXTPATH="/" \
obsidiandynamics/kafdrop --name kafkadrop

Links:

https://lakefs.io

https://hub.docker.com/r/treeverse/lakefs

https://debezium.io

https://github.com/obsidiandynamics/kafdrop

https://github.com/obsidiandynamics/kafdrop

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google

Você está comentando utilizando sua conta Google. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s