目前Hadoop在數據庫和內容管理領域已經擁有了大量擁躉。可是不少研究它的人並無真正清楚它究竟是什麼,怎樣才能把它發揮到極致。算法
Cloudera的CEO和Strata會議的發言人邁克奧爾森在下面的訪問中論述了Hadoop的背景和它的應用(Cloudera提供了Hadoop的一個商業化的發佈版本,而且貢獻給了這個項目)。數據庫
Hadoop來自哪裏?服務器
Mike Olson:核心的技術是由谷歌公司早期發明的,因此他們用心地檢索了他們收集到的全部充分的組織和結構上的信息,這些以後對於用戶來說表現力更強做用也更明顯。事實上沒有市場去驅動他們作這件事,他們只是在建造他們本身的平臺。谷歌的創造力被歸入到了Nutch裏面,一個開源的項目,可是Hadoop很快就從中拆分出去了。雅虎在開發Hadoop面向企業應用的過程當中起到了關鍵的做用。框架
Hadoop能夠解決什麼問題?運維
Mike Olson:Hadoop平臺被設計用於處理大量的數據——這些數據可能包含了複雜和結構化的數據的混合,可是這種數據不適合存入數據表中。它是用於當你想要深刻地瞭解分析,充分計算,像集羣和目標性強的場景。就像谷歌如今在作的同樣:檢索萬維網而且檢查用戶行爲用於改善算法的可用性和性能。工具
Hadoop投入到一些商業應用中。在金融領域,若是你想作精準的投資評估和風險分析,你能夠建構難於使用數據庫引擎進行處理的經驗模型。可是Hadoop能夠處理它。在電商領域,若是你想返回更佳的搜索結果給買家展現,以期吸引他們來買你的商品的時候,谷歌建立的平臺已經完美地解決了排序問題。這裏只是列舉這幾個例子。oop
Hadoop是怎樣構建的呢?性能
Mike Olson:Hadoop被設計運行在大量不共享任何內存或磁盤的機器之上。這意味着你能夠賣一整套高配置的服務器,仍在機器架子上,而後在任何一臺上面運行Hadoop軟件。當你想要加載全部你的組織代碼到Hadoop中的時候,它的作法是把數據分片,而後在不一樣的服務器上擴展。沒有哪一個地方是你能夠所有了解數據的地方;Hadoop保持數據存放點的軌跡。由於有不少拷貝的存儲,存在下線或者死掉的機器上的數據會自動從無缺的上面拷貝下來。開發工具
在集中式的數據庫系統中,你可使用一個大的磁盤鏈接4,8或16核的CPU來作存儲和計算。可是這也承載了大量的電力。在Hadoop集羣中,每一個服務器都有着2,4或者8個核心的CPU,你能夠經過將代碼發佈到集羣中空閒的機器來運行你的索引任務,每一個服務器執行你的數據的一小部分。結果最後結合起來發送給你。這就是MapReduce的機制:你將操做映射到每一個服務器,而後彙總結果到單個結果集中。設計
總的來講,你可以處理大量數據的緣由在於Hadoop能夠將他們分佈到多臺機器進行計算。你能夠回答複雜的計算問題是由於你獲得了更多的處理器,並行地合做運行。
這麼說吧,咱們的公司有沒有必要開發本身的Hadoop應用呢?
Mike Olson:毫無偏袒地說,目前的Hadoop解決方案必需要作的比關係型數據庫解決方案更富有經驗。現實是沒有不少包裝過的應用能夠作到跳出盒子看世界,而且運行在Hadoop處理器之上。衆所周知,上世紀80年代早期當Ingres和IBM開始銷售他們本身的數據庫引擎,人們纔開始真正地編寫本地應用程序來操做數據。
這就是說,你能夠在Hadoop框架下開發支持不一樣語言的應用程序。開發工具和接口都很簡單。咱們的友商———Informatica就是一個很好的例子——他們已經移植了他們的工具,這樣就可使用Hadoop接口在Hadoop集羣中存儲數據。有專業的運維人員講解,還有很酷的查詢工具:一款可讓你愛上在Hadoop集羣上管理你的數據,Pig,是雅虎開發用來讓數據流和數據的轉換操做在Hadoop上得以運行的一門語言。
Hadoop在這個階段的發佈碰上了比較棘手的問題,可是咱們的工程師會很快建立應用來解決這些問題。我想在接下來的幾年之中能夠看到更多的閉環應用(Hadoop生態內部的)。
你怎麼看待關於SQL和NOSQL的爭論?
Mike Olson:我十分信任關係型數據庫。我認爲SQL語言是很酷的,而且產品也是值得信賴的。
我討厭術語「NOSQL」。有一些不一樣的工程,每一個都有着不一樣的屬性和行爲。而它應運而生。但是真正的問題是,你用來解決什麼問題?由於那是對用戶最有價值的地方。