So sánh Apache Hadoop và Apache Spark

Với mỗi năm, có vẻ như ngày càng có nhiều mạng lưới hệ thống phân tán trên thị trường để quản trị khối lượng tài liệu, sự phong phú và tốc độ. Trong số những mạng lưới hệ thống này, Hadoop và Spark là hai mạng lưới hệ thống liên tục nhận được nhiều tâm lý nhất. Nhưng làm thế nào bạn hoàn toàn có thể quyết định hành động cái nào tương thích với bạn ?Nếu bạn muốn giải quyết và xử lý tài liệu nhấp chuột, liệu có hài hòa và hợp lý để bó tài liệu và nhập tài liệu vào HDFS hoặc hoạt động giải trí với Spark Streaming không ? Nếu bạn đang muốn học máy và quy mô Dự kiến, Mahout hoặc MLLib sẽ tương thích với mục tiêu của bạn hơn ?

Để thêm vào sự nhầm lẫn, Spark và Hadoop thường hoạt động cùng với dữ liệu xử lý Spark nằm trong HDFS, hệ thống tệp của Hadoop. Nhưng, chúng là những thực thể riêng biệt và riêng biệt, mỗi thực thể đều có ưu và nhược điểm riêng và các trường hợp sử dụng kinh doanh cụ thể.

Bạn đang đọc: Hadoop so với Spark: So sánh trực tiếp

Bài viết này sẽ xem xét hai mạng lưới hệ thống từ những quan điểm sau : kiến ​ ​ trúc, hiệu suất, ngân sách, bảo mật thông tin và học máy .

Hadoop là gì?

Hadoop đã mở màn như một dự án Bất Động Sản của Yahoo vào năm 2006, trở thành một dự án Bất Động Sản nguồn mở Apache cấp cao nhất sau này. Đây là một hình thức giải quyết và xử lý phân tán có mục tiêu chung có 1 số ít thành phần : Hệ thống tệp phân tán Hadoop [ HDFS ], tàng trữ những tệp ở định dạng gốc Hadoop và song song chúng trên một cụm ; YARN, một trình lập lịch biểu điều phối thời hạn chạy ứng dụng ; và MapReduce, thuật toán thực sự giải quyết và xử lý tài liệu song song. Hadoop được thiết kế xây dựng bằng Java và hoàn toàn có thể truy vấn trải qua nhiều ngôn từ lập trình, để viết mã MapReduce, gồm có cả Python, trải qua ứng dụng khách Thrift .Ngoài những thành phần cơ bản này, Hadoop cũng gồm có Sqoop, giúp chuyển tài liệu quan hệ thành HDFS ; Hive, giao diện giống như SQL được cho phép người dùng chạy truy vấn trên HDFS ; và Mahout, cho máy học. Ngoài việc sử dụng HDFS để tàng trữ tệp, giờ đây Hadoop cũng hoàn toàn có thể được thông số kỹ thuật để sử dụng những thùng S3 hoặc những đốm Azure làm đầu vào .Nó có sẵn nguồn mở trải qua phân phối Apache hoặc trải qua những nhà sản xuất như Cloudera [ nhà cung ứng Hadoop lớn nhất theo size và khoanh vùng phạm vi ], MapR hoặc HortonWorks .

Spark là gì?

