2013-07-03 318 views
6

好吧,我已經嘗試搜索網絡和本網站,爲這個問題的答案,這似乎是一個非常基本的問題。我完全不知道大數據處理。Hadoop和數據庫之間的關係

我想知道HDFS和數據庫之間的關係。是否有必要使用HDFS,數據採用某種NoSQL格式?使用HDFS時是否總是附帶一個特定的數據庫?我知道cloudera提供Hadoop解決方案,他們使用HBase。

我可以使用關係數據庫作爲Hadoop的本機數據庫嗎?

回答

0

Hadoop的優勢在於能夠使用複製來存儲數據,所以您不能讓Hadoop「工作」,比如SQL Server,也不會有多大意義。有HBase,Hive和Pig環境(以及其他)可以設置爲與Hadoop一起工作,它們的外觀和感覺與常規SQL語言相似。如果您想在15分鐘內從0到大數據一起玩,請查看Hortonworks' Sandbox。希望這可以幫助。

+0

它確實有幫助。謝謝。我沒有考慮Hadoop複製數據這一點,所以是的,這讓我認爲SQL數據庫與本地數據庫不兼容。 – crossvalidator

1

你真的想要達到什麼目標,這是不明確的問題。

HDFS和數據庫之間只有間接關係。 HDFS是一個文件系統,而不是數據庫。 Hadoop是並行處理框架(MapReduce)和文件系統HDFS的組合。並行處理框架使用一種叫做InputFormat的方法從HDFS文件系統中獲取大塊數據。一些數據庫如:Oracle NoSQL數據庫(ONDB),Cassandra,Riak等能夠返回包含其數據的InputFormat,因此它們可以作爲MapReduce處理的來源,就像來自HDFS的數據一樣。

那麼,你想做什麼?

當您有大量數據尚未彙總和/或構建到某個更高級別處理所需的模型中時,Hadoop和HDFS通常很有用。有時候(儘管可能被迫的次數比真正需要的次數多),Hadoop可以用於執行更高級別的處理,通常在另一種利用體面模型的處理/存儲技術中完成。想想谷歌即時搜索引擎創建過去在MapReduce上運行,然後他們開發了一個模型,現在使用更好的方法..不能單獨在MapReduce上執行Google Instant。

+0

我真的只想知道什麼樣的數據庫可以直接與Hadoop一起使用,即沒有任何連接程序可能會改變數據格式。基本上,我不明白爲什麼SQOOP存在。爲什麼我們不能直接在Hadoop上使用SQL數據。正如Dan博士指出的,數據的複製對於SQL來說是不可行的。我想知道是否還有其他問題? – crossvalidator

+0

@crossvalidator:請參閱編輯回答以迴應此評論。這是不可能的。 – Tariq

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

沒有relation爲2之間,例如如果您仍然希望找到一些相似性,這是常見的2條文store數據的唯一的事情。但是這與任何FS和DB組合相似。例如MySQL和ext3。你說你在MySQL中存儲數據,但最終你的數據存儲在你的FS上面。通常,人們在其Hadoop集羣之上使用NoSQL數據庫(如HBase)來利用HDFS提供的並行和分佈式行爲。

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

其實沒有什麼像NoSQL format。您可以使用HDFS對任何類型的數據,文本,二進制XML的等等等等

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

號,其自帶加上HDFS的唯一事情是MapReduce framework。您顯然可以讓數據庫與HDFS一起工作。人們經常在HDFS上使用NoSQL DB。有幾種選擇,如Cassandra,HBase等。完全由您決定使用哪一個。

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

沒有OOTB功能允許這樣做。而且,在Hadoop中使用RDBMS並沒有什麼意義。 Hadoop是在RDBMS不適合的時候開發的,例如處理數據PB,處理非結構化數據等等。既然如此,你不能想到Hadoop是RDBMB的替代品。兩者都有完全不同的目標。

編輯:

通常人們使用的NoSQL DB中(如HBase的,卡桑德拉)用Hadoop。將這些數據庫與hadoop一起使用僅僅是一個配置問題。爲了實現這一點,您不需要任何連接程序。除了@Doctor Dan提出的觀點之外,選擇NoSQL DB代替SQL DB的原因很少。有一件事是size。這些NoSQL DB提供了很好的橫向可縮放性,使您可以輕鬆地存儲PB數據。您可以縱向擴展傳統系統。數據的另一個原因是complexity。使用這些數據庫的地方大多處理高度非結構化的數據,這對使用傳統系統不太容易處理。例如,傳感器數據,日誌數據等。

基本上,我不明白爲什麼SQOOP存在。爲什麼我們不能直接在Hadoop上使用SQL數據。

儘管Hadoop非常善於處理您的BigData需求,但它並不是解決您所有需求的解決方案。它不適合實時需要。假設你是一個擁有非常龐大數據集的在線交易公司。您發現您可以使用Hadoop輕鬆處理這些數據。但問題在於,您無法滿足Hadoop客戶的實時需求。這就是SQOOP的出現。它是一個導入/導出工具,允許您在SQL DB和Hadoop之間移動數據。您可以將BigData移動到您的Hadoop集羣中,在那裏處理它,然後使用SQOOP將結果推回到您的SQL DB中,以滿足客戶的實時需求。

HTH

+1

非常好的解釋...不知道爲什麼用戶不接受這個作爲答案..只是+1 :) – Trialcoder