Thành phần trung tâm của Spark là Spark Core: cung cấp những chức năng cơ bản nhất của Spark nhƣ lập lịch cho các tác vụ, quản lý bộ nhớ, sửa lỗi, tƣơng tác với các hệ thống lƣu trữ…Đặc biệt, Spark Core cung cấp API để định nghĩa RDD (Resilient Distributed DataSet) là tập hợp của các hàng đƣợc phân tán trên các nút (node) của cụm (cluster) và cĩ thể đƣợc xử lý song song.
Hình 1.4 Các thành phần của Apache Spark [11]
Spark cĩ thể chạy trên nhiều loại quản lý theo cụm (Cluster Managers) nhƣ Hadoop YARN, Apache Mesos hoặc trên chính quản lý theo cụm (cluster manager) đƣợc cung cấp bởi Spark đƣợc gọi là bộ lặp lịch độc lập (Standalone Scheduler).
- Spark SQL hỗ trợ DSL (Domain-specific language) để thực hiện các thao tác trên DataFrames bằng ngơn ngữ Scala, Java hoặc Python và nĩ cũng hỗ trợ cả ngơn ngữ SQL với giao diện command-line và ODBC/JDBC server.
- Spark Streaming đƣợc sử dụng để thực hiện việc phân tích luồng (stream) bằng việc coi luồng (stream) là các cụm nhỏ và thực hiện kỹ thuật chuyển đổi RDD đối với các dữ liệu cụm nhỏ này. Qua đĩ cho phép các đoạn
21
code đƣợc viết cho xử lý cụm cĩ thể đƣợc tận dụng lại vào trong việc xử lý luồng, làm cho việc phát triển hàm lambda đƣợc dễ dàng hơn. Tuy nhiên điều này lại tạo ra độ trễ trong xử lý dữ liệu (độ trễ chính bằng thời gian xử lý của cụm) và do đĩ nhiều chuyên gia cho rằng Spark Streaming khơng thực sự là cơng cụ xử lý luồng giống nhƣ Storm hoặc Flink.
- Thƣ viện học máy (Mllib): Thƣ viện học máy (Mllib) là một nền tảng học máy phân tán bên trên Spark do kiến trúc phân tán dựa trên bộ nhớ. Theo các so sánh chuẩn, việc dùng thƣ viện học máy Mllib trên Spark sẽ nhanh hơn 9 lần so với phiên bản chạy trên Hadoop (Apache Mahout).
- Xử lý đồ thị phân tán (GraphX) là nền tảng xử lý đồ thị dựa trên Spark. Nĩ cung cấp các API để diễn tả các tính tốn trong đồ thị bằng cách sử dụng Pregel API.