2010-09-22 28 views
8

Nếu tôi hiểu chính xác hệ sinh thái Hadoop, tôi có thể chạy công việc MapReduce của tôi tìm nguồn cung ứng dữ liệu từ HDFS hoặc HBase. Giả sử giả thiết trước đó là chính xác, tại sao tôi lại chọn một giả định khác? Có lợi ích về hiệu suất, độ tin cậy, chi phí hoặc dễ sử dụng để sử dụng HBase như một nguồn MR không?Nguồn Hadoop MR: HDFS vs HBase. Lợi ích của mỗi?

Điều tốt nhất tôi có thể tìm thấy là trích dẫn này, "HBase là ứng dụng Hadoop để sử dụng khi bạn yêu cầu truy cập đọc/ghi ngẫu nhiên theo thời gian thực vào các tập dữ liệu rất lớn". - Tom White (2009) Hadoop: Hướng dẫn dứt khoát, Ấn bản đầu tiên

Trả lời

6

Sử dụng thẳng lên Hadoop Map/Reduce over HDFS, đầu vào và đầu ra của bạn thường được lưu trữ dưới dạng tệp văn bản phẳng hoặc Hadoop SequenceFiles, các đối tượng được truyền trực tiếp vào đĩa. Những kho dữ liệu này ít nhiều bất biến. Điều này làm cho Hadoop phù hợp với các tác vụ xử lý hàng loạt.

HBase là một cơ sở dữ liệu chính thức (mặc dù không quan hệ) sử dụng HDFS làm bộ nhớ. Điều này có nghĩa là bạn có thể chạy các truy vấn và cập nhật tương tác trên tập dữ liệu của mình.

Điều tốt đẹp về HBase là nó hoạt động độc đáo với hệ sinh thái Hadoop, vì vậy nếu bạn có nhu cầu thực hiện xử lý hàng loạt cũng như các hoạt động tương tác, chi tiết, mức ghi trên bộ dữ liệu khổng lồ, HBase sẽ làm tốt cả hai.

+0

Cảm ơn, những gì tôi đang tìm kiếm. – Andre

0

Một số hạn chế có liên quan của HDFS (là cặp đôi nguồn mở với Hệ thống tệp Google) được tìm thấy trong the original Google File System paper.

Về các trường hợp sử dụng mục tiêu, chúng ta đọc:

Thứ ba, hầu hết các tập tin được biến đổi bằng cách thêm dữ liệu mới hơn là ghi đè lên dữ liệu hiện có. Viết ngẫu nhiên trong phạm vi một tệp thực tế không tồn tại. [...]

[...] Với này mô hình truy cập vào các tập tin lớn, phụ thêm trở thành tiêu điểm tối ưu hóa hiệu suất và số nguyên tử bảo lãnh, [...]

Kết quả là :

[...] chúng tôi đã nới lỏng mô hình nhất quán GFS để bao la đơn giản hóa hệ thống tập tin mà không cần áp đặt một gánh nặng phiền hà trên các ứng dụng. Chúng tôi cũng đã giới thiệu một hoạt động nối thêm nguyên tử để nhiều khách hàng có thể nối thêm đồng thời vào một tệp mà không cần đồng bộ hóa thêm giữa chúng.

Một kỷ lục nối thêm dữ liệu nguyên nhân (các “kỷ lục”) là nối nguyên tử ít nhất một lần ngay cả trong sự hiện diện của đột biến đồng thời, [...]

Nếu tôi đọc báo một cách chính xác, sau đó một số bản sao của mỗi tệp (theo nghĩa HDFS) sẽ không nhất thiết phải giống hệt nhau. Nếu khách hàng chỉ sử dụng các hoạt động nguyên tử, mỗi tệp có thể được coi là một kết nối của các bản ghi (mỗi từ một trong các hoạt động đó), nhưng chúng có thể bị trùng lặp trong một số bản sao và thứ tự của chúng có thể khác với bản sao. (Mặc dù rõ ràng cũng có thể có một số đệm chèn vào, vì vậy nó thậm chí không sạch sẽ như vậy - đọc giấy.) Tùy thuộc vào người dùng quản lý các ranh giới kỷ lục, số nhận dạng duy nhất, tổng kiểm tra, v.v.

Vì vậy, điều này không giống như hệ thống tệp mà chúng tôi đã sử dụng trên máy tính để bàn của mình.

Lưu ý rằng HDFS là không tốt cho nhiều tập tin nhỏ, bởi vì:

  1. Mỗi sẽ phân bổ thường 64 MB đoạn (source).

  2. Kiến trúc của nó không tốt trong việc quản lý một số lượng lớn tệp tên (nguồn: giống như trong mục   1). Có một chủ duy nhất duy trì tất cả các tên tập tin (mà hy vọng phù hợp với RAM của nó).

+0

Lưu ý rằng có một số [khác biệt giữa GoogleFS và HDFS] (https://www.quora.com/What-is-the-difference-between-the-Hadoop-file-distributed-system-and-the-Google- file-system/answer/Aditya-Kulkarni-2), nhưng có vẻ như không có gì khác biệt về cơ bản. –