Nhiều hệ thống hiện đang sử dụng hadoop để phân tích và xử lý dữ liệu lớn. Ưu điểm lớn nhất của Hadoop là nó dựa trên MapReduce, một mô hình lập trình song song để xử lý dữ liệu lớn, cho phép khả năng tính toán có thể mở rộng, tính linh hoạt, khả năng chịu lỗi và chi phí thấp. Điều này cho phép thời gian xử lý dữ liệu lớn nhanh hơn để duy trì tốc độ và giảm thời gian chờ đợi khi dữ liệu trở nên lớn.
Mặc dù có nhiều ưu điểm về tính toán song song và khả năng chịu lỗi cao nhưng Apache Haddop lại có một nhược điểm đó là mọi thao tác đều phải thực hiện trên đĩa cứng khiến tốc độ tính toán bị giảm đi nhiều lần.
Nhằm khắc phục nhược điểm này, Apache Spark đã ra đời. Apache spark chạy nhanh hơn gấp 10 lần so với haddop trên đĩa cứng và nhanh hơn 100 lần trên ram.
Apache Spark là một khung tính toán cụm mã nguồn mở được amplab phát triển lần đầu vào năm 2009. Sau đó, Spark đã được trao tặng cho Apache Software Foundation vào năm 2013 và được phát triển cho đến ngày nay.
Tốc độ xử lý của Spark là do quá trình tính toán được thực hiện đồng thời trên nhiều máy khác nhau. Đồng thời, các tính toán được thực hiện trong bộ nhớ hoặc hoàn toàn bằng ram.
spark cho phép xử lý dữ liệu theo thời gian thực, vừa nhận dữ liệu từ các nguồn khác nhau vừa thực hiện xử lý dữ liệu nhận được ngay lập tức (spark streaming).
spark không có hệ thống tệp riêng, nó sử dụng các hệ thống tệp khác như hdfs, cassandra, s3, …. Spark hỗ trợ nhiều định dạng tệp khác nhau (text, csv, json…) và nó hoàn toàn độc lập với bất kỳ hệ thống tệp nào.
apache spark bao gồm 5 thành phần chính: spark core, spark streaming, spark sql, mllib và graphx, trong đó:
-
spark core là cơ sở cho phần còn lại của các thành phần cần chạy qua spark core, thực hiện tính toán và xử lý trong bộ nhớ. Nó cũng tham chiếu dữ liệu được lưu trữ trong dữ liệu hệ thống lưu trữ bên ngoài.
-
spark sql cung cấp một kiểu trừu tượng hóa dữ liệu mới (schemardd), hỗ trợ cả dữ liệu có cấu trúc và bán cấu trúc. dữ liệu phụ thuộc vào nội dung của chính dữ liệu đó). spark sql hỗ trợ dsl (ngôn ngữ dành riêng cho miền) để vận hành khung dữ liệu bằng ngôn ngữ scala, java hoặc python và cũng hỗ trợ ngôn ngữ sql với dòng lệnh và máy chủ odbc/jdbc.
-
spark streaming được sử dụng để thực hiện phân tích phát trực tuyến bằng cách coi các luồng dưới dạng lô nhỏ và thực hiện chuyển đổi rdd trên các lô dữ liệu nhỏ này. .do đó cho phép mã được viết để xử lý hàng loạt được sử dụng lại trong xử lý luồng, giúp việc phát triển kiến trúc lambda dễ dàng hơn. Tuy nhiên, điều này tạo ra độ trễ trong quá trình xử lý dữ liệu (chủ yếu là độ trễ tương đương với thời lượng của lô nhỏ), vì vậy nhiều chuyên gia tin rằng spark streaming không phải là công cụ phát trực tuyến như Storm hoặc Flink.
-
mllib (Thư viện máy học): Do kiến trúc phân tán dựa trên bộ nhớ, mllib là một nền tảng máy học phân tán dựa trên spark. Theo so sánh điểm chuẩn, spark mllib nhanh hơn 9 lần so với phiên bản chạy trên hadoop (apache mahout).
-
grapx: graphx là một nền tảng xử lý đồ họa dựa trên spark. Nó cung cấp các API để thể hiện các tính toán trong biểu đồ bằng API tiền gel.
- Xử lý dữ liệu: xử lý hàng loạt nhanh và xử lý dữ liệu theo thời gian thực
- Khả năng tương thích: Nó có thể được tích hợp với tất cả các nguồn dữ liệu và định dạng tệp được hỗ trợ bởi cụm hadoop.
- Hỗ trợ ngôn ngữ: hỗ trợ java, scala, python, r.
- Phân tích thời gian thực:
- Apache spark có thể xử lý dữ liệu thời gian thực, nghĩa là dữ liệu từ các luồng sự kiện thời gian thực với tốc độ hàng triệu sự kiện mỗi giây. Ví dụ: dữ liệu twitter hoặc chia sẻ, đăng lên facebook. Sức mạnh của tia lửa nằm ở khả năng xử lý luồng thời gian thực hiệu quả.
- Apache Spark có thể được sử dụng để xử lý phát hiện gian lận trong khi thực hiện các giao dịch ngân hàng. Điều này là do, tất cả các khoản thanh toán trực tuyến được thực hiện trong thời gian thực và chúng tôi cần ngăn chặn các giao dịch gian lận trong quá trình thanh toán.
- Mục đích sử dụng:
- Xử lý dữ liệu tương tác và nhanh chóng
- Xử lý đồ họa
- Nhiệm vụ lặp đi lặp lại
- Xử lý theo thời gian thực
- Thêm tập dữ liệu
- Máy học
- Apache spark là một khung thực thi dữ liệu dựa trên hadoop hdfs. Apache Spark không phải là sự thay thế Hadoop mà là một khung ứng dụng. Apache Spark tuy ra đời sau nhưng được biết đến nhiều hơn Apache Hadoop bởi khả năng xử lý hàng loạt và thời gian thực.
Hiện nay các hãng lớn như yahoo, ebay, ibm, cisco đã sử dụng spark trong sản phẩm của mình…
Với sự phát triển mạnh mẽ của apache spark trong những năm gần đây, các lập trình viên cũng như các nhà khoa học máy tính có thêm những công cụ hữu hiệu để phục vụ cho công việc của mình, và người ta sẽ dần lãng quên “hadoop.stack” mà thay vào đó là “big data stack”, với những tùy chọn vượt xa hơn chỉ là hadoop.