Apache Spark (gọi tắt Spark) là một trong những công nghệ hot nhất năm 2015, đến mức nhiều người cho rằng nó sẽ là sự thay thế Apache Hadoop trong tương lai. Bài viết này sẽ tập trung mô tả tổng quan về Spark, so sánh nó với Hadoop để đưa ra câu trả lời.
Trong những năm trở lại đây, khi nói về dữ liệu lớn người ta nghĩ ngay đến Apache Hadoop, công nghệ được viết bởi Doug Cutting dựa trên GFS (Google File System) và MapReduce của Google vào năm 2005. Tháng Tư năm 2008, Hadoop trở thành hệ thống nhanh nhất để sắp xếp (sort) 1 terabyte dữ liệu, khi mất 209 giây chạy trên cluster gồm 910 nodes, đánh bại kỷ lục cũ là 297 giây. Tháng 11 năm 2008, Google thông báo hệ thống MapReduce của họ chỉ cần 68 giây để sắp xếp 1 terabyte dữ liệu. Đến tháng 5 năm 2009, Yahoo sử dụng Hadoop chỉ cần 62 giây để làm việc tương tự. Từ đó đến nay, cả một hệ sinh thái đã được xây dựng lấy Hadoop làm nòng cốt để giải quyết những bài toán về dữ liệu lớn.
Hadoop bao gồm hai thành phần chính:
  • HDFS: Hadoop Distributed File System, hệ thống tập tin phân tán, cho phép lưu trữ dữ liệu trên cluster gồm nhiều máy tính có cấu hình ở mức thông thường
  • MapReduce: framwork cho phép xử lý dữ liệu song song trên cluster.
Trên nền tảng hai thành phần đó, cộng đồng OpenSource đã phát triển thêm rất nhiều công cụ khác giúp tăng hiệu quả khi làm việc với Hadoop:
  • Hbase: Cơ sở dữ liệu NoSQL, được xây dựng trên nền của HDFS, hỗ trợ những dữ liệu phi cấu trúc.
  • Flume: Dùng để thu thập dữ liệu từ các nguồn như log hệ thống
  • Oozie: Định nghĩ mối tương quan giữa các tác vụ và lập luồng làm việc cho MapReduce.
  • Hive: Sử dụng những câu lệnh như SQL và biên dịch những câu lệnh này thành tập hợp các tác vụ MapReduce.
  • Mahout: Sử dụng cho các bài toán về học máy.
  • Sqoop: Dùng để chuyển đổi dữ liệu từ các cơ sở dữ liệu quan hệ sang HDFS.
Matei Zaharia, cha đẻ của Spark, sử dụng Hadoop từ những ngày đầu. Đến năm 2009 ông viết Apache Spark để giải quyết những bài toán học máy ở đại học UC Berkely vì Hadoop MapReduce hoạt động không hiệu quả cho những bài toán này. Rất sớm sau đó ông nhận ra rằng Spark không chỉ hữu ích cho học máy mà còn cho cả việc xử lý luồng dữ liệu hoàn chỉnh.
Thành phần trung 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ớ, fault recovery, 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 item được phân tán trên các node của cluster và có thể được xử lý song song.
Spark có thể chạy trên nhiều loại Cluster Managers như Hadoop YARN, Apache Mesos hoặc trên chính cluster manager được cung cấp bởi Spark được gọi là Standalone Scheduler.
  • Spark SQL cho phép truy vấn dữ liệu cấu trúc qua các câu lệnh SQL. Spark SQL có thể thao tác với nhiều nguồn dữ liệu như Hive tables, Parquet, và JSON.
  • Spark Streaming cung cấp API để dễ dàng xử lý dữ liệu stream,
  • MLlib Cung cấp rất nhiều thuật toán của học máy như: classification, regression, clustering, collaborative filtering…
  • GraphX là thư viện để xử lý đồ thị.
