El panorama de datos moderno exige un nuevo tipo de infraestructura, una que integre perfectamente datos estructurados y no estructurados, escale sin esfuerzo y potencie cargas de trabajo de IA/ML eficientes. Aquí es donde
Esta publicación de blog profundiza en tres poderosas herramientas que pueden optimizar su enfoque actual:
Tabular es una plataforma de datos creada por los creadores originales de Apache Iceberg. Está diseñado para proporcionar una plataforma de almacenamiento universal e independiente que se conecta a cualquier capa informática, eliminando la dependencia del proveedor de datos. Esta característica es fundamental para la pila de datos moderna, ya que permite a los usuarios elegir las mejores herramientas informáticas y de almacenamiento de su clase sin verse obligados a utilizar un conjunto de herramientas antiguo o no coincidente de un proveedor en particular.
en un
Esta implementación aprovecha S3FileIO de Iceberg. S3FileIO se considera mejor que file-io de Hadoop por varias razones. Algunos de los cuales ya hemos discutido
Optimizado para almacenamiento en la nube : S3FileIO de Iceberg está diseñado para funcionar con almacenamiento nativo en la nube.
Rendimiento mejorado y limitación minimizada: Iceberg utiliza un
Consistencia estricta: Iceberg ha sido
Carga progresiva multiparte: S3FileIO de Iceberg implementa una
Verificación de suma de comprobación: Iceberg permite
Etiquetas personalizadas: Iceberg admite la adición
Evitar el almacenamiento en caché negativo: la interfaz FileIO en Iceberg no requiere garantías tan estrictas como un sistema de archivos compatible con Hadoop, lo que le permite
Por el contrario, el S3A FileSystem de Hadoop, que se utilizaba antes de S3FileIO, no ofrece el mismo nivel de optimización para el almacenamiento en la nube. Todo esto para decir: no limite su infraestructura de lago de datos de cara al futuro con las trampas del pasado.
Antes de comenzar, asegúrese de que su sistema cumpla con los siguientes requisitos:
Si está comenzando desde cero, puede instalar ambos usando el
docker-compose --version
Para comenzar, clone o copie el archivo YAML en Tabular.
El archivo YAML proporcionado es un archivo de configuración de Docker Compose. Define un conjunto de servicios y sus configuraciones para una aplicación Docker de múltiples contenedores. En este caso, existen dos servicios: Spark-Iceberg y MinIO. Analicemos cada sección:
1. Servicio Spark-Iceberg:
spark-iceberg: image: tabulario/spark-iceberg container_name: spark-iceberg build: spark/ networks: iceberg_net: depends_on: - rest - minio volumes: - ./warehouse:/home/iceberg/warehouse - ./notebooks:/home/iceberg/notebooks/notebooks environment: - AWS_ACCESS_KEY_ID=admin - AWS_SECRET_ACCESS_KEY=password - AWS_REGION=us-east-1 ports: - 8888:8888 - 8080:8080 - 10000:10000 - 10001:10001 rest: image: tabulario/iceberg-rest container_name: iceberg-rest networks: iceberg_net: ports: - 8181:8181 environment: - AWS_ACCESS_KEY_ID=admin - AWS_SECRET_ACCESS_KEY=password - AWS_REGION=us-east-1 - CATALOG_WAREHOUSE=s3://warehouse/ - CATALOG_IO__IMPL=org.apache.iceberg.aws.s3.S3FileIO - CATALOG_S3_ENDPOINT=http://minio:9000
imagen: especifica la imagen de Docker que se utilizará para el servicio spark-iceberg. En este caso, utiliza el tabulario/spark-iceberg:latest image.
depende_on: especifica que el servicio spark-iceberg depende de los servicios rest y minio.
nombre_contenedor: Asigna un nombre específico (spark-iceberg) al contenedor.
entorno: establece variables de entorno para el contenedor, incluidas las credenciales de Spark y AWS.
volúmenes: monta directorios locales (./warehouse y ./notebooks) como volúmenes dentro del contenedor.
puertos: asigna puertos de contenedores a puertos de host para acceder a Spark UI y otros servicios.
2. Servicio Minio:
minio: image: minio/minio container_name: minio environment: - MINIO_ROOT_USER=admin - MINIO_ROOT_PASSWORD=password - MINIO_DOMAIN=minio networks: iceberg_net: aliases: - warehouse.minio ports: - 9001:9001 - 9000:9000 command: ["server", "/data", "--console-address", ":9001"]
imagen: especifica la imagen de Docker para el servicio MinIO.
nombre_contenedor: Asigna un nombre específico (MinIO) al contenedor.
entorno: establece variables de entorno para configurar MinIO, incluidas las credenciales de usuario raíz.
puertos: asigna puertos de contenedores a puertos de host para acceder a la interfaz de usuario de MinIO.
Comando: especifica el comando para iniciar el servidor MinIO con parámetros específicos.
Otro aspecto del servicio MinIO es
mc: depends_on: - minio image: minio/mc container_name: mc networks: iceberg_net: environment: - AWS_ACCESS_KEY_ID=admin - AWS_SECRET_ACCESS_KEY=password - AWS_REGION=us-east-1 entrypoint: > /bin/sh -c " until (/usr/bin/mc config host add minio http://minio:9000 admin password) do echo '...waiting...' && sleep 1; done; /usr/bin/mc rm -r --force minio/warehouse; /usr/bin/mc mb minio/warehouse; /usr/bin/mc policy set public minio/warehouse; tail -f /dev/null "
depende_on: especifica que el servicio mc depende del servicio MinIO.
imagen: especifica la imagen de Docker para el servicio mc.
nombre_contenedor: Asigna un nombre específico (mc) al contenedor.
entorno: establece variables de entorno para configurar el cliente MinIO.
punto de entrada: define el comando del punto de entrada para el contenedor, incluidos los pasos de configuración para el cliente MinIO.
/usr/bin/mc rm -r --force minio/warehouse; /usr/bin/mc mb minio/warehouse; /usr/bin/mc policy set public minio/warehouse; tail -f /dev/null "
Esta secuencia de comandos esencialmente realiza las siguientes tareas:
Elimina el directorio de almacén existente y su contenido del servidor MinIO.
Crea un nuevo depósito llamado almacén.
Establece la política de acceso del depósito de almacén como pública.
Este archivo Docker Compose organiza un entorno de múltiples contenedores con servicios para Spark, PostgreSQL y MinIO. Configura dependencias, variables de entorno y comandos necesarios para ejecutar los servicios juntos. Los servicios funcionan en conjunto para crear un entorno de desarrollo para el procesamiento de datos utilizando Spark e Iceberg con MinIO como backend de almacenamiento de objetos.
En una ventana de terminal, ingrese al directorio tabular-spark-setup en el repositorio y ejecute el siguiente comando:
docker-compose up
Inicie sesión en MinIO en http://127.0.0.1:9001
con las credenciales admin:password
para ver que se ha creado el depósito de almacén.
Una vez que todos los contenedores estén en funcionamiento, puede acceder a su servidor Jupyter Notebook navegando a http://localhost:8888
Ejecute uno de los cuadernos de muestra y regrese a MinIO en http://127.0.0.1:9001
para ver su almacén lleno de datos.
Este tutorial sobre cómo construir un lago de datos moderno con Iceberg, Tabular y MinIO es solo el comienzo. Este poderoso trío abre puertas a un mundo de posibilidades. Con estas herramientas, puede integrar y analizar sin problemas todos sus datos, estructurados y no estructurados, para descubrir patrones ocultos e impulsar decisiones basadas en datos que impulsen la innovación. Aproveche la eficiencia y la flexibilidad de esta arquitectura en producción para acelerar sus iniciativas de IA/ML y desbloquear el verdadero potencial de sus modelos de aprendizaje automático, acelerando su camino hacia descubrimientos innovadores. Comuníquese con nosotros en