Bối cảnh dữ liệu hiện đại đòi hỏi một loại cơ sở hạ tầng mới – một loại cơ sở hạ tầng tích hợp liền mạch dữ liệu có cấu trúc và không cấu trúc, mở rộng quy mô một cách dễ dàng và hỗ trợ khối lượng công việc AI/ML hiệu quả. Đây là đâu
Bài đăng trên blog này đi sâu vào ba công cụ mạnh mẽ có thể tối ưu hóa phương pháp tiếp cận hiện tại của bạn:
Tabular là một nền tảng dữ liệu được tạo ra bởi những người sáng tạo ban đầu của Apache Iceberg. Nó được thiết kế để cung cấp một nền tảng lưu trữ phổ quát, độc lập, kết nối với bất kỳ lớp điện toán nào, loại bỏ sự khóa chặt của nhà cung cấp dữ liệu. Tính năng này rất quan trọng đối với ngăn xếp dữ liệu hiện đại. Nó cho phép người dùng chọn các công cụ lưu trữ và tính toán tốt nhất mà không bị buộc phải sử dụng bộ công cụ cũ và hoặc không khớp của một nhà cung cấp cụ thể.
trong một
Việc triển khai này tận dụng S3FileIO của Iceberg. S3FileIO được coi là tốt hơn file-io của Hadoop vì nhiều lý do. Một số trong đó chúng tôi đã thảo luận
Tối ưu hóa cho lưu trữ đám mây : S3FileIO của Iceberg được thiết kế để hoạt động với bộ lưu trữ gốc trên đám mây.
Cải thiện thông lượng và giảm thiểu điều tiết: Iceberg sử dụng
Tính nhất quán chặt chẽ: Iceberg đã được
Tải lên nhiều phần lũy tiến: S3FileIO của Iceberg triển khai một
Xác minh tổng kiểm tra: Iceberg cho phép
Thẻ tùy chỉnh: Iceberg hỗ trợ thêm
Tránh bộ đệm âm: Giao diện FileIO trong Iceberg không yêu cầu đảm bảo nghiêm ngặt như Hệ thống tệp tương thích với Hadoop, cho phép nó
Ngược lại, Hệ thống tệp S3A của Hadoop, được sử dụng trước S3FileIO, không cung cấp cùng mức độ tối ưu hóa cho lưu trữ đám mây. Tất cả những điều này muốn nói: Đừng làm cản trở cơ sở hạ tầng hồ dữ liệu hướng tới tương lai của bạn bằng những cạm bẫy trong quá khứ.
Trước khi bắt đầu, hãy đảm bảo hệ thống của bạn đáp ứng các yêu cầu sau:
Nếu bạn đang bắt đầu từ đầu, bạn có thể cài đặt cả hai bằng cách sử dụng
docker-compose --version
Để bắt đầu, hãy sao chép hoặc sao chép tệp YAML trong Tabular's
Tệp YAML được cung cấp là tệp cấu hình Docker Compose. Nó xác định một tập hợp các dịch vụ và cấu hình của chúng cho ứng dụng Docker nhiều container. Trong trường hợp này, có hai dịch vụ: Spark-Iceberg và MinIO. Hãy chia nhỏ từng phần:
1. Dịch vụ 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
image: Chỉ định hình ảnh Docker để sử dụng cho dịch vụ spark-iceberg. Trong trường hợp này, nó sử dụng hình ảnh tabulario/spark-iceberg:latest.
phụ thuộc_on: Chỉ định rằng dịch vụ spark-iceberg phụ thuộc vào phần còn lại và dịch vụ minio.
container_name: Gán một tên cụ thể (spark-iceberg) cho vùng chứa.
môi trường: Đặt các biến môi trường cho vùng chứa, bao gồm thông tin đăng nhập Spark và AWS.
tập: Gắn các thư mục cục bộ (./warehouse và ./notebooks) dưới dạng các tập bên trong vùng chứa.
cổng: Ánh xạ các cổng container tới các cổng máy chủ để truy cập Spark UI và các dịch vụ khác.
2. Dịch vụ 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"]
image: Chỉ định hình ảnh Docker cho dịch vụ MinIO.
container_name: Gán một tên cụ thể (MinIO) cho vùng chứa.
môi trường: Đặt các biến môi trường để định cấu hình MinIO, bao gồm thông tin đăng nhập của người dùng root.
cổng: Ánh xạ các cổng container tới các cổng máy chủ để truy cập giao diện người dùng MinIO.
lệnh: Chỉ định lệnh khởi động máy chủ MinIO với các tham số cụ thể.
Một khía cạnh khác của dịch vụ MinIO là
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 "
phụ thuộc_on: Chỉ định rằng dịch vụ mc phụ thuộc vào dịch vụ MinIO.
image: Chỉ định hình ảnh Docker cho dịch vụ mc.
container_name: Gán tên cụ thể (mc) cho vùng chứa.
môi trường: Đặt các biến môi trường để định cấu hình máy khách MinIO.
điểm vào: Xác định lệnh điểm vào cho vùng chứa, bao gồm các bước thiết lập cho máy khách 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 "
Chuỗi lệnh này về cơ bản thực hiện các nhiệm vụ sau:
Xóa thư mục kho hiện có và nội dung của nó khỏi máy chủ MinIO.
Tạo một nhóm mới có tên là kho.
Đặt chính sách truy cập của nhóm kho thành công khai.
Tệp Docker Compose này phối hợp môi trường nhiều vùng chứa với các dịch vụ cho Spark, PostgreSQL, MinIO. Nó thiết lập các phần phụ thuộc, biến môi trường và các lệnh cần thiết để chạy các dịch vụ cùng nhau. Các dịch vụ này hoạt động song song để tạo môi trường phát triển xử lý dữ liệu bằng Spark và Iceberg với MinIO làm phụ trợ lưu trữ đối tượng.
Trong cửa sổ terminal, cd vào thư mục tabular-spark-setup trong kho lưu trữ và chạy lệnh sau:
docker-compose up
Đăng nhập vào MinIO tại http://127.0.0.1:9001
bằng thông tin đăng nhập admin:password
để biết rằng nhóm kho đã được tạo.
Khi tất cả các vùng chứa đã được thiết lập và chạy, bạn có thể truy cập máy chủ Jupyter Notebook của mình bằng cách điều hướng đến http://localhost:8888
Chạy một trong các sổ ghi chép mẫu và quay lại MinIO tại http://127.0.0.1:9001
để xem kho của bạn đã được điền dữ liệu.
Hướng dẫn xây dựng một cơ sở dữ liệu hiện đại với Iceberg, Tabular và MinIO này chỉ là bước khởi đầu. Bộ ba quyền lực này mở ra cánh cửa dẫn đến một thế giới đầy tiềm năng. Với những công cụ này, bạn có thể tích hợp và phân tích liền mạch tất cả dữ liệu của mình, có cấu trúc và không có cấu trúc, để khám phá các mẫu ẩn và thúc đẩy các quyết định dựa trên dữ liệu nhằm thúc đẩy sự đổi mới. Tận dụng hiệu quả và tính linh hoạt của kiến trúc này trong sản xuất để đẩy nhanh các sáng kiến AI/ML của bạn và khai thác tiềm năng thực sự của các mô hình học máy, đẩy nhanh con đường dẫn đến những khám phá đột phá của bạn. Hãy liên hệ với chúng tôi tại