Một trong những lý do khiến Spark chạy nhanh hơn Hadoop MapReduce đó là ở mỗi tác vụ dữ liệu được nạp lên bộ nhớ và xử lý ở đó, những tác vụ sau có thể sử dụng dữ liệu nằm trên bộ nhớ thay vì phải đọc ghi liên tục vào HDFS như Hadoop MapReduce (xem minh họa phía dưới)
Hadoop MapReduce
Spark
Theo một so sánh, năm 2013 Hadoop sử dụng cluster bao gồm 2100 máy và mất 72 phút để sắp xếp 100 TB dữ liệu, trong khi Spark cần số lượng máy bằng 1/10 nhưng sắp xếp chỉ mất 23 phút. Trong nhiều trường hợp Spark có thể chạy nhanh hơn từ 30-50 lần so với Hadoop MapReduce.
Để thấy được bức tranh toàn cảnh về Spark, hãy cùng xem một số thống kê:
Trong các thư viện mà Spark cung cấp thì có 69% người dùng Spark SQL, 62% sử dụng DataFrames, Spark Streaming và MLlib + GraphX là 58%
Lập trình viên có thể viết các ứng dụng Spark bằng nhiều ngôn ngữ khác nhau. Năm 2014, 84% người dùng sử dụng Scala, trong khi Java và Python cùng là 38% (Người dùng có thể sử dụng nhiều hơn 1 ngôn ngữ trong các ứng dụng của mình). Đến năm 2015, Spark hỗ trợ thêm ngôn ngữ R, rất nhanh chóng có tới 18% người dùng R, Python cũng tăng lên 58%.
Năm 2015, Spark trở thành dự án mã nguồn mở sôi động nhất trong lĩnh vực dữ liệu lớn khi thường xuyên được cập nhật bởi hơn 800 lập trình viên từ 200 công ty trên khắp thế giới.
Hiện nay, có rất nhiều hãng lớn đã dùng Spark cho các sản phẩm của mình như Yahoo, ebay, IBM, Cisco…
Tencent dùng cluster lớn nhất để chạy Spark, gồm khoảng 8000 nodes. Databricks và Alibaba đã dùng Spark để chạy với 1 petabyte dữ liệu.
Bây giờ, quay lại với cả bức tranh tổng thể:
 
  • Hadoop MapReduce có thể bị thay thế bởi Spark Core. Như những phân tích ở trên, tốc độ là ưu điểm nổi bật của Spark Core điều này khiến Hadoop MapReduce dường như đang nằm ngoài dòng chảy của dữ liệu lớn.
  • YARN có thể thay thế bởi Mesos.
  • Hadoop HDFS được viết từ những năm 2000 khi bộ nhớ còn rất đắt, ngày nay khi bộ nhớ ngày càng rẻ hơn thì những hệ thống lưu trữ phân tán lấy bộ nhớ làm trung tâm như Apache Tachyon (tên mới là Alluxio) có thể là xu hướng của tương lai.
  • Spark SQL có thể dùng thay thế cho HIVE, Spark SQL ngày càng được cải tiến để dễ sử dụng hơn và cung cấp nhiều tính năng mới.
  • Mahout: đang ngày càng đánh mất thị phần của mình, và có thể sẽ bị thay thế bởi Spark MLLib
Hadoop đã có thời gian phát triển lâu dài và đã chứng minh sự hữu ích trong nhiều sản phẩm, vì thế có thể một số thành phần của hệ sinh thái Hadoop bị thay thế bởi Spark nhưng không thể nói Spark sẽ thay thế hoàn toàn được Hadoop. Với sự phát triển mạnh mẽ trong vài năm trở lại đây của Spark thì lập trình viên, các nhà khoa học máy tính có thêm công cụ hữu hiệu để phục vụ công việc của mình và người ta sẽ dần quên “Hadoop Stack” mà thay thế vào đó sẽ là “Big data Stack”, với nhiều sự lựa chọn hơn không chỉ là Hadoop.
Tài liệu tham khảo:
1.  http://0x0fff.com/will-spark-replace-hadoop/
2. Learning Spark by Matei Zaharia, Patrick Wendell, Andy Konwinski, Holden Karau
3. Hadoop: The Definitive Guide, 4th Edition – O’Reilly Media
4. www.databricks.com
5. http://www.kdnuggets.com/2015/05/interview-matei-zaharia-creator-apache-spark.html
Nguyễn Việt Cường – FHO
Tin liên quan: