Giới thiệu về Apache Spark

Apache Spark là gì?

Apache Spark là một công cụ tính toán thống nhất và một tập hợp các thư viện được thiết kế để xử lý dữ liệu song song trên các cụm máy tính. Nó có thể quản lý các cụm máy tính bằng một trình quản lý cụm như trình quản lý cụm độc lập của Spark, YARN hoặc Mesos. Các ứng dụng Spark được nộp lên các trình quản lý cụm này, sau đó sẽ phân bổ các tài nguyên cần thiết để thực hiện các tác vụ.

Spark chủ yếu được viết bằng ngôn ngữ Scala và chạy trên Java Virtual Machine (JVM). Do đó, để chạy Spark trên máy tính cá nhân hoặc một cụm máy tính, bạn cần cài đặt Java. Nếu bạn muốn sử dụng API Python, cũng cần có một trình thông dịch Python.

Các thuật ngữ quan trọng trong PySpark

  • DataFrame: Một tập hợp dữ liệu phân tán được tổ chức thành các cột có tên.
  • Phân vùng (Partitioning): Phương pháp chia dữ liệu thành nhiều phân vùng, cho phép thực hiện các biến đổi song song, từ đó tăng tốc độ hoàn thành công việc.
  • Phân vùng (Partition): Một tập hợp các hàng nằm trên một máy vật lý trong một cụm. Các phân vùng của một DataFrame đại diện cho sự phân phối vật lý của dữ liệu trên các máy trong cụm.
  • Shuffle: Sự di chuyển dữ liệu giữa các phân vùng.
  • RDD (Resilient Distributed Dataset): Được sử dụng cho các tính toán cấp thấp và dữ liệu không có cấu trúc.
  • Biến đổi (Transformation): Một hàm tạo ra một RDD mới. Các biến đổi là lười biếng trong bản chất.
  • Hành động (Action): Đánh giá các biến đổi tương ứng và hành động để hiển thị kết quả.

Các thành phần của Ứng dụng Spark

  • Quá trình điều khiển (Driver Process):
    • Duy trì thông tin về Ứng dụng Spark.
    • Phản hồi chương trình hoặc đầu vào của người dùng.
    • Phân tích, phân phối và lập lịch công việc trên các trình thực thi.
  • Các quá trình thực thi (Executor Processes):
    • Thực thi mã được giao bởi trình điều khiển.
    • Báo cáo trạng thái tính toán lại cho nút điều khiển.

Kiến trúc của Spark

Trong một Ứng dụng Spark, trình quản lý cụm kiểm soát các máy vật lý và phân bổ tài nguyên cho các ứng dụng.

Bắt đầu một Ứng dụng Spark

  • Ứng dụng Spark tương tác:
    • ./bin/spark-shell để truy cập vào bảng điều khiển Scala.
    • ./bin/pyspark để truy cập vào bảng điều khiển Python.
  • Nộp một Ứng dụng Độc lập Đã Biên dịch Sẵn:
    • Lệnh spark-submit được sử dụng để nộp các ứng dụng.
    • Ví dụ:bashSao chép mã./bin/spark-submit \ --master local \ ./pyspark_folder/src/main/python/pi.py 10

Các chế độ chạy của Ứng dụng Spark

  • Chế độ cụm (Cluster Mode): Trình điều khiển và các trình thực thi chạy trên các máy khác nhau, được quản lý bởi một trình quản lý cụm như YARN hoặc Mesos.
  • Chế độ cục bộ (Local Mode): Trình điều khiển và các trình thực thi chạy dưới dạng các tiến trình, có thể nằm trên cùng một máy hoặc trên các máy khác nhau. Trong chế độ cục bộ, trình điều khiển và các trình thực thi chạy dưới dạng các luồng trên máy tính cá nhân của bạn thay vì trên một cụm.