Apache Spark - Giới thiệu

Các ngành đang sử dụng rộng rãi Hadoop để phân tích tập dữ liệu của họ. Lý do là Hadoop framework dựa trên một mô hình lập trình đơn giản (MapReduce) và nó cho phép một giải pháp tính toán có khả năng mở rộng, linh hoạt, chịu lỗi và hiệu quả về chi phí. Ở đây, mối quan tâm chính là duy trì tốc độ xử lý bộ dữ liệu lớn về thời gian chờ giữa các truy vấn và thời gian chờ để chạy chương trình.

Spark được Apache Software Foundation giới thiệu để tăng tốc quá trình phần mềm tính toán Hadoop.

Trái ngược với một niềm tin thông thường, Spark is not a modified version of Hadoopvà thực sự không phụ thuộc vào Hadoop vì nó có quản lý cụm riêng. Hadoop chỉ là một trong những cách để triển khai Spark.

Spark sử dụng Hadoop theo hai cách - một là storage và thứ hai là processing. Vì Spark có tính toán quản lý cụm riêng nên nó chỉ sử dụng Hadoop cho mục đích lưu trữ.

Apache Spark

Apache Spark là công nghệ điện toán cụm nhanh như chớp, được thiết kế để tính toán nhanh. Nó dựa trên Hadoop MapReduce và nó mở rộng mô hình MapReduce để sử dụng nó một cách hiệu quả cho nhiều loại tính toán hơn, bao gồm các truy vấn tương tác và xử lý luồng. Tính năng chính của Spark làin-memory cluster computing làm tăng tốc độ xử lý của ứng dụng.

Spark được thiết kế để bao gồm một loạt các khối lượng công việc như ứng dụng hàng loạt, thuật toán lặp lại, truy vấn tương tác và phát trực tuyến. Ngoài việc hỗ trợ tất cả khối lượng công việc này trong một hệ thống tương ứng, nó làm giảm gánh nặng quản lý trong việc duy trì các công cụ riêng biệt.

Sự phát triển của Apache Spark

Spark là một trong những dự án con của Hadoop được phát triển vào năm 2009 trong AMPLab của UC Berkeley bởi Matei Zaharia. Nó được Open Sourced vào năm 2010 theo giấy phép BSD. Nó đã được quyên góp cho nền tảng phần mềm Apache vào năm 2013 và bây giờ Apache Spark đã trở thành một dự án Apache cấp cao nhất từ ​​tháng 2 năm 2014.

Các tính năng của Apache Spark

Apache Spark có các tính năng sau.

  • Speed- Spark giúp chạy một ứng dụng trong cụm Hadoop, nhanh hơn tới 100 lần trong bộ nhớ và nhanh hơn 10 lần khi chạy trên đĩa. Điều này có thể thực hiện được bằng cách giảm số lượng thao tác đọc / ghi vào đĩa. Nó lưu trữ dữ liệu xử lý trung gian trong bộ nhớ.

  • Supports multiple languages- Spark cung cấp các API tích hợp trong Java, Scala hoặc Python. Do đó, bạn có thể viết ứng dụng bằng các ngôn ngữ khác nhau. Spark đưa ra 80 toán tử cấp cao để truy vấn tương tác.

  • Advanced Analytics- Spark không chỉ hỗ trợ 'Bản đồ' và 'thu nhỏ'. Nó cũng hỗ trợ các truy vấn SQL, Dữ liệu truyền trực tuyến, Máy học (ML) và các thuật toán Đồ thị.

Spark được xây dựng trên Hadoop

Sơ đồ sau đây cho thấy ba cách về cách Spark có thể được tạo bằng các thành phần Hadoop.

Có ba cách triển khai Spark như được giải thích bên dưới.

  • Standalone- Triển khai Spark độc lập có nghĩa là Spark chiếm vị trí trên HDFS (Hệ thống tệp phân tán Hadoop) và không gian được phân bổ cho HDFS, một cách rõ ràng. Ở đây, Spark và MapReduce sẽ chạy song song với nhau để bao gồm tất cả các công việc tia lửa trên cụm.

  • Hadoop Yarn- Việc triển khai Hadoop Yarn có nghĩa là đơn giản, spark chạy trên Yarn mà không cần cài đặt trước hoặc truy cập root. Nó giúp tích hợp Spark vào hệ sinh thái Hadoop hoặc ngăn xếp Hadoop. Nó cho phép các thành phần khác chạy trên đầu ngăn xếp.

  • Spark in MapReduce (SIMR)- Spark trong MapReduce được sử dụng để khởi chạy công việc spark ngoài việc triển khai độc lập. Với SIMR, người dùng có thể khởi động Spark và sử dụng trình bao của nó mà không cần bất kỳ quyền truy cập quản trị nào.

Các thành phần của Spark

Hình minh họa sau đây mô tả các thành phần khác nhau của Spark.

Apache Spark Core

Spark Core là công cụ thực thi chung cơ bản cho nền tảng tia lửa mà tất cả các chức năng khác được xây dựng dựa trên. Nó cung cấp tính toán trong bộ nhớ và tham chiếu bộ dữ liệu trong hệ thống lưu trữ bên ngoài.

Spark SQL

Spark SQL là một thành phần nằm trên Spark Core giới thiệu một phần trừu tượng hóa dữ liệu mới được gọi là SchemaRDD, cung cấp hỗ trợ cho dữ liệu có cấu trúc và bán cấu trúc.

Spark Streaming

Spark Streaming tận dụng khả năng lập lịch nhanh chóng của Spark Core để thực hiện phân tích luồng. Nó nhập dữ liệu trong các lô nhỏ và thực hiện các phép biến đổi RDD (Tập dữ liệu phân tán có khả năng phục hồi) trên các lô dữ liệu nhỏ đó.

MLlib (Thư viện học máy)

MLlib là một khung công tác học máy phân tán ở trên Spark vì kiến ​​trúc Spark dựa trên bộ nhớ phân tán. Theo điểm chuẩn, nó được thực hiện bởi các nhà phát triển MLlib dựa trên việc triển khai Phương diện Ít nhất (ALS) luân phiên. Spark MLlib nhanh gấp 9 lần so với phiên bản dựa trên đĩa Hadoop củaApache Mahout (trước khi Mahout có được giao diện Spark).

GraphX

GraphX ​​là một khung xử lý đồ thị phân tán trên Spark. Nó cung cấp một API để thể hiện tính toán đồ thị có thể lập mô hình đồ thị do người dùng xác định bằng cách sử dụng API trừu tượng Pregel. Nó cũng cung cấp thời gian chạy được tối ưu hóa cho sự trừu tượng này.