Professional Documents
Culture Documents
Bài 4. Apache Spark 1
Bài 4. Apache Spark 1
Giới thiệu
Các thành phần Spark
Một số khái niệm
Mô hình thực thi ứng dụng
Vòng đời ứng dụng
Lập trình trên Spark
Giới thiệu
• Spark do đại học Berkeley xây dựng 2009.
• Đến năm 2013 tặng cho Apache
(spark.apache.org).
• 2014: Spark 1.0, 2016: Spark 2.0, 2022: Spark3.2.x
• Chức năng: tính toán phân tán trên bộ nhớ
trong.
• Hỗ trợ các NNLT: Java, Scala, Python
MapReduce của Hadoop đọc và ghi đĩa nhiều nên chậm.
Spark khắc phục bằng cách thao tác tính toán trên bộ nhớ trong.
Các thành phần Spark
Thư viện thao Thư viện xử lý
Thư viện Thư viện xử lý
tác với dữ liệu dữ liệu thời
học máy dữ liệu đồ thị
có cấu trúc gian thực
Engine thực
thi chung Java, Scala
làm nền tảng và Python
cho Spark.
3. Execution 4. Completion
Vòng đời ứng dụng Spark
Client request:
Client submit ứng dụng cần thực thi trên cụm máy tính
Spark submit sẽ kết nối với master của Cluster Manager
yêu cầu tạo Spark Driver
Cluster Manager tạo Container cho Spark Driver
Launch:
Spark Driver yêu cầu cấp phát tài nguyên để chạy Spark
Executor
Vòng đời ứng dụng Spark
Execution:
Thực thi các công việc theo logic của ứng dụng trên tài
nguyên được cấp phát
Driver thường xuyên trao đổi với Executor để giao công
việc hoặc cập nhật trạng thái
Các Executor cũng trao đổi với nhau khi cần
Completion:
Khi thực hiện các công việc đã xong hoặc Spark Driver
bị lỗi
Cluster Manager thu hồi các tài nguyên đã cấp phát cho
các Executors
Nội dung
Môi trường làm việc
Chế độ làm việc Spark
Lập trình Spark bằng Python (PySpark)
SparkContext
SparkSession
Hướng dẫn sử dụng Colab
Môi trường làm việc
Spark có thể cài đặt trên Linux, MacOS và Windows
Spark có thể chạy trên máy đơn, cụm máy tính và Cloud
Yêu cầu phần mềm:
Java
Apache Spark
Trình biên dịch Scala/Python (Pyspark)
PySpark
Apache Spark được viết bằng Scala
Để hỗ trợ lập trình bằng Python, Spark cung cấp công cụ
PySpark
PySpark hỗ trợ lập trình API và Shell
Chế độ làm việc
Chế độ tương tác: pyspark
Submit từ dòng lệnh
Lệnh:
Spark Context
Là điểm vào cho ứng dụng
trên Spark
Khi một ứng dụng Spark
chạy trên Driver thì
SparkContext được khởi
tạo
SparkContext sử dụng thư
viện Py4J để sinh ra một
JVM và tạo
JavaSparkContext
Ngầm định PySpark có sẵn
một SparkContext sc trong
chế độ tương tác.
Spark Context
class pyspark.SparkContext (
master = None,
appName = None,
sparkHome = None,
pyFiles = None,
environment = None,
batchSize = 0,
serializer = PickleSerializer(),
conf = None,
gateway = None,
jsc = None,
profiler_cls = <class 'pyspark.profiler.BasicProfiler'>
)
Spark Context
master − URL kết nối đến cụm máy tính.
appName − Tên ứng dụng.
sparkHome − Thư mục cài đặt Spark.
pyFiles − file .zip hoặc .py gửi cho cluster.
environment − Các biến môi trường của Worker nodes.
batchSize − Quy định số đối tượng Python trong một đối
tượng Java, đặt 0 là tự động chọn.
serializer − Cách tuần tự hoác các RDD.
conf − đối tượng cấu hình cho các thuộc tính Spark.
gateway − Chỉ định một JVM, ngầm định JVM mới.
jsc − Chỉ định JavaSparkContext, ngầm định là đối tượng mới.
profiler_cls − Một lớp cho hồ sơ người dùng (ngầm định
pyspark.profiler.BasicProfiler).
Ví dụ: đếm số dòng chứa ký tự ‘a’, ‘b’ trong một file
Mount Drive:
from google.colab import drive
drive.mount('/content/drive')
Thiết lập môi trường
import os
os.environ["JAVA_HOME"] = "/usr/lib/jvm/java-8-
openjdk-amd64"
os.environ["SPARK_HOME"] = "/content/spark-3.0.1-
bin-hadoop2.7“
Tổng kết
Spark là môi trường tính toán phân tán dựa trên bộ nhớ.
Spark có thể tính toán dựa trên tài nguyên của cụm máy
tính tương thích.
Spark có thể lấy dữ liệu từ HDFS, S3, HBase,...
SparkContext dùng để giao tiếp với Cluster Manager
SparkSession dùng để quản lý các phiên làm việc của
người dùng