您好,登錄后才能下訂單哦!
Hadoop是一個(gè)是個(gè)海量數(shù)據(jù)的分布式存儲(chǔ)和計(jì)算平臺(tái)
對(duì)于數(shù)據(jù),我們大致可以將其分為三類:
結(jié)構(gòu)化數(shù)據(jù)(對(duì)于結(jié)構(gòu)化數(shù)據(jù)的處理可以通過(guò)RDBMS處理,通過(guò)將搜索碼創(chuàng)建為索引頁(yè)可以實(shí)現(xiàn)很快的查詢速度)
半結(jié)構(gòu)化數(shù)據(jù)(一般可以使用類型XML進(jìn)行標(biāo)記處理)
非結(jié)構(gòu)化數(shù)據(jù)
其實(shí),非結(jié)構(gòu)化數(shù)據(jù)會(huì)占據(jù)相當(dāng)大的比重,非機(jī)構(gòu)化數(shù)據(jù)的存儲(chǔ)和計(jì)算也變得比較困難。
Hadoop的靈感來(lái)自于Google的兩篇論文,包括MapReduce,我們可以將Hadoop理解為是MapReduce的開(kāi)源實(shí)現(xiàn),Hadoop是由java語(yǔ)言編寫(xiě)的。
首先,對(duì)于海量數(shù)據(jù),需要完成對(duì)其進(jìn)行存儲(chǔ)然后進(jìn)行就算,分析。
HDFS:Hadoop分布式文件系統(tǒng)
MapReduce:Hadoop用于完成并行數(shù)據(jù)處理的框架
可以理解為Hadoop=HDFS+MapReduce,也就是可以理解為一個(gè)Hadoop集群就是一個(gè)HDFS集群加上一個(gè)MapReduce集群。
HDFS如何完成分布式存儲(chǔ):
HDFS集群中一般會(huì)有一個(gè)主節(jié)點(diǎn)(在Hadoop的新版本中,已經(jīng)實(shí)現(xiàn)有多個(gè)主節(jié)點(diǎn)),稱之為NameNode(簡(jiǎn)稱為NN)
HDFS中會(huì)有n個(gè)從節(jié)點(diǎn),稱之為DataNode(DN)
實(shí)際完成數(shù)據(jù)存儲(chǔ)的都是數(shù)據(jù)節(jié)點(diǎn),而NameNode主要是用于將數(shù)據(jù)分塊,分塊之后再分配給數(shù)據(jù)節(jié)點(diǎn)進(jìn)行存儲(chǔ),另外,NameNode用于接收用戶請(qǐng)求,管理從節(jié)點(diǎn),維護(hù)文件系統(tǒng)的目錄結(jié)構(gòu),管理文件與Block之間的關(guān)系,block與數(shù)據(jù)節(jié)點(diǎn)之間的關(guān)系,從而完成分布式存儲(chǔ)海量數(shù)據(jù)的目的。
HDFS的特性:HDFS設(shè)計(jì)用于存儲(chǔ)大文件,對(duì)于海量小文件的存儲(chǔ)不太適用
HDFS是用戶空間的文件系統(tǒng)(其實(shí)數(shù)據(jù)最終還是存儲(chǔ)在諸如ext3文件系統(tǒng)上,只不過(guò)需要經(jīng)過(guò)HDFS的又一次對(duì)數(shù)據(jù)進(jìn)行抽象)
HDFS不支持修改數(shù)據(jù)(新版本支持追加)
不支持掛載并通過(guò)系統(tǒng)調(diào)用進(jìn)行訪問(wèn),只能使用專用訪問(wèn)借口,例如專用的命令行工具,API
MapReduce,一般提到MapReduce,其有三個(gè)含義:
編程模型
運(yùn)算框架
MapReduce編程思想的具體實(shí)現(xiàn)工具
MapReduce的思想大致就是分為兩個(gè)階段:Map和Reduce
Map就是將對(duì)一個(gè)大文件的處理分割成塊進(jìn)行計(jì)算,實(shí)現(xiàn)分布式
Reduce就是將對(duì)各個(gè)塊的計(jì)算結(jié)果再進(jìn)行匯總
對(duì)數(shù)據(jù)計(jì)算其實(shí)就是提取Key-Value的方式,在進(jìn)行Map之后交由Reduce的時(shí)候,必須要將同一個(gè)Key提取的內(nèi)容發(fā)送至同一個(gè)Reduce進(jìn)程進(jìn)行最后的合并
對(duì)于數(shù)據(jù)的計(jì)算,需要處理人員按照MapReduce的編程模型結(jié)合對(duì)數(shù)據(jù)的處理目的編寫(xiě)MapReduce程序,所以對(duì)于海量數(shù)據(jù)的計(jì)算在HDFS+MapReduce結(jié)合上有著極大的限制性。
Hadoop同時(shí)也有很多的組件,從而構(gòu)成了Hadoop的生態(tài)系統(tǒng):
HDFS+MapReduce構(gòu)成了Hadoop的核心:
Hive:Hive是由Facebook開(kāi)發(fā)的,Hive將整個(gè)MapReduce提供的框架抽象為一個(gè)系統(tǒng),當(dāng)用戶想要就行查詢等操作的時(shí)候,就可以想Hive提交一個(gè)SQL語(yǔ)句,然后由Hive實(shí)現(xiàn)將用戶便于理解的SQL語(yǔ)句轉(zhuǎn)換成為一個(gè)MapReduce程序執(zhí)行,最后向用戶輸出結(jié)果(可以理解成Hive提供了一個(gè)SQL接口,但是并不和SQL完全兼容)
Hbase:由于HDFS不能掛載,也不能修改數(shù)據(jù),當(dāng)Hbase工作在HDFS之上的時(shí)候,構(gòu)成一個(gè)Hbase集群,在Hbase的節(jié)點(diǎn)上再啟動(dòng)一個(gè)進(jìn)程,這時(shí)數(shù)據(jù)可以先存在Hbase上,然后再由Hbase將其存入HDFS,并且Hbase對(duì)數(shù)據(jù)記錄有版本號(hào),實(shí)現(xiàn)了對(duì)數(shù)據(jù)進(jìn)行修改
在很多情況下,我們需要對(duì)例如web服務(wù)器集群產(chǎn)生的日志進(jìn)行分析計(jì)算,那么如何將web服務(wù)器產(chǎn)生的日志存儲(chǔ)到HDFS上,首先,HDFS不能被掛載,所以就不能像對(duì)待一本文件系統(tǒng)沒(méi)那個(gè)一樣對(duì)其進(jìn)行寫(xiě)入,這就是Flume,scrib這些日志收集工具實(shí)現(xiàn)將日志存儲(chǔ)到HDFS上的。
同上,很多情況下可能需要借助于集群的威力對(duì)存儲(chǔ)在RDBMS上的數(shù)據(jù)進(jìn)行分析計(jì)算和挖掘,那么如何將RDBMS中的數(shù)據(jù)導(dǎo)入到HDFS上,就是有Sqoop工具實(shí)現(xiàn)的,可以將數(shù)據(jù)用Sqoop從RDBMS導(dǎo)出,先存儲(chǔ)到Hbase上,再由Hbase實(shí)現(xiàn)存儲(chǔ)到HDFS上,之后就可以通過(guò)編寫(xiě)的MapReduce程序?qū)?shù)據(jù)進(jìn)行運(yùn)算
MAhost就是用于數(shù)據(jù)挖掘,也就是機(jī)器學(xué)習(xí)的工具
Zookeeper:可以理解其就是一個(gè)協(xié)調(diào)器,監(jiān)控集群上的各個(gè)節(jié)點(diǎn)是否能夠符合集群的要求
Hadoop在HDFS提供改良數(shù)據(jù)存儲(chǔ)的方案上表現(xiàn)還是比較出色的,但是MapReduce的計(jì)算能力就稍有遜色,可以結(jié)合第二代大數(shù)據(jù)解決方案spark,使用HDFS完成海量數(shù)據(jù)的分布式存儲(chǔ),有spark提供對(duì)海量數(shù)據(jù)的運(yùn)算
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。