Apache Spark là gì

Apache Spark

Apache Spark

Apache Spark in-memory clusters đang là tiêu điểm chú ý của nhiều doanh nghiệp trong việc ứng dụng công nghệ vào phân tích và xử lý dữ liệu nhanh chóng. Trong bài viết này, tôi sẽ trình bày một bức tranh tổng quan nhất về Apache Spark, một trong những gỉai pháp đòi hỏi phải có khi muốn xử lý Big data.

Tổng quan về Spark

Apache Spark là một open source cluster computing framework được phát triển sơ khởi vào năm 2009 bởi AMPLab tại đại học California, Berkeley. Sau này, Spark đã được trao cho Apache Software Foundation vào năm 2013 và được phát triển cho đến nay.

Spark cho phép xây dựng và phân tích nhanh các mô hình dự đoán. Hơn nữa, nó còn cung cấp khả năng truy xuất toàn bộ dữ liệu cùng lúc, nhờ vậy ta không cần phải lấy mẫu dữ liệu – đòi hỏi bởi các ngôn ngữ lập trình như R. Thêm vào đó, Spark còn cung cấp tính năng streaming, được dùng để xây dựng các mô hình real-time bằng cách nạp toàn bộ dữ liệu vào bộ nhớ.

Khi ta có một tác vụ nào đó qúa lớn mà không thể xử lý trên một laptop hay một server, Spark cho phép ta phân chia tác vụ này thành những phần dễ quản lý hơn. Sau đó, Spark sẽ chạy các tác vụ này trong bộ nhớ, trên các cluster của nhiều server khác nhau để khai thác tốc độ truy xuất nhanh từ RAM. Spark sử dụng API Resilient Distributed Dataset (RDD) để xử lý dữ liệu.

spark-mesos

spark-mesos

Spark nhận được nhiều sự hưởng ứng từ cộng đồng Big data trên thế giới do cung cấp khả năng tính toán nhanh và nhiều thư viện đi kèm hữu ích như Spark SQL (với kiểu dữ liệu DataFrames), Spark Streaming, MLlib (machine learning: classification, regression, clustering, collaborative filtering, và dimensionality reduction) và GraphX (biểu diễn đồ thị nhờ kết qủa tính toán song song).

Apache Spark components

Apache Spark components

Những điểm sáng gía ngoài tốc độ tính toán nhanh

Sự đơn gỉan: Một trong những chỉ trích thường gặp ở Hadoop đó là sự phức tạp trong qúa trình phát triển, mặc dù đây là một trong những phương pháp tính toán đơn gỉan và hiệu qủa gíup tăng tốc độ xử lý của hệ thống. Thay vì đòi hỏi người dùng phải hiểu rạch ròi về MapReduce và lập trình Java, Spark sinh ra để gíup mọi người tiếp cận với công nghệ tính toán song song dễ dàng hơn rất nhiều. Người dùng chỉ cần một vài kiến thức cơ bản về database cộng với lập trình Python hay Scala là có thể sử dụng được.

Độc lập với các nhà cung cấp dịch vụ Hadoop: Hầu hết các nhà cung cấp dịch vụ Hadoop đều hỗ trợ Spark. Điều này có nghĩa Spark không phụ thuộc vào các nhà cung cấp này. Nếu bạn muốn thay đổi nhà cung cấp dịch vụ, ta chỉ cần đem hệ thống Spark qua nhà cung cấp mới mà không lo ngại việc mất mát thông tin.

