認識大數(shù)據(jù)
什么是大數(shù)據(jù)寝优?
大數(shù)據(jù)(big data),或稱巨量資料枫耳,指的是所涉及的資料量規(guī)模巨大到無法透過主流軟件工具乏矾,在合理時間內(nèi)達到擷取、管理、處理钻心、并整理成為幫助企業(yè)經(jīng)營決策更積極目的的資訊凄硼。
在維克托·邁爾-舍恩伯格及肯尼斯·庫克耶編寫的《大數(shù)據(jù)時代》中大數(shù)據(jù)指不用隨機分析法(抽樣調(diào)查)這樣捷徑,而采用所有數(shù)據(jù)進行分析處理扔役。大數(shù)據(jù)的5V特點(IBM提出):Volume(大量)帆喇、Velocity(高速)、Variety(多樣)亿胸、Value(低價值密度)、Veracity(真實性)预皇。
定義:
對于“大數(shù)據(jù)”(Big data)研究機構(gòu)Gartner給出了這樣的定義侈玄。“大數(shù)據(jù)”是需要新處理模式才能具有更強的決策力吟温、洞察發(fā)現(xiàn)力和流程優(yōu)化能力來適應(yīng)海量序仙、高增長率和多樣化的信息資產(chǎn)。
麥肯錫全球研究所給出的定義是:一種規(guī)模大到在獲取鲁豪、存儲潘悼、管理、分析方面大大超出了傳統(tǒng)數(shù)據(jù)庫軟件工具能力范圍的數(shù)據(jù)集合爬橡,具有海量的數(shù)據(jù)規(guī)模治唤、快速的數(shù)據(jù)流轉(zhuǎn)、多樣的數(shù)據(jù)類型和價值密度低四大特征糙申。
大數(shù)據(jù)技術(shù)的戰(zhàn)略意義不在于掌握龐大的數(shù)據(jù)信息宾添,而在于對這些含有意義的數(shù)據(jù)進行專業(yè)化處理。換而言之柜裸,如果把大數(shù)據(jù)比作一種產(chǎn)業(yè)缕陕,那么這種產(chǎn)業(yè)實現(xiàn)盈利的關(guān)鍵,在于提高對數(shù)據(jù)的加工能力疙挺,通過“加工”實現(xiàn)數(shù)據(jù)的“增值”扛邑。
從技術(shù)上看,大數(shù)據(jù)與云計算的關(guān)系就像一枚硬幣的正反面一樣密不可分铐然。大數(shù)據(jù)必然無法用單臺的計算機進行處理蔬崩,必須采用分布式架構(gòu)。它的特色在于對海量數(shù)據(jù)進行分布式數(shù)據(jù)挖掘锦爵。但它必須依托云計算的分布式處理舱殿、分布式數(shù)據(jù)庫和云存儲、虛擬化技術(shù)险掀。
隨著云時代的來臨沪袭,大數(shù)據(jù)(Big data)也吸引了越來越多的關(guān)注。分析師團隊認為,大數(shù)據(jù)(Big data)通常用來形容一個公司創(chuàng)造的大量非結(jié)構(gòu)化數(shù)據(jù)和半結(jié)構(gòu)化數(shù)據(jù)冈绊,這些數(shù)據(jù)在下載到關(guān)系型數(shù)據(jù)庫用于分析時會花費過多時間和金錢侠鳄。大數(shù)據(jù)分析常和云計算聯(lián)系到一起,因為實時的大型數(shù)據(jù)集分析需要像MapReduce一樣的框架來向數(shù)十死宣、數(shù)百或甚至數(shù)千的電腦分配工作伟恶。
大數(shù)據(jù)需要特殊的技術(shù),以有效地處理大量的容忍經(jīng)過時間內(nèi)的數(shù)據(jù)毅该。適用于大數(shù)據(jù)的技術(shù)博秫,包括大規(guī)模并行處理(MPP)數(shù)據(jù)庫、數(shù)據(jù)挖掘眶掌、分布式文件系統(tǒng)挡育、分布式數(shù)據(jù)庫、云計算平臺朴爬、互聯(lián)網(wǎng)和可擴展的存儲系統(tǒng)即寒。
最小的基本單位是bit,按順序給出所有單位:bit召噩、Byte母赵、KB、MB具滴、GB凹嘲、TB、PB抵蚊、EB施绎、ZB、YB贞绳、BB谷醉、NB、DB冈闭。
它們按照進率1024(2的十次方)來計算:
1 Byte =8 bit
1 KB = 1,024 Bytes = 8192 bit
1 MB = 1,024 KB = 1,048,576 Bytes
1 GB = 1,024 MB = 1,048,576 KB
1 TB = 1,024 GB = 1,048,576 MB
1 PB = 1,024 TB = 1,048,576 GB
1 EB = 1,024 PB = 1,048,576 TB
1 ZB = 1,024 EB = 1,048,576 PB
1 YB = 1,024 ZB = 1,048,576 EB
1 BB = 1,024 YB = 1,048,576 ZB
1 NB = 1,024 BB = 1,048,576 YB
1 DB = 1,024 NB = 1,048,576 BB
特征:
- 容量(Volume):數(shù)據(jù)的大小決定所考慮的數(shù)據(jù)的價值和潛在的信息俱尼;
- 種類(Variety):數(shù)據(jù)類型的多樣性;
- 速度(Velocity):指獲得數(shù)據(jù)的速度萎攒;
- 可變性(Variability):妨礙了處理和有效地管理數(shù)據(jù)的過程遇八。
- 真實性(Veracity):數(shù)據(jù)的質(zhì)量。
- 復雜性(Complexity):數(shù)據(jù)量巨大耍休,來源多渠道刃永。
- 復雜性(Complexity):數(shù)據(jù)量巨大,來源多渠道羊精。
Hadoop
Hadoop是一個由Apache基金會所開發(fā)的分布式系統(tǒng)基礎(chǔ)架構(gòu)斯够。用戶可以在不了解分布式底層細節(jié)的情況下,開發(fā)分布式程序。充分利用集群的威力進行高速運算和存儲读规。Hadoop實現(xiàn)了一個分布式文件系統(tǒng)( Distributed File System)抓督,其中一個組件是HDFS(Hadoop Distributed File System)。HDFS有高容錯性的特點束亏,并且設(shè)計用來部署在低廉的(low-cost)硬件上铃在;而且它提供高吞吐量(high throughput)來訪問應(yīng)用程序的數(shù)據(jù),適合那些有著超大數(shù)據(jù)集(large data set)的應(yīng)用程序碍遍。HDFS放寬了(relax)POSIX的要求定铜,可以以流的形式訪問(streaming access)文件系統(tǒng)中的數(shù)據(jù)。Hadoop的框架最核心的設(shè)計就是:HDFS和MapReduce怕敬。HDFS為海量的數(shù)據(jù)提供了存儲宿稀,而MapReduce則為海量的數(shù)據(jù)提供了計算 。
優(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)點:
1.高可靠性。Hadoop按位存儲和處理數(shù)據(jù)的能力值得人們信賴晋被。
2.高擴展性兑徘。Hadoop是在可用的計算機集簇間分配數(shù)據(jù)并完成計算任務(wù)的,這些集簇可以方便地擴展到數(shù)以千計的節(jié)點中 羡洛。
3.高效性挂脑。Hadoop能夠在節(jié)點之間動態(tài)地移動數(shù)據(jù),并保證各個節(jié)點的動態(tài)平衡,因此處理速度非匙钣颍快 谴分。
4.高容錯性。Hadoop能夠自動保存數(shù)據(jù)的多個副本镀脂,并且能夠自動將失敗的任務(wù)重新分配 牺蹄。
5.低成本。與一體機、商用數(shù)據(jù)倉庫以及QlikView、Yonghong Z-Suite等數(shù)據(jù)集市相比肛根,hadoop是開源的逃延,項目的軟件成本因此會大大降低 [3] 。
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ù)倉庫里哑了。
核心架構(gòu)
Hadoop 由許多元素構(gòu)成。其最底部是 Hadoop Distributed File System(HDFS)烧颖,它存儲 Hadoop 集群中所有存儲節(jié)點上的文件弱左。HDFS的上一層是MapReduce 引擎,該引擎由 JobTrackers 和 TaskTrackers 組成倒信。通過對Hadoop分布式計算平臺最核心的分布式文件系統(tǒng)HDFS科贬、MapReduce處理過程,以及數(shù)據(jù)倉庫工具Hive和分布式數(shù)據(jù)庫Hbase的介紹鳖悠,基本涵蓋了Hadoop分布式平臺的所有技術(shù)核心榜掌。
HDFS
對外部客戶機而言,HDFS就像一個傳統(tǒng)的分級文件系統(tǒng)乘综≡髡耍可以創(chuàng)建、刪除卡辰、移動或重命名文件胞皱,等等邪意。但是 HDFS 的架構(gòu)是基于一組特定的節(jié)點構(gòu)建的(參見圖 1),這是由它自身的特點決定的反砌。這些節(jié)點包括 NameNode(僅一個)雾鬼,它在 HDFS 內(nèi)部提供元數(shù)據(jù)服務(wù);DataNode宴树,它為 HDFS 提供存儲塊策菜。由于僅存在一個 NameNode,因此這是 HDFS 1.x版本的一個缺點(單點失斁票帷)又憨。在Hadoop 2.x版本可以存在兩個NameNode,解決了單節(jié)點故障問題锭吨。
存儲在 HDFS 中的文件被分成塊蠢莺,然后將這些塊復制到多個計算機中(DataNode)。這與傳統(tǒng)的 RAID 架構(gòu)大不相同零如。塊的大絮锝(1.x版本默認為 64MB,2.x版本默認為128MB)和復制的塊數(shù)量在創(chuàng)建文件時由客戶機決定考蕾。NameNode 可以控制所有文件操作耸携。HDFS 內(nèi)部的所有通信都基于標準的 TCP/IP 協(xié)議。
NameNode
NameNode 是一個通常在 HDFS 實例中的單獨機器上運行的軟件辕翰。它負責管理文件系統(tǒng)名稱空間和控制外部客戶機的訪問。NameNode 決定是否將文件映射到 DataNode 上的復制塊上狈谊。對于最常見的 3 個復制塊喜命,第一個復制塊存儲在同一機架的不同節(jié)點上,最后一個復制塊存儲在不同機架的某個節(jié)點上河劝。
際的 I/O事務(wù)并沒有經(jīng)過 NameNode壁榕,只有表示 DataNode 和塊的文件映射的元數(shù)據(jù)經(jīng)過 NameNode。當外部客戶機發(fā)送請求要求創(chuàng)建文件時赎瞎,NameNode 會以塊標識和該塊的第一個副本的 DataNode IP 地址作為響應(yīng)牌里。這個 NameNode 還會通知其他將要接收該塊的副本的 DataNode。
NameNode 在一個稱為 FsImage 的文件中存儲所有關(guān)于文件系統(tǒng)名稱空間的信息务甥。這個文件和一個包含所有事務(wù)的記錄文件(這里是 EditLog)將存儲在 NameNode 的本地文件系統(tǒng)上牡辽。FsImage 和 EditLog 文件也需要復制副本,以防文件損壞或 NameNode 系統(tǒng)丟失敞临。
NameNode本身不可避免地具有SPOF(Single Point Of Failure)單點失效的風險态辛,主備模式并不能解決這個問題,通過Hadoop Non-stop namenode才能實現(xiàn)100% uptime可用時間挺尿。
DataNode
DataNode 也是一個通常在 HDFS實例中的單獨機器上運行的軟件奏黑。Hadoop 集群包含一個 NameNode 和大量 DataNode炊邦。DataNode 通常以機架的形式組織,機架通過一個交換機將所有系統(tǒng)連接起來熟史。Hadoop 的一個假設(shè)是:機架內(nèi)部節(jié)點之間的傳輸速度快于機架間節(jié)點的傳輸速度馁害。
DataNode 響應(yīng)來自 HDFS 客戶機的讀寫請求。它們還響應(yīng)來自 NameNode 的創(chuàng)建蹂匹、刪除和復制塊的命令碘菜。NameNode 依賴來自每個 DataNode 的定期心跳(heartbeat)消息。每條消息都包含一個塊報告怒详,NameNode 可以根據(jù)這個報告驗證塊映射和其他文件系統(tǒng)元數(shù)據(jù)炉媒。如果 DataNode 不能發(fā)送心跳消息,NameNode 將采取修復措施昆烁,重新復制在該節(jié)點上丟失的塊吊骤。
文件操作
可見,HDFS 并不是一個萬能的文件系統(tǒng)静尼。它的主要目的是支持以流的形式訪問寫入的大型文件白粉。
如果客戶機想將文件寫到 HDFS 上,首先需要將該文件緩存到本地的臨時存儲鼠渺。如果緩存的數(shù)據(jù)大于所需的 HDFS 塊大小鸭巴,創(chuàng)建文件的請求將發(fā)送給 NameNode。NameNode 將以 DataNode 標識和目標塊響應(yīng)客戶機拦盹。
同時也通知將要保存文件塊副本的 DataNode鹃祖。當客戶機開始將臨時文件發(fā)送給第一個 DataNode 時,將立即通過管道方式將塊內(nèi)容轉(zhuǎn)發(fā)給副本 DataNode普舆√窨冢客戶機也負責創(chuàng)建保存在相同 HDFS名稱空間中的校驗和(checksum)文件 。
在最后的文件塊發(fā)送之后沼侣,NameNode 將文件創(chuàng)建提交到它的持久化元數(shù)據(jù)存儲(在 EditLog 和 FsImage 文件) 祖能。
Linux 集群
Hadoop 框架可在單一的 Linux 平臺上使用(開發(fā)和調(diào)試時),官方提供MiniCluster作為單元測試使用蛾洛,不過使用存放在機架上的商業(yè)服務(wù)器才能發(fā)揮它的力量养铸。這些機架組成一個 Hadoop 集群。它通過集群拓撲知識決定如何在整個集群中分配作業(yè)和文件轧膘。Hadoop 假定節(jié)點可能失敗钞螟,因此采用本機方法處理單個計算機甚至所有機架的失敗 。
Hadoop和高效能計算谎碍、網(wǎng)格計算的區(qū)別
在Hadoop 出現(xiàn)之前筛圆,高性能計算和網(wǎng)格計算一直是處理大數(shù)據(jù)問題主要的使用方法和工具,它們主要采用消息傳遞接口(Message Passing Interface椿浓,MPI)提供的API 來處理大數(shù)據(jù)太援。高性能計算的思想是將計算作業(yè)分散到集群機器上闽晦,集群計算節(jié)點訪問存儲區(qū)域網(wǎng)絡(luò)SAN 構(gòu)成的共享文件系統(tǒng)獲取數(shù)據(jù),這種設(shè)計比較適合計算密集型作業(yè)提岔。當需要訪問像PB 級別的數(shù)據(jù)的時候仙蛉,由于存儲設(shè)備網(wǎng)絡(luò)帶寬的限制,很多集群計算節(jié)點只能空閑等待數(shù)據(jù)碱蒙。而Hadoop卻不存在這種問題荠瘪,由于Hadoop 使用專門為分布式計算設(shè)計的文件系統(tǒng)HDFS,計算的時候只需要將計算代碼推送到存儲節(jié)點上赛惩,即可在存儲節(jié)點上完成數(shù)據(jù)本地化計算哀墓,Hadoop 中的集群存儲節(jié)點也是計算節(jié)點 。
在分布式編程方面喷兼,MPI 是屬于比較底層的開發(fā)庫篮绰,它賦予了程序員極大的控制能力,但是卻要程序員自己控制程序的執(zhí)行流程季惯,容錯功能吠各,甚至底層的套接字通信、數(shù)據(jù)分析算法等底層細節(jié)都需要自己編程實現(xiàn)勉抓。這種要求無疑對開發(fā)分布式程序的程序員提出了較高的要求贾漏。相反,Hadoop 的MapReduce 卻是一個高度抽象的并行編程模型藕筋,它將分布式并行編程抽象為兩個原語操作纵散,即map 操作和reduce 操作,開發(fā)人員只需要簡單地實現(xiàn)相應(yīng)的接口即可隐圾,完全不用考慮底層數(shù)據(jù)流困食、容錯、程序的并行執(zhí)行等細節(jié)翎承。這種設(shè)計無疑大大降低了開發(fā)分布式并行程序的難度 。
網(wǎng)格計算通常是指通過現(xiàn)有的互聯(lián)網(wǎng)符匾,利用大量來自不同地域叨咖、資源異構(gòu)的計算機空閑的CPU 和磁盤來進行分布式存儲和計算。這些參與計算的計算機具有分處不同地域啊胶、資源異構(gòu)(基于不同平臺甸各,使用不同的硬件體系結(jié)構(gòu)等)等特征,從而使網(wǎng)格計算和Hadoop 這種基于集群的計算相區(qū)別開焰坪。Hadoop 集群一般構(gòu)建在通過高速網(wǎng)絡(luò)連接的單一數(shù)據(jù)中心內(nèi)趣倾,集群計算機都具有體系結(jié)構(gòu)、平臺一致的特點某饰,而網(wǎng)格計算需要在互聯(lián)網(wǎng)接入環(huán)境下使用儒恋,網(wǎng)絡(luò)帶寬等都沒有保證 善绎。
發(fā)展現(xiàn)狀
Hadoop 設(shè)計之初的目標就定位于高可靠性、高可拓展性诫尽、高容錯性和高效性禀酱,正是這些設(shè)計上與生俱來的優(yōu)點,才使得Hadoop 一出現(xiàn)就受到眾多大公司的青睞牧嫉,同時也引起了研究界的普遍關(guān)注剂跟。Hadoop 技術(shù)在互聯(lián)網(wǎng)領(lǐng)域已經(jīng)得到了廣泛的運用,例如酣藻,Yahoo 使用4 000 個節(jié)點的Hadoop集群來支持廣告系統(tǒng)和Web 搜索的研究曹洽;Facebook 使用1 000 個節(jié)點的集群運行Hadoop,存儲日志數(shù)據(jù)辽剧,支持其上的數(shù)據(jù)分析和機器學習送淆;百度用Hadoop處理每周200TB 的數(shù)據(jù),從而進行搜索日志分析和網(wǎng)頁數(shù)據(jù)挖掘工作抖仅;中國移動研究院基于Hadoop 開發(fā)了“大云”(Big Cloud)系統(tǒng)坊夫,不但用于相關(guān)數(shù)據(jù)分析,還對外提供服務(wù)撤卢;淘寶的Hadoop 系統(tǒng)用于存儲并處理電子商務(wù)交易的相關(guān)數(shù)據(jù)环凿。國內(nèi)的高校和科研院所基于Hadoop 在數(shù)據(jù)存儲、資源管理放吩、作業(yè)調(diào)度智听、性能優(yōu)化、系統(tǒng)高可用性和安全性方面進行研究渡紫,相關(guān)研究成果多以開源形式貢獻給Hadoop 社區(qū) 到推。
除了上述大型企業(yè)將Hadoop 技術(shù)運用在自身的服務(wù)中外,一些提供Hadoop 解決方案的商業(yè)型公司也紛紛跟進惕澎,利用自身技術(shù)對Hadoop 進行優(yōu)化莉测、改進、二次開發(fā)等唧喉,然后以公司自有產(chǎn)品形式對外提供Hadoop 的商業(yè)服務(wù)捣卤。比較知名的有創(chuàng)辦于2008 年的Cloudera 公司,它是一家專業(yè)從事基于ApacheHadoop 的數(shù)據(jù)管理軟件銷售和服務(wù)的公司八孝,它希望充當大數(shù)據(jù)領(lǐng)域中類似RedHat 在Linux 世界中的角色董朝。該公司基于Apache Hadoop 發(fā)行了相應(yīng)的商業(yè)版本Cloudera Enterprise,它還提供Hadoop 相關(guān)的支持干跛、咨詢子姜、培訓等服務(wù)。在2009 年楼入,Cloudera 聘請了Doug Cutting(Hadoop 的創(chuàng)始人)擔任公司的首席架構(gòu)師哥捕,從而更加加強了Cloudera 公司在Hadoop 生態(tài)系統(tǒng)中的影響和地位牧抽。最近,Oracle 也表示已經(jīng)將Cloudera 的Hadoop 發(fā)行版和Cloudera Manager 整合到Oracle Big Data Appliance 中扭弧。同樣阎姥,Intel 也基于Hadoop 發(fā)行了自己的版本IDH。從這些可以看出鸽捻,越來越多的企業(yè)將Hadoop 技術(shù)作為進入大數(shù)據(jù)領(lǐng)域的必備技術(shù)呼巴。
應(yīng)用程序
Hadoop 的最常見用法之一是 Web 搜索。雖然它不是唯一的軟件框架應(yīng)用程序御蒲,但作為一個并行數(shù)據(jù)處理引擎衣赶,它的表現(xiàn)非常突出。Hadoop 最有趣的方面之一是 Map and Reduce 流程厚满,它受到Google開發(fā)的啟發(fā)府瞄。這個流程稱為創(chuàng)建索引,它將 Web爬行器檢索到的文本 Web 頁面作為輸入碘箍,并且將這些頁面上的單詞的頻率報告作為結(jié)果遵馆。然后可以在整個 Web 搜索過程中使用這個結(jié)果從已定義的搜索參數(shù)中識別內(nèi)容。
最簡單的 MapReduce應(yīng)用程序至少包含 3 個部分:一個 Map 函數(shù)丰榴、一個 Reduce 函數(shù)和一個 main 函數(shù)货邓。main 函數(shù)將作業(yè)控制和文件輸入/輸出結(jié)合起來。在這點上四濒,Hadoop 提供了大量的接口和抽象類换况,從而為 Hadoop應(yīng)用程序開發(fā)人員提供許多工具,可用于調(diào)試和性能度量等 盗蟆。
MapReduce 本身就是用于并行處理大數(shù)據(jù)集的軟件框架戈二。MapReduce 的根源是函數(shù)性編程中的 map 和 reduce 函數(shù)。它由兩個可能包含有許多實例(許多 Map 和 Reduce)的操作組成喳资。Map 函數(shù)接受一組數(shù)據(jù)并將其轉(zhuǎn)換為一個鍵/值對列表觉吭,輸入域中的每個元素對應(yīng)一個鍵/值對。Reduce 函數(shù)接受 Map 函數(shù)生成的列表仆邓,然后根據(jù)它們的鍵(為每個鍵生成一個鍵/值對)縮小鍵/值對列表 鲜滩。
這里提供一個示例,幫助您理解它宏赘。假設(shè)輸入域是 one small step for man,one giant leap for mankind。在這個域上運行 Map 函數(shù)將得出以下的鍵/值對列表 :
(one,1)(small,1) (step,1) (for,1) (man,1)(one,1) (giant,1) (leap,1) (for,1) (mankind,1)
如果對這個鍵/值對列表應(yīng)用 Reduce 函數(shù)黎侈,將得到以下一組鍵/值對:
(one,2) (small,1) (step,1) (for,2) (man,1)(giant,1) (leap,1) (mankind,1)
結(jié)果是對輸入域中的單詞進行計數(shù)察署,這無疑對處理索引十分有用。但是峻汉,假設(shè)有兩個輸入域贴汪,第一個是 one small step for man脐往,第二個是 one giant leap for mankind。您可以在每個域上執(zhí)行 Map 函數(shù)和 Reduce 函數(shù)扳埂,然后將這兩個鍵/值對列表應(yīng)用到另一個 Reduce 函數(shù)业簿,這時得到與前面一樣的結(jié)果。換句話說阳懂,可以在輸入域并行使用相同的操作梅尤,得到的結(jié)果是一樣的,但速度更快岩调。這便是 MapReduce 的威力巷燥;它的并行功能可在任意數(shù)量的系統(tǒng)上使用 。
回到 Hadoop 上号枕,它實現(xiàn)這個功能的方法是:一個代表客戶機在單個主系統(tǒng)上啟動的 MapReduce應(yīng)用程序稱為 JobTracker缰揪。類似于 NameNode,它是 Hadoop 集群中唯一負責控制 MapReduce應(yīng)用程序的系統(tǒng)葱淳。在應(yīng)用程序提交之后钝腺,將提供包含在 HDFS 中的輸入和輸出目錄。JobTracker 使用文件塊信息(物理量和位置)確定如何創(chuàng)建其他 TaskTracker 從屬任務(wù)赞厕。MapReduce應(yīng)用程序被復制到每個出現(xiàn)輸入文件塊的節(jié)點艳狐。將為特定節(jié)點上的每個文件塊創(chuàng)建一個唯一的從屬任務(wù)。每個 TaskTracker 將狀態(tài)和完成信息報告給 JobTracker 坑傅。
顯示處理和存儲的物理分布的 Hadoop 集群Hadoop 的這個特點非常重要僵驰,因為它并沒有將存儲移動到某個位置以供處理,而是將處理移動到存儲 唁毒。
區(qū)別
Hadoop是Apache軟件基金會發(fā)起的一個項目蒜茴,在大數(shù)據(jù)分析以及非結(jié)構(gòu)化數(shù)據(jù)蔓延的背景下,Hadoop受到了前所未有的關(guān)注 浆西。
Hadoop是一種分布式數(shù)據(jù)和計算的框架粉私。它很擅長存儲大量的半結(jié)構(gòu)化的數(shù)據(jù)集。數(shù)據(jù)可以隨機存放近零,所以一個磁盤的失敗并不會帶來數(shù)據(jù)丟失诺核。Hadoop也非常擅長分布式計算——快速地跨多臺機器處理大型數(shù)據(jù)集合。
MapReduce是處理大量半結(jié)構(gòu)化數(shù)據(jù)集合的編程模型久信。編程模型是一種處理并結(jié)構(gòu)化特定問題的方式窖杀。例如,在一個關(guān)系數(shù)據(jù)庫中裙士,使用一種集合語言執(zhí)行查詢入客,如SQL。告訴語言想要的結(jié)果,并將它提交給系統(tǒng)來計算出如何產(chǎn)生計算桌硫。還可以用更傳統(tǒng)的語言(C++夭咬,Java),一步步地來解決問題铆隘。這是兩種不同的編程模型卓舵,MapReduce就是另外一種 。
MapReduce和Hadoop是相互獨立的膀钠,實際上又能相互配合工作得很好掏湾。
信息安全
通過Hadoop安全部署經(jīng)驗總結(jié),開發(fā)出以下十大建議托修,以確保大型和復雜多樣環(huán)境下的數(shù)據(jù)信息安全 [9] 忘巧。
1、先下手為強!在規(guī)劃部署階段就確定數(shù)據(jù)的隱私保護策略睦刃,最好是在將數(shù)據(jù)放入到Hadoop之前就確定好保護策略 砚嘴。
2、確定哪些數(shù)據(jù)屬于企業(yè)的敏感數(shù)據(jù)涩拙。根據(jù)公司的隱私保護政策际长,以及相關(guān)的行業(yè)法規(guī)和政府規(guī)章來綜合確定 。
3兴泥、及時發(fā)現(xiàn)敏感數(shù)據(jù)是否暴露在外工育,或者是否導入到Hadoop中 。
4搓彻、搜集信息并決定是否暴露出安全風險 如绸。
5、確定商業(yè)分析是否需要訪問真實數(shù)據(jù)旭贬,或者確定是否可以使用這些敏感數(shù)據(jù)怔接。然后,選擇合適的加密技術(shù)稀轨。如果有任何疑問扼脐,對其進行加密隱藏處理,同時提供最安全的加密技術(shù)和靈活的應(yīng)對策略奋刽,以適應(yīng)未來需求的發(fā)展 瓦侮。
6、確保數(shù)據(jù)保護方案同時采用了隱藏和加密技術(shù)佣谐,尤其是如果我們需要將敏感數(shù)據(jù)在Hadoop中保持獨立的話 肚吏。
7、確保數(shù)據(jù)保護方案適用于所有的數(shù)據(jù)文件狭魂,以保存在數(shù)據(jù)匯總中實現(xiàn)數(shù)據(jù)分析的準確性罚攀。
8吁断、確定是否需要為特定的數(shù)據(jù)集量身定制保護方案,并考慮將Hadoop的目錄分成較小的更為安全的組 坞生。
9、確保選擇的加密解決方案可與公司的訪問控制技術(shù)互操作掷伙,允許不同用戶可以有選擇性地訪問Hadoop集群中的數(shù)據(jù)是己。
10、確保需要加密的時候有合適的技術(shù)(比如Java任柜、Pig等)可被部署并支持無縫解密和快速訪問數(shù)據(jù) 卒废。
以上都是概念性的,所以都是百度百科copy過來的東西宙地,用于自己理解摔认,學習。