大數(shù)據(jù)時代來了。當所有人都爭吵著這件事情的時候,當所有企業(yè)都看好大數(shù)據(jù)的發(fā)展前景的時候,卻都很少關注這些數(shù)據(jù)從哪兒來,我們有沒有足夠優(yōu)秀的技術能力處理這些數(shù)據(jù)。
聯(lián)網(wǎng)設備增加 數(shù)據(jù)量隨之上升
網(wǎng)絡的發(fā)展無疑為我們迎接大數(shù)據(jù)時代、智能計算時代鋪好了路。根據(jù)研究公司的預測,全球聯(lián)網(wǎng)設備正在增加,在部分國家,人均聯(lián)網(wǎng)設備早已超過2臺;如此大量的聯(lián)網(wǎng)設備和不斷提高的網(wǎng)絡速度都在讓社會的數(shù)據(jù)量快速增長,智慧城市、平安城市的實現(xiàn)也是以視頻監(jiān)控等視頻數(shù)據(jù)為基礎,成為大數(shù)據(jù)時代的重要組成部分。
機器人、AI、機器學習的研究讓數(shù)據(jù)成為未來輔助我們生活的必要因素,無人車、機器人快遞等形式的出現(xiàn), 一方面體現(xiàn)了數(shù)據(jù)價值,另一方面也是在不斷收集數(shù)據(jù),反哺數(shù)據(jù)分析和應用。
數(shù)據(jù)體量太大 誰來處理?
數(shù)據(jù)產(chǎn)生后,意味著數(shù)據(jù)的采集工作已經(jīng)完成,那么數(shù)據(jù)的輸入與有效輸出問題怎么破解?
自大數(shù)據(jù)時代到來之后,分布式存儲、大文件的讀寫都成為熱點話題,如何應對越來越多的大文件存儲、分析與檢索,成為企業(yè)需要攻克的難題。
而Hadoop的原型要從2002年開始說起。Hadoop的雛形始于2002年的Apache的Nutch,Nutch是一個開源Java 實現(xiàn)的搜索引擎。而后根據(jù)谷歌發(fā)表的學術淪為谷歌文件系統(tǒng)(GFS),實現(xiàn)了分布式文件存儲系統(tǒng)名為NDFS。而后又根據(jù)Google發(fā)表的一篇技術學術論文MapReduce,在Nutch搜索引擎實現(xiàn)了用于大規(guī)模數(shù)據(jù)集(大于1TB)的并行分析運算。最后,雅虎雇用了Doug Cutting,Doug Cutting將NDFS和MapReduce升級命名為Hadoop,HDFS(Hadoop Distributed File System,Hadoop分布式文件系統(tǒng))就此形成。
應該說Hadoop是針對大數(shù)據(jù)而存在的,HDFS能夠提供高吞吐量的數(shù)據(jù)訪問,適合有著超大規(guī)模數(shù)據(jù)集的應用程序。我們可以在Hadoop的設計中看到三大特點:適用于存儲超大文件、適合運行在普通廉價的服務器上,同時,最搞笑的訪問模式是一次寫入、多次讀取。
當然,HDFS也存在一些弊端,比如說不適用于有低延遲要求的應用場景。因為Hadoop是針對大數(shù)據(jù)傳輸?shù)拇嬖冢菫楦邤?shù)據(jù)吞吐量應用而設計,這導致其必然要以高延遲作為代價。同時HDFS分布式存儲不適用于小文件傳輸,在大量小文件傳輸過程中,namenode的內存就吃不消了。
Hadoop概念科普
在了解了Hadoop的身世和現(xiàn)在適合的應用場景之后,筆者要跟大家科普一下Hadoop的基礎架構和主要概念。
NameNode:namenode負責管理文件目錄、文件和block的對應關系以及block和datanode的對應關系。這是由唯一一臺主機專門保存,當然這臺主機如果出錯,NameNode就失效了,需要啟動備用主機運行NameNode。
DataNode:負責存儲,當然大部分容錯機制都是在datanode上實現(xiàn)的。分布在廉價的計算機上,用于存儲Block塊文件。
MapReduce:通俗說MapReduce是一套從海量·源數(shù)據(jù)提取分析元素最后返回結果集的編程模型,將文件分布式存儲到硬盤是第一步,而從海量數(shù)據(jù)中提取分析我們需要的內容就是MapReduce做的事了。
Block:也叫作數(shù)據(jù)塊,默認大小為64MB。每一個block會在多個datanode上存儲多份副本,默認是3份。
Rack:機柜,一個block的三個副本通常會保存到兩個或者兩個以上的機柜中。