Khởi tạo môi trường phát triển Apache Flink

3 min read

Apache Flink là một framework và công cụ xử lý phân tán cho các tính toán có trạng thái trên luồng dữ liệu không giới hạn và giới hạn. Nó đã được thiết kế để chạy trên tất cả môi trường cụm phổ biến và thực hiện tính toán ở tốc độ trong bộ nhớ và ở bất kỳ quy mô nào. Ban đầu, Flink được viết bằng Java và Scala, từ phiên bản 1.9.0 trở đi, Flink đã thêm hỗ trợ cho Python. Nghĩa là chúng ta có thể sử dụng Python để phát triển ứng dụng Flink. Python nổi tiếng với ngôn ngữ lập trình mã nguồn mở và dễ học, đối với những nhà phát triển đã quen thuộc với Python, đây có thể là sự lựa chọn của họ.

Dưới đây, tôi sẽ chia sẻ cách thiết lập PyFlink cho môi trường phát triển trên máy cá nhân, với Visual Studio Code, Remote Development và Docker.

Chuẩn bị

  1. Docker
  2. Visual Studio Code
  3. Flink Docker Image
  4. Apache Flink from PyPI (download the .tar.gz file)
  5. Apache Flink Libraries from PyPI (download the .tar.gz file)

Build it

Trước tiên, tải Image của Apache Flink từ liên kết ở trên, ở đây sử dụng phiên bản 1.14.0.

docker pull flink:1.14.0

Mặc định, image của Flink 1.14.0 không có Python và PyFlink được cài đặt, bạn cần phải build image mới dựa trên image Flink 1.14.0 hiện có. Tạo một thư mục mới, bao gồm Dockerfile

FROM flink:1.14.0

# install python3: it has updated Python to 3.9 in Debian 11 and so install Python 3.7 from source
# it currently only supports Python 3.6, 3.7 and 3.8 in PyFlink officially.

RUN apt-get update -y && \
apt-get install -y build-essential libssl-dev zlib1g-dev libbz2-dev libffi-dev && \
wget https://www.python.org/ftp/python/3.7.9/Python-3.7.9.tgz && \
tar -xvf Python-3.7.9.tgz && \
cd Python-3.7.9 && \
./configure --without-tests --enable-shared && \
make -j6 && \
make install && \
ldconfig /usr/local/lib && \
cd .. && rm -f Python-3.7.9.tgz && rm -rf Python-3.7.9 && \
ln -s /usr/local/bin/python3 /usr/local/bin/python && \
apt-get clean && \
rm -rf /var/lib/apt/lists/*

# install PyFlink

COPY apache-flink*.tar.gz /
RUN pip3 install /apache-flink-libraries*.tar.gz && pip3 install /apache-flink*.tar.gz

Di chuyển file tải về ở bước 4 và 5 vào trong folder vừa tạo.
Sau đó build một image mới bằng lệnh:

docker build --tag pyflink:1.14.0 .

Lệnh trên sẽ build một Docker Image mới có tên là “pyflink” và tag là “1.14.0”. Nếu lệnh thành công, sẽ có một hình ảnh với Repository là “pyflink” và Tag là “1.14.0”. Kiểm tra bằng lệnh sau:
docker images

Compose it

Sử dụng Docker Compose là một trong số các cách để chạy các container Flink, một cách khác để triển khai các container là sử dụng Kubernetes Cluster hoặc Docker Swarm.

Image Flink có thể được triển khai dưới dạng Application Cluster hoặc Session Cluster. Một Application Cluster Flink cơ bản là một cụm dành riêng để chạy một job duy nhất, trong khi một Session Cluster có thể được sử dụng để chạy nhiều job. Trong ví dụ này sẽ sử dụng Session Cluster, dưới đây là code:

version: "2.2"
services:
  jobmanager:
    image: pyflink:1.14.0
    volumes:
    - ./:/home/pyflink
    ports:
      - "8085:8081"
    command: jobmanager
    environment:
      - |
        FLINK_PROPERTIES=
        jobmanager.rpc.address: jobmanager
  taskmanager:
    image: pyflink:1.14.0
    depends_on:
      - jobmanager
    command: taskmanager
    scale: 1
    environment:
      - |
        FLINK_PROPERTIES=
        jobmanager.rpc.address: jobmanager
        taskmanager.numberOfTaskSlots: 2

Lưu file này dưới tên docker-compose.yml, sau đó chạy cụm bằng cách:

docker compose up -d

Có thể kiểm tra services lên chưa bằng lệnh:

docker ps

Nếu mọi thứ hoạt động đúng, bạn sẽ có thể truy cập vào Bảng điều khiển Apache Flink tại localhost:8085. Tại đây, bạn có thể xem thông tin về Job đang chạy, Job đã hoàn thành và các thông tin khác.

Remote Development

Bây giờ cluster đang chạy, bạn có thể mở Visual Studio Code và cài đặt các Extensions Remote từ Microsoft, khởi động lại VS Code nếu cần thiết.

Nhấp vào menu bánh răng ở góc dưới bên trái của Visual Studio Code, sau đó nhấp vào Command Palette, hoặc chỉ cần gõ trên bàn phím Ctrl + Shift + P. Tìm kiếm menu Remote Containers: Attach to Running Container, nếu bạn nhấp vào đó, sẽ xuất hiện một danh sách các container đang chạy, trong trường hợp này sẽ có hai container pyflink đang chạy. Chọn một container làm container dev của bạn, ở đây tôi chọn container Job Manager. Sau đó, nhấp vào Open Folder trong menu Explorer, chọn /home/pyflink vì thư mục này được đồng bộ với thư mục gốc trên máy chủ.

Sau đó, chúng ta có thể bắt đầu dev trực tiếp trên container.

Tài liệu tham khảo:

Avatar photo

BigQuery vs Google Cloud SQL – P2

Ở bài viết trước tôi đã tổng quan về khái niệm, các tính năng chính và so sánh sự khác biệt chính của GCP...
Avatar photo Toai Nguyen Cong
11 min read

BigQuery vs Google Cloud SQL – P1

Trong bối cảnh điện toán đám mây không ngừng phát triển, các doanh nghiệp bị ngập trong các lựa chọn khi nói đến việc...
Avatar photo Toai Nguyen Cong
5 min read

Leave a Reply

Your email address will not be published. Required fields are marked *