2013-07-03 83 views
6

Ok..Tôi đã thử tìm kiếm trên web và trang web này để có câu trả lời cho câu hỏi này có vẻ như là một câu hỏi rất cơ bản. Tôi hoàn thành noob để xử lý dữ liệu lớn.Mối quan hệ giữa Hadoop và cơ sở dữ liệu

Tôi muốn biết mối quan hệ giữa HDFS và cơ sở dữ liệu. Có phải luôn luôn cần thiết để sử dụng HDFS, dữ liệu có ở định dạng NoSQL nào đó không? Có một cơ sở dữ liệu cụ thể luôn gắn kèm khi sử dụng HDFS không? Tôi biết cloudera cung cấp các giải pháp Hadoop và họ sử dụng HBase.

Tôi có thể sử dụng cơ sở dữ liệu quan hệ làm cơ sở dữ liệu gốc cho Hadoop không?

Trả lời

0

Lợi thế của Hadoop là khả năng lưu trữ dữ liệu với bản sao, vì vậy bạn không thể có Hadoop "làm việc", nói, SQL Server, cũng không có ý nghĩa gì nhiều. Có các môi trường HBase, Hive và Pig (và các môi trường khác) có thể được thiết lập để làm việc với Hadoop, và chúng trông giống như các ngôn ngữ SQL thông thường. Hãy xem Hortonworks' Sandbox nếu bạn muốn chơi trò chơi nào đó, như họ nói, từ 0 đến Big Data trong 15 phút. Hi vọng điêu nay co ich.

+0

Nó sẽ giúp ích. Cảm ơn bạn. Tôi không xem xét điểm mà Hadoop sao chép dữ liệu - vì vậy có, điều đó làm cho một cơ sở dữ liệu SQL không tương thích như một cơ sở dữ liệu riêng tôi đoán. – crossvalidator

1

Bạn thực sự muốn đạt được điều gì, điều đó không rõ ràng từ câu hỏi của bạn.

Chỉ có mối quan hệ gián tiếp giữa HDFS và Cơ sở dữ liệu. HDFS là một hệ thống tệp, không phải là một cơ sở dữ liệu. Hadoop là một sự kết hợp của khung xử lý song song (MapReduce) và hệ thống tệp HDFS. Khung xử lý song song lấy khối dữ liệu từ hệ thống tệp HDFS bằng cách sử dụng một cái gì đó gọi là và InputFormat. Một số cơ sở dữ liệu như: Cơ sở dữ liệu Oracle NoSQL (ONDB), Cassandra, Riak, những người khác có khả năng trả về một InputFormat chứa dữ liệu của họ, để họ có thể tham gia như một nguồn để xử lý MapReduce, giống như dữ liệu từ HDFS.

Vì vậy, một lần nữa, bạn muốn làm gì?

Hadoop và HDFS nói chung hữu ích khi bạn có một lượng lớn dữ liệu chưa được tổng hợp và/hoặc được cấu trúc thành một số mô hình cần thiết để xử lý cấp cao hơn. Đôi khi (mặc dù qustionably buộc thường xuyên hơn thực sự cần thiết), Hadoop có thể được sử dụng để xử lý cấp cao hơn mà thường được thực hiện trong một công nghệ xử lý/lưu trữ khác thúc đẩy một mô hình khá. Hãy nghĩ Google Instant, việc tạo chỉ mục tìm kiếm được sử dụng để chạy trên MapReduce, sau đó họ đã phát triển một mô hình và hiện đang sử dụng một cách tiếp cận tốt hơn .. không thể làm Google Instant trên MapReduce một mình.

+0

Tôi thực sự chỉ muốn biết loại cơ sở dữ liệu nào có thể được sử dụng trực tiếp với Hadoop, tức là không có bất kỳ chương trình kết nối nào có thể thay đổi định dạng dữ liệu. Về cơ bản, tôi không hiểu tại sao SQOOP tồn tại. Tại sao chúng ta không thể trực tiếp sử dụng dữ liệu SQL trên Hadoop. Như bác sĩ Dan đã chỉ ra, việc sao chép dữ liệu sẽ không khả thi với SQL. Tôi tự hỏi liệu có bất kỳ mối quan tâm nào khác không? – crossvalidator

+0

@crossvalidator: Vui lòng xem câu trả lời đã chỉnh sửa để trả lời nhận xét này. Không thể viết được nó ở đây. – Tariq

12
I want to know the relationship between HDFS and databases. 

