?一、hadoop是什么?
(1)Hadoop是一個開發(fā)和運行處理大規(guī)模數(shù)據(jù)的軟件平臺,可編寫和運行分布式應(yīng)用處理大規(guī)模數(shù)據(jù),是Appach的一個用java語言實現(xiàn)開源軟件框架,實現(xiàn)在大量計算機組成的集群中對海量數(shù)據(jù)進行分布式計算(或?qū)殡x線和大規(guī)模數(shù)據(jù)分析而設(shè)計的)并不適合那種對幾個記錄隨機讀寫的在線事務(wù)處理模式。
Hadoop=HDFS(文件系統(tǒng),數(shù)據(jù)存儲技術(shù)相關(guān))+ Mapreduce(數(shù)據(jù)處理),Hadoop的數(shù)據(jù)來源可以是任何形式,在處理半結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù)上與關(guān)系型數(shù)據(jù)庫相比有更好的性能,具有更靈活的處理能力,不管任何數(shù)據(jù)形式最終會轉(zhuǎn)化為key/value,key/value是基本數(shù)據(jù)單元。用函數(shù)式變成Mapreduce代替SQL,SQL是查詢語句,而Mapreduce則是使用腳本和代碼,而對于適用于關(guān)系型數(shù)據(jù)庫,習(xí)慣SQL的Hadoop有開源工具hive代替。
(2)Hadoop就是一個分布式計算的解決方案。
Hadoop框架中最核心設(shè)計就是:HDFS和MapReduce.HDFS提供了海量數(shù)據(jù)的存儲,MapReduce提供了對數(shù)據(jù)的計算。
數(shù)據(jù)在Hadoop中處理的流程可以簡單的按照下圖來理解:數(shù)據(jù)通過Haddop的集群處理后得到結(jié)果。
?
優(yōu)點
Hadoop是一個能夠?qū)Υ罅繑?shù)據(jù)進行分布式處理的軟件框架。 Hadoop 以一種可靠、高效、可伸縮的方式進行數(shù)據(jù)處理。
Hadoop 是可靠的,因為它假設(shè)計算元素和存儲會失敗,因此它維護多個工作數(shù)據(jù)副本,確保能夠針對失敗的節(jié)點重新分布處理。
Hadoop 是高效的,因為它以并行的方式工作,通過并行處理加快處理速度。
Hadoop 還是可伸縮的,能夠處理 PB 級數(shù)據(jù)。
此外,Hadoop 依賴于社區(qū)服務(wù),因此它的成本比較低,任何人都可以使用。
Hadoop是一個能夠讓用戶輕松架構(gòu)和使用的分布式計算平臺。用戶可以輕松地在Hadoop上開發(fā)和運行處理海量數(shù)據(jù)的應(yīng)用程序。它主要有以下幾個優(yōu)點:
高可靠性。Hadoop按位存儲和處理數(shù)據(jù)的能力值得人們信賴。
高擴展性。Hadoop是在可用的計算機集簇間分配數(shù)據(jù)并完成計算任務(wù)的,這些集簇可以方便地擴展到數(shù)以千計的節(jié)點中。.
高效性。Hadoop能夠在節(jié)點之間動態(tài)地移動數(shù)據(jù),并保證各個節(jié)點的動態(tài)平衡,因此處理速度非???。
高容錯性。Hadoop能夠自動保存數(shù)據(jù)的多個副本,并且能夠自動將失敗的任務(wù)重新分配。
低成本。與一體機、商用數(shù)據(jù)倉庫以及QlikView、Yonghong Z-Suite等數(shù)據(jù)集市相比,hadoop是開源的,項目的軟件成本因此會大大降低。
Hadoop帶有用Java語言編寫的框架,因此運行在 Linux 生產(chǎn)平臺上是非常理想的。Hadoop 上的應(yīng)用程序也可以使用其他語言編寫,比如 C++。
?
hadoop大數(shù)據(jù)處理的意義
Hadoop得以在大數(shù)據(jù)處理應(yīng)用中廣泛應(yīng)用得益于其自身在數(shù)據(jù)提取、變形和加載(ETL)方面上的天然優(yōu)勢。Hadoop的分布式架構(gòu),將大數(shù)據(jù)處理引擎盡可能的靠近存儲,對例如像ETL這樣的批處理操作相對合適,因為類似這樣操作的批處理結(jié)果可以直接走向存儲。Hadoop的MapReduce功能實現(xiàn)了將單個任務(wù)打碎,并將碎片任務(wù)(Map)發(fā)送到多個節(jié)點上,之后再以單個數(shù)據(jù)集的形式加載(Reduce)到數(shù)據(jù)倉庫。
hadoop能做什么?
hadoop擅長日志分析,facebook就用Hive來進行日志分析,2009年時facebook就有非編程人員的30%的人使用HiveQL進行數(shù)據(jù)分析;淘寶搜索中的 自定義篩選也使用的Hive;利用Pig還可以做高級的數(shù)據(jù)處理,包括Twitter、LinkedIn 上用于發(fā)現(xiàn)您可能認識的人,可以實現(xiàn)類似Amazon.com的協(xié)同過濾的推薦效果。淘寶的商品推薦也是!在Yahoo!的40%的Hadoop作業(yè)是用pig運行的,包括垃圾郵件的識別和過濾,還有用戶特征建模。(2012年8月25新更新,天貓的推薦系統(tǒng)是hive,少量嘗試mahout?。?/p>
下面舉例說明:
設(shè)想一下這樣的應(yīng)用場景。 我有一個100M 的數(shù)據(jù)庫備份的sql 文件。我現(xiàn)在想在不導(dǎo)入到數(shù)據(jù)庫的情況下直接用grep操作通過正則過濾出我想要的內(nèi)容。例如:某個表中 含有相同關(guān)鍵字的記錄那么有幾種方式,一種是直接用linux的命令 grep 還有一種就是通過編程來讀取文件,然后對每行數(shù)據(jù)進行正則匹配得到結(jié)果好了 現(xiàn)在是100M 的數(shù)據(jù)庫備份。上述兩種方法都可以輕松應(yīng)對。
那么如果是1G , 1T 甚至 1PB 的數(shù)據(jù)呢 ,上面2種方法還能行得通嗎? 答案是不能。畢竟單臺服務(wù)器的性能總有其上限。那么對于這種 超大數(shù)據(jù)文件怎么得到我們想要的結(jié)果呢?
有種方法 就是分布式計算, 分布式計算的核心就在于 利用分布式算法 把運行在單臺機器上的程序擴展到多臺機器上并行運行。從而使數(shù)據(jù)處理能力成倍增加。但是這種分布式計算一般對編程人員要求很高,而且對服務(wù)器也有要求。導(dǎo)致了成本變得非常高。
Haddop 就是為了解決這個問題誕生的.Haddop 可以很輕易的把 很多l(xiāng)inux的廉價pc 組成 分布式結(jié)點,然后編程人員也不需要知道分布式算法之類,只需要根據(jù)mapreduce的規(guī)則定義好接口方法,剩下的就交給Haddop. 它會自動把相關(guān)的計算分布到各個結(jié)點上去,然后得出結(jié)果。
例如上述的例子 : Hadoop 要做的事 首先把 1PB的數(shù)據(jù)文件導(dǎo)入到 HDFS中, 然后編程人員定義好 map和reduce, 也就是把文件的行定義為key,每行的內(nèi)容定義為value , 然后進行正則匹配,匹配成功則把結(jié)果 通過reduce聚合起來返回.Hadoop 就會把這個程序分布到N 個結(jié)點去并行的操作。
那么原本可能需要計算好幾天,在有了足夠多的結(jié)點之后就可以把時間縮小到幾小時之內(nèi)。
這也就是所謂的 大數(shù)據(jù) 云計算了。如果還是不懂的話再舉個簡單的例子
比如 1億個 1 相加 得出計算結(jié)果, 我們很輕易知道結(jié)果是 1億。但是計算機不知道。那么單臺計算機處理的方式做一個一億次的循環(huán)每次結(jié)果+1
那么分布式的處理方式則變成 我用 1萬臺 計算機,每個計算機只需要計算 1萬個 1 相加 然后再有一臺計算機把 1萬臺計算機得到的結(jié)果再相加從而得到最后的結(jié)果。
理論上講, 計算速度就提高了 1萬倍。 當然上面可能是一個不恰當?shù)睦印5^分布式,大數(shù)據(jù),云計算 大抵也就是這么回事了。
?
hadoop是什么語言開發(fā)的
(1)Hadoop的創(chuàng)始人是Doug Cutting, 同時也是著名的基于Java的檢索引擎庫Apache Lucene的創(chuàng)始人。Hadoop本來是用于著名的開源搜索引擎Apache Nutch,而Nutch本身是基于Lucene的,而且也是Lucene的一個子項目。因此Hadoop基于Java就很理所當然了。
(2)用其他語言開發(fā)的Hadoop應(yīng)用大多數(shù)是使用Hadoop-Streaming來和框架對接的。 因為Streaming會fork一個java進程來讀寫Python/Perl/C++的stdin/stdout,開銷會大一些。較大的任務(wù)、長期運行的任務(wù),推薦使用Java。
?
評論