Spark là một dự án Bất Động Sản mới hơn, bắt đầu được tăng trưởng vào năm 2012, tại AMPLab tại UC Berkeley. Đây cũng là một dự án Bất Động Sản Apache cấp cao nhất tập trung chuyên sâu vào giải quyết và xử lý tài liệu song song trên một cụm, nhưng điểm độc lạ lớn nhất là nó hoạt động giải trí trong bộ nhớ .Trong khi Hadoop đọc và ghi những tệp vào HDFS, Spark giải quyết và xử lý tài liệu trong RAM bằng cách sử dụng khái niệm được gọi là RDD, Bộ dữ liệu phân tán có năng lực phục sinh. Spark hoàn toàn có thể chạy ở chế độ độc lập, với cụm Hadoop đóng vai trò là nguồn tài liệu hoặc tích hợp với Mesos. Trong trường hợp sau, chủ Mesos sửa chữa thay thế chủ Spark hoặc YARN cho mục tiêu lập lịch .Spark được cấu trúc xung quanh Spark Core, công cụ tinh chỉnh và điều khiển lập lịch, tối ưu hóa và trừu tượng hóa RDD, cũng như liên kết Spark với mạng lưới hệ thống tập tin đúng mực [ HDFS, S3, RDBM hoặc Elaticsearch ]. Có 1 số ít thư viện hoạt động giải trí trên Spark Core, gồm có Spark SQL, được cho phép bạn chạy những lệnh giống như SQL trên những tập dữ liệu phân tán, MLLib cho máy học, GraphX ​ ​ cho những yếu tố về đồ thị và phát trực tuyến được cho phép nguồn vào phát liên tục đăng nhập tài liệu .Spark có 1 số ít API. Giao diện bắt đầu được viết bằng Scala và dựa trên việc sử dụng nhiều tài liệu của những nhà khoa học dữ liệu, những điểm cuối Python và R cũng được thêm vào. Java là một tùy chọn khác để viết những việc làm Spark .Databricks, công ty được xây dựng bởi người phát minh sáng tạo Spark Matei Zaharia, hiện giám sát sự tăng trưởng của Spark và cung ứng phân phối Spark cho người mua .

Kiến trúc

Hadoop

Để mở màn, toàn bộ những tệp được truyền vào HDFS được chia thành những khối. Mỗi khối được sao chép một số ít lần xác lập trên toàn cụm dựa trên kích thước khối và thông số sao chép được định thông số kỹ thuật. Thông tin đó được truyền đến NameNode, theo dõi mọi thứ trên toàn cụm. NameNode gán những tệp cho một số ít nút tài liệu mà sau đó chúng được ghi. Tính chuẩn bị sẵn sàng cao đã được tiến hành vào năm 2012, được cho phép NameNode quy đổi dự trữ sang Node dự trữ để theo dõi toàn bộ những tệp trên một cụm .Thuật toán MapReduce nằm trên HDFS và gồm có một JobTracker. Khi một ứng dụng được viết bằng một trong những ngôn từ, Hadoop đồng ý Trình theo dõi việc làm, chọn nó và phân chia việc làm [ hoàn toàn có thể gồm có mọi thứ từ đếm từ và làm sạch tệp nhật ký, để chạy truy vấn HiveQL trên đầu tài liệu được tàng trữ trong kho Hive ] để TaskTrackers lắng nghe trên những nút khác .YARN phân chia những tài nguyên mà JobTracker tạo ra và giám sát chúng, vận động và di chuyển những tiến trình xung quanh để có hiệu suất cao cao hơn. Tất cả những tác dụng từ quy trình tiến độ MapReduce sau đó được tổng hợp và ghi lại vào đĩa trong HDFS .

Tia lửa

Tay cầm Spark hoạt động theo cách tương tự như Hadoop, ngoại trừ việc tính toán được thực hiện trong bộ nhớ và được lưu trữ ở đó cho đến khi người dùng chủ động duy trì chúng. Ban đầu, Spark đọc từ một tệp trên HDFS, S3 hoặc một filestore khác, thành một cơ chế được thiết lập có tên là SparkContext. Trong bối cảnh đó, Spark tạo ra một cấu trúc gọi là RDD hoặc Bộ dữ liệu phân tán có khả năng phục hồi, đại diện cho một tập hợp các yếu tố bất biến có thể được vận hành song song.

Xem thêm: Các dấu câu [Punctuations] trong tiếng Anh và mục đích sử dụng