Một vài thống kê thú vị

  • 62% số người khảo sát dùng Spark với HDFS, 46% sử dụng với các hệ quản trị CSDL như Cassandra, HBase, Hive, Tachyon, 41% đang sử dụng với Kafka, và 29% đang sử dụng cùng Amazon S3.
  • Đối với hệ quản trị cluster, 56% đang chạy độc lập Spark, 42% sử dụng YARN, và 26% sử dụng Apache Mesos.
  • Đối với ngôn ngữ lập trình, 88% sử dụng Scala, 44% sử dụng Java, và 22% sử dụng Python.
  • Mức độ quan tâm của doanh nghiệp về Spark: 91% về tốc độ tính toán, 77% về việc dễ lập trình, 71% về việc dễ phát triển, 64% về các công cụ phân tích dữ liệu tiên tiến, 52% về real-time streaming.
  • Sử dụng Spark trên 206 hệ thống EC2 để sắp xếp 100TB dữ liệu chỉ tốn 23 phút. Trong khi đó, kỉ lục trước đây trên Hadoop sử dụng MapReduce trên 2,100 máy tính phải tiêu tốn 72 phút. Điều này có nghĩa rằng Spark sắp xếp dữ liệu nhanh gấp 3 lần Hadoop mà chỉ sử dụng ít hơn 10 lần số máy tính.
  • Các thành phần được sử dụng trong Spark: 69% sử dụng Spark SQL, 62% sử dụng Dataframes, 58% sử dụng MLib + GraphX, 58% sử dụng Streaming.

Kết luận

Đối với các nhà cung cấp gỉai pháp, Apache Spark là một lá bài quan trọng trong việc sử dụng các công nghệ cốt lõi để xây dựng những data warehouses hiện đại. Đây là một phân khúc lớn trong ngành IT có khả năng thu về hàng tỉ đô doanh thu hằng năm.

Spark đưa ra một khái niệm mới mang nhiều hứa hẹn trong tương lai đó là data lakes. Đây là một nơi lưu trữ một lượng dữ liệu khổng lồ với nhiều định dạng khác nhau và được truy vấn để xử lý khi cần thiết. Data lakes đưa ra một framework thương mại có thể tạo ra một môi trường lưu trữ vô hạn bất kỳ loại dữ liệu nào.

Spark Demo

Tham khảo thêm:

Nguồn tham khảo:

Advertisements

8 thoughts on “Apache Spark là gì

  1. Chào anh, em đang bắt đầu nghiên cứu Spark, em chưa học qua Python và Scala, vậy cho em hỏi là mình nên chọn Python hay Scala để bắt đầu lập trình với Spark, và ưu nhược điểm của 2 ngôn ngữ này trong lập trình với Spark anh.
    Em cảm ơn anh trước, 😀

    Số lượt thích

    • Hi em, nếu em đã có kinh nghiệm về Python và muốn lập trình sơ sơ để tìm hiểu thì em lựa chọn Python để bắt đầu là đơn giản nhất. Trong khi đó, Spark được viết dựa trên scala (sử dụng chung với các library của Java), do vậy những tính năng mới nhất đều hỗ trợ cho scala trước, sau đó mới áp dụng cho Python.
      Về ưu điểm thì cả hai đều là ngôn ngữ lập trình hàm cấp cao, nên việc tiếp cận và học đều khá dễ, riêng Python thì được thêm ưu điểm nữa là không cần compile khi chạy nên có cảm giác đỡ nhập nhằng. Nhưng để theo đuổi các dự án lớn thì scala là ngôn ngữ bắt buộc vì những lý do anh đã nêu ở trên.

      Số lượt thích

    • Đầu tiên em cần đơn giản hoá bài toán:
      1) Dữ liệu cần hiển thị có schema ntn.
      2) Hiển thị những chart nào (line chart, bar chart, pie chart, matrix, …)
      3) Prototype load dữ liệu và hiển thị chart
      Spark hỗ trợ nhiều ngôn ngữ lập trình trong đó Scala là core của framework này, nếu được em nên học Scala để dễ lập trình hơn Java.
      Database em có thể dùng Mongo, PostgreSQL, MySQL hay công nghệ nào mà em thích.
      Về web thì Spring (Java), Ruby on Rails, PHP, hay thuần html cũng được vì yêu cầu không quá phức tạp.
      Chart thì anh thường dùng highchart và angularJs, reactJs, … để làm việc.

      Số lượt thích

Trả lời

Mời bạn điền thông tin vào ô dưới đây hoặc kích vào một biểu tượng để đăng nhập:

WordPress.com Logo

Bạn đang bình luận bằng tài khoản WordPress.com Đăng xuất / Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Đăng xuất / Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Đăng xuất / Thay đổi )

Google+ photo

Bạn đang bình luận bằng tài khoản Google+ Đăng xuất / Thay đổi )

Connecting to %s