Không có relation như vậy giữa 2. Nếu bạn vẫn muốn tìm một số giống nhau, điều duy nhất mà là phổ biến giữa 2 là cung cấp cho store dữ liệu. Nhưng điều này tương tự với bất kỳ kết hợp FS và DB nào. MySQL và ext3, ví dụ. Bạn nói rằng bạn đang lưu trữ dữ liệu trong MySQL, nhưng cuối cùng dữ liệu của bạn được lưu trữ trên FS của bạn. Thông thường, mọi người sử dụng cơ sở dữ liệu NoSQL, như HBase, trên đầu trang của cụm Hadoop của họ để khai thác tính song song và hành vi phân phối do HDFS cung cấp.

Is it always necessary that to use HDFS, the data be in a some NoSQL format? 

Thực ra không có gì giống như NoSQL format. Bạn có thể sử dụng HDFS cho bất kỳ loại dữ liệu, văn bản, nhị phân, xml vv vv

Is there a specific database that always comes attached when using HDFS? 

số Điều duy nhất mà đi kèm cùng với HDFS là MapReduce framework. Bạn rõ ràng có thể làm cho một DB làm việc với HDFS. Folks thường sử dụng NoSQL DBs trên đầu trang của HDFS. Có một số lựa chọn như Cassandra, HBase, vv. Hoàn toàn tùy thuộc vào bạn để quyết định nên sử dụng cái nào.

Can I use a relational database as the native database for Hadoop? 

Không có tính năng OOTB cho phép điều này.Hơn nữa, nó không có ý nghĩa nhiều khi sử dụng RDBMS với Hadoop. Hadoop đã được phát triển cho những lần RDBMS không phải là tùy chọn thích hợp, như xử lý các dữ liệu PB, xử lý dữ liệu phi cấu trúc… Có nói rằng, bạn không phải nghĩ về Hadoop như là một sự thay thế cho các RDBMB. Cả hai đều có mục tiêu hoàn toàn khác nhau.

EDIT:

thường folks sử dụng NoSQL DBS (như HBase, Cassandra) với Hadoop. Việc sử dụng các DB này với hadoop chỉ đơn thuần là vấn đề cấu hình. Bạn không cần bất kỳ chương trình kết nối nào để đạt được điều này. Ngoài điểm được thực hiện bởi @Doctor Dan, có một vài lý do khác đằng sau việc chọn NoSQL DBs thay cho SQL DBs. Một điều là size. Các NoSQL DB này cung cấp khả năng mở rộng ngang tuyệt vời cho phép bạn lưu trữ PBs dữ liệu dễ dàng. Bạn có thể mở rộng hệ thống truyền thống, nhưng theo chiều dọc. Một lý do khác là complexity dữ liệu. Các địa điểm, nơi các DB này đang được sử dụng, chủ yếu là xử lý dữ liệu không có cấu trúc cao mà không phải là rất dễ dàng để đối phó với việc sử dụng các hệ thống truyền thống. Ví dụ: dữ liệu cảm biến, dữ liệu nhật ký, v.v.

Về cơ bản, tôi không hiểu tại sao SQOOP tồn tại. Tại sao chúng ta không thể trực tiếp sử dụng dữ liệu SQL trên Hadoop.

Mặc dù Hadoop rất giỏi xử lý các nhu cầu BigData của bạn, nhưng đó không phải là giải pháp cho mọi nhu cầu của bạn. Nó không thích hợp cho nhu cầu thời gian thực. Giả sử bạn là một Công ty giao dịch trực tuyến có số liệu rất lớn. Bạn thấy rằng bạn có thể xử lý dữ liệu này rất dễ dàng bằng cách sử dụng Hadoop. Nhưng vấn đề là bạn không thể phục vụ nhu cầu thời gian thực của khách hàng của bạn với Hadoop. Đây là nơi SQOOP đi vào hình ảnh. Nó là một công cụ nhập/xuất cho phép bạn di chuyển dữ liệu giữa một DB SQL và Hadoop. Bạn có thể di chuyển BigData vào cụm Hadoop của bạn, xử lý nó ở đó và sau đó đẩy các kết quả trở lại vào SQL DB của bạn bằng cách sử dụng SQOOP để phục vụ các nhu cầu thời gian thực của khách hàng của bạn.

HTH

+1

Giải thích rất hay ... không biết tại sao người dùng không chấp nhận câu trả lời này như một câu trả lời..như 1 :) – Trialcoder

Các vấn đề liên quan