Khi RDD và những hành vi tương quan đang được tạo, Spark cũng tạo ra một DAG, hoặc đồ thị theo chu kỳ luân hồi có hướng, để trực quan hóa thứ tự những hoạt động giải trí và mối quan hệ giữa những hoạt động giải trí trong DAG. Mỗi DAG có những quy trình tiến độ và những bước ; theo cách này, nó tựa như như một kế hoạch lý giải trong SQL .Bạn hoàn toàn có thể thực thi những phép biến hóa, những bước trung gian, hành vi hoặc những bước sau cuối trên RDD. Kết quả của một quy đổi đã cho đi vào DAG nhưng không sống sót trên đĩa, nhưng hiệu quả của một hành vi vẫn sống sót toàn bộ tài liệu trong bộ nhớ vào đĩa .Một bản tóm tắt mới trong Spark là DataFrames, được tăng trưởng trong Spark 2.0 như một giao diện sát cánh với RDD. Hai cái này cực kỳ giống nhau, nhưng DataFrames sắp xếp tài liệu thành những cột được đặt tên, tương tự như như những gói gấu trúc hoặc R của Python. Điều này làm cho chúng thân thiện với người dùng hơn RDD, vốn không có bộ tham chiếu tiêu đề cấp cột tựa như. SparkQuery cũng được cho phép người dùng truy vấn DataFrames giống như những bảng SQL trong những kho tài liệu quan hệ .

Hiệu suất

Spark đã được tìm thấy để chạy trong bộ nhớ nhanh hơn 100 lần và nhanh hơn 10 lần trên đĩa. Nó cũng được sử dụng để sắp xếp 100 TB tài liệu nhanh hơn 3 lần so với MapReduce của Hadoop trên một phần mười của máy. Spark đặc biệt quan trọng được phát hiện là nhanh hơn trên những ứng dụng học máy, như Naive Bayes và k-mean .Hiệu suất của Spark, được đo bằng vận tốc giải quyết và xử lý, đã được tìm thấy là tối ưu so với Hadoop, vì một số ít nguyên do :

  1. Spark không bị ràng buộc bởi mối quan tâm đầu vào-đầu ra mỗi khi nó chạy một phần được chọn của tác vụ MapReduce. Nó được chứng minh là nhanh hơn nhiều cho các ứng dụng
  2. DAG của Spark cho phép tối ưu hóa giữa các bước. Hadoop không có bất kỳ kết nối theo chu kỳ nào giữa các bước MapReduce, có nghĩa là không có điều chỉnh hiệu suất nào có thể xảy ra ở cấp đó.

Tuy nhiên, nếu Spark đang chạy trên YARN với những dịch vụ san sẻ khác, hiệu suất hoàn toàn có thể giảm và gây rò rỉ bộ nhớ trên RAM. Vì nguyên do này, nếu người dùng có trường hợp sử dụng giải quyết và xử lý hàng loạt, Hadoop đã được tìm thấy là mạng lưới hệ thống hiệu suất cao hơn .

Chi phí

Cả Spark và Hadoop đều có sẵn không tính tiền dưới dạng những dự án Bất Động Sản Apache nguồn mở, có nghĩa là bạn có năng lực hoàn toàn có thể chạy nó với ngân sách thiết lập bằng không. Tuy nhiên, điều quan trọng là phải xem xét tổng ngân sách chiếm hữu, gồm có bảo dưỡng, mua phần cứng và ứng dụng và thuê một nhóm hiểu về quản trị cụm. Nguyên tắc chung cho việc setup tại chỗ là Hadoop cần nhiều bộ nhớ hơn trên đĩa và Spark nhu yếu nhiều RAM hơn, nghĩa là thiết lập những cụm Spark hoàn toàn có thể tốn kém hơn. Ngoài ra, vì Spark là mạng lưới hệ thống mới hơn, những chuyên viên trong đó hiếm hơn và tốn kém hơn. Một tùy chọn khác là thiết lập bằng cách sử dụng một nhà cung ứng như Cloudera cho Hadoop hoặc Spark cho DataBricks hoặc chạy những quá trình EMR / Mapreduce trên đám mây với AWS .Trích xuất so sánh giá hoàn toàn có thể phức tạp để tách ra vì Hadoop và Spark được chạy song song, ngay cả trên những phiên bản EMR, được thông số kỹ thuật để chạy với Spark được thiết lập. Đối với điểm so sánh ở mức rất cao, giả sử rằng bạn chọn cụm EMR được tối ưu hóa giám sát cho Hadoop, ngân sách cho trường hợp nhỏ nhất, c4.large, là 0,026 đô la mỗi giờ. Cụm tối ưu hóa bộ nhớ nhỏ nhất cho Spark sẽ có giá 0,067 đô la mỗi giờ. Do đó, trên cơ sở mỗi giờ, Spark đắt hơn, nhưng tối ưu hóa thời hạn đo lường và thống kê, những tác vụ tương tự như sẽ tốn ít thời hạn hơn trên cụm Spark .

Dung sai và bảo mật

Hadoop có năng lực chịu lỗi cao vì nó được phong cách thiết kế để sao chép tài liệu trên nhiều nút. Mỗi tệp được chia thành những khối và được sao chép nhiều lần trên nhiều máy, bảo vệ rằng nếu một máy bị hỏng, tệp hoàn toàn có thể được kiến thiết xây dựng lại từ những khối khác ở nơi khác .Khả năng chịu lỗi của Spark được triển khai đa phần trải qua những hoạt động giải trí RDD. Ban đầu, tài liệu tại phần còn lại được tàng trữ trong HDFS, có năng lực chịu lỗi trải qua kiến ​ ​ trúc của Hadoop. Vì một RDD được kiến thiết xây dựng, nên một dòng dõi, ghi nhớ phương pháp bộ tài liệu được thiết kế xây dựng, và, vì nó không bao giờ thay đổi, hoàn toàn có thể kiến thiết xây dựng lại từ đầu nếu cần. Dữ liệu trên những phân vùng Spark cũng hoàn toàn có thể được kiến thiết xây dựng lại trên những nút tài liệu dựa trên DAG. Dữ liệu được sao chép trên những nút của người thực thi và thường hoàn toàn có thể bị hỏng nếu nút hoặc tiếp xúc giữa người thực thi và trình điều khiển và tinh chỉnh không thành công xuất sắc .Cả Spark và Hadoop đều có quyền truy vấn để tương hỗ xác nhận Kerberos, nhưng Hadoop có những tinh chỉnh và điều khiển bảo mật thông tin chi tiết cụ thể hơn cho HDFS. Apache Sentry, một mạng lưới hệ thống để thực thi truy vấn siêu dữ liệu chi tiết cụ thể, là một dự án Bất Động Sản khác dành riêng cho bảo mật thông tin cấp HDFS .

Mô hình bảo mật của Spark hiện còn thưa thớt, nhưng cho phép xác thực thông qua bí mật chung.

Xem thêm: punctures tiếng Anh là gì?

Học máy

Hadoop sử dụng Mahout để giải quyết và xử lý tài liệu. Mahout gồm có phân cụm, phân loại và lọc cộng tác dựa trên lô, toàn bộ đều chạy trên MapReduce. Điều này đang được vô hiệu theo hướng có lợi cho Samsara, ngôn từ DSL được Scala tương hỗ được cho phép triển khai những thao tác trong bộ nhớ và đại số và được cho phép người dùng viết những thuật toán của riêng họ .Spark có một thư viện máy học, MLLib, được sử dụng cho những ứng dụng học máy lặp trong bộ nhớ. Nó có sẵn trong Java, Scala, Python hoặc R, và gồm có phân loại và hồi quy, cũng như năng lực kiến thiết xây dựng những đường ống học máy với kiểm soát và điều chỉnh siêu tham số .

Tổng hợp

Vậy đó là Hadoop hay Spark ? Các mạng lưới hệ thống này là hai trong số những mạng lưới hệ thống phân tán điển hình nổi bật nhất để giải quyết và xử lý tài liệu trên thị trường lúc bấy giờ. Hadoop được sử dụng hầu hết cho những hoạt động giải trí nặng đĩa với quy mô MapReduce và Spark là một kiến ​ ​ trúc giải quyết và xử lý trong bộ nhớ linh động hơn nhưng tốn kém hơn. Cả hai đều là những dự án Bất Động Sản cấp cao nhất của Apache, thường được sử dụng cùng nhau và có những điểm tương đương, nhưng điều quan trọng là phải hiểu những tính năng của từng dự án Bất Động Sản khi quyết định hành động thực thi chúng .

Video liên quan

Chủ Đề