什么是NoSQL?
NoSQL=Not Only SQL,指的是非關(guān)系型的數(shù)據(jù)庫(kù)。
非關(guān)系型數(shù)據(jù)庫(kù)以鍵值對(duì)存儲(chǔ),它的結(jié)構(gòu)不固定,每一個(gè)元組可以有不一樣的字段,每個(gè)元組可以根據(jù)需要增加一些自己的鍵值對(duì),這樣就不會(huì)局限于固定的結(jié)構(gòu),可以減少一些時(shí)間和空間的開銷。
應(yīng)該說明的是,NoSQL在處理超大量數(shù)據(jù)時(shí)性能卓越,而且可以在PC服務(wù)器集群上運(yùn)行,成本低廉,具有高擴(kuò)展性和實(shí)用性。但是,目前大多數(shù)NoSQL是開源項(xiàng)目,沒有供應(yīng)商正是支持,而且在數(shù)據(jù)完整性等方面遠(yuǎn)不如關(guān)系型數(shù)據(jù)庫(kù),企業(yè)級(jí)應(yīng)用不多。
HBASE 的原理簡(jiǎn)要介紹,如何存儲(chǔ)非結(jié)構(gòu)化數(shù)據(jù)
HBase是一個(gè)分布式的、面向列的開源數(shù)據(jù)庫(kù),HBase在Hadoop平臺(tái)內(nèi)的結(jié)構(gòu)化數(shù)據(jù)的分布式存儲(chǔ)系統(tǒng)。HBase與傳統(tǒng)關(guān)系型數(shù)據(jù)庫(kù)的區(qū)別在于,它是一個(gè)適合非結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)的數(shù)據(jù)庫(kù),而且HBase是基于列而不是基于行的模式。
HBase利用Hadoop HDFS作為其文件存儲(chǔ)系統(tǒng),HBase位于結(jié)構(gòu)化存儲(chǔ)層,HDFS為HBase提供了高可靠性的底層存儲(chǔ)支持;用Hadoop MapReduce來處理海量數(shù)據(jù),MapReduce為HBase提供了高性能的計(jì)算能力;用Hadoop Zookeeper作為協(xié)同服務(wù),Zookeeper為HBase提供了穩(wěn)定服務(wù)和failover機(jī)制。
HBase數(shù)據(jù)模型如下:
? Row Key: 行鍵,Table的主鍵,Table中的記錄按照Row Key排序
? Timestamp: 時(shí)間戳,每次數(shù)據(jù)操作對(duì)應(yīng)的時(shí)間戳,可以看作是數(shù)據(jù)的version number
? Column Family:列簇,Table在水平方向有一個(gè)或者多個(gè)Column Family組成,一個(gè)Column Family中可以由任意多個(gè)Column組成,即Column Family支持動(dòng)態(tài)擴(kuò)展,無需預(yù)先定義Column的數(shù)量以及類型,所有Column均以二進(jìn)制格式存儲(chǔ),用戶需要自行進(jìn)行類型轉(zhuǎn)換。
當(dāng)Table隨著記錄數(shù)不斷增加而變大后,會(huì)逐漸分裂成多份splits,成為regions,一個(gè)region由[startkey,endkey)表示,不同的region會(huì)被Master分配給相應(yīng)的RegionServer進(jìn)行管理。
HBase中有兩張?zhí)厥獾腡able,-ROOT-和.META。
.META.:記錄了用戶表的Region信息,.META.可以有多個(gè)regoin
-ROOT-:記錄了.META.表的Region信息,-ROOT-只有一個(gè)region
Zookeeper中記錄了-ROOT-表的location
Client訪問用戶數(shù)據(jù)之前需要首先訪問zookeeper,然后訪問-ROOT-表,接著訪問.META.表,最后才能找到用戶數(shù)據(jù)的位置去訪問,中間需要多次網(wǎng)絡(luò)操作, client端會(huì)做cache緩存。
價(jià)值密度低
Mapreduce是在大數(shù)據(jù)中挖掘價(jià)值的有效方法
把MapReduce單獨(dú)列出來,是有必要的,因?yàn)樗匾?。MapReduce是一種編程模型,用于大規(guī)模數(shù)據(jù)集(大于1TB)的并行運(yùn)算。概念“Map(映射)”和“Reduce(化簡(jiǎn))”,和他們的主要思想,都是從函數(shù)式編程語(yǔ)言里借來的,還有從矢量編程語(yǔ)言里借來的特性。
MapReduce 本身就是用于并行處理大數(shù)據(jù)集的軟件框架。MapReduce 的根源是函數(shù)性編程中的 map 和 reduce 函數(shù)。它由兩個(gè)可能包含有許多實(shí)例(許多 Map 和 Reduce)的操作組成。Map 函數(shù)接受一組數(shù)據(jù)并將其轉(zhuǎn)換為一個(gè)鍵/值對(duì)列表,輸入域中的每個(gè)元素對(duì)應(yīng)一個(gè)鍵/值對(duì)。Reduce 函數(shù)接受 Map 函數(shù)生成的列表,然后根據(jù)它們的鍵(為每個(gè)鍵生成一個(gè)鍵/值對(duì))縮小鍵/值對(duì)列表。
具體分步驟描述為:
1) 在正式執(zhí)行map函數(shù)前,需要對(duì)輸入進(jìn)行“分片”(就是將海量數(shù)據(jù)分成大概相等的“塊”,hadoop的一個(gè)分片默認(rèn)是64M),以便于多個(gè)map同時(shí)工作,每一個(gè)map任務(wù)處理一個(gè)“分片”。
2) 分片完畢后,多臺(tái)機(jī)器就可以同時(shí)進(jìn)行map工作了。map函數(shù)要做的事情,相當(dāng)于對(duì)數(shù)據(jù)進(jìn)行“預(yù)處理”,輸出所要的“鍵值”。map對(duì)每條記錄的輸出以《key,value》對(duì)的形式輸出。
3) 在進(jìn)入reduce階段之前,還要將各個(gè)map中相關(guān)的數(shù)據(jù)(key相同的數(shù)據(jù))歸結(jié)到一起,發(fā)往一個(gè)reducer。這里面就涉及到多個(gè)map的輸出“混合地”對(duì)應(yīng)多個(gè)reducer的情況,這個(gè)過程叫做“洗牌”。
4) 接下來進(jìn)入reduce階段。相同的key的map輸出會(huì)到達(dá)同一個(gè)reducer。reducer對(duì)key相同的多個(gè)value進(jìn)行reduce操作,最后一個(gè)key的一串value經(jīng)過reduce函數(shù)的作用后,變成了一個(gè)value。
處理速度快
MapReduce除了能挖掘大數(shù)據(jù)價(jià)值,同時(shí)也是一種分布式/并行計(jì)算模型。雖然它是一個(gè)很好的抽象,但不能有效地解決計(jì)算領(lǐng)域的任何問題。為了滿足大數(shù)據(jù)及時(shí)響應(yīng)的特性,數(shù)據(jù)流計(jì)算的研究被提上了日程。實(shí)時(shí)計(jì)算方向重要的一個(gè)模塊就是實(shí)時(shí)數(shù)據(jù)流計(jì)算。
在數(shù)據(jù)流模型中,需要處理的輸入數(shù)據(jù)(全部或部分)并不存儲(chǔ)在可隨機(jī)訪問的磁盤或內(nèi)存中,但它們卻以一個(gè)或多個(gè)“連續(xù)數(shù)據(jù)流”的形式到達(dá)。數(shù)據(jù)流不同于傳統(tǒng)的存儲(chǔ)關(guān)系模型,主要區(qū)別有如下幾個(gè)方面:
流中的數(shù)據(jù)元素在線到達(dá);
系統(tǒng)無法控制將要處理的新到達(dá)的數(shù)據(jù)元素的順序,無論這些數(shù)據(jù)元素是在一個(gè)數(shù)據(jù)流中還是跨多個(gè)數(shù)據(jù)流;也即重放的數(shù)據(jù)流可能和上次數(shù)據(jù)流的元素順序不一致;
數(shù)據(jù)流的潛在大小也許是無窮無盡的;
一旦數(shù)據(jù)流中的某個(gè)元素經(jīng)過處理,要么被丟棄,要么被歸檔存儲(chǔ)。因此,除非該數(shù)據(jù)被直接存儲(chǔ)在內(nèi)存中,否則將不容易被檢索。相對(duì)于數(shù)據(jù)流的大小,這是一種典型的極小相關(guān)。
數(shù)據(jù)流模型中的操作并不排除傳統(tǒng)關(guān)系型數(shù)據(jù)的存在。通常,數(shù)據(jù)流操作將建立數(shù)據(jù)流和關(guān)系型數(shù)據(jù)的聯(lián)系。在數(shù)據(jù)流處理過程中,更新存儲(chǔ)關(guān)系的同時(shí)可能會(huì)產(chǎn)生傳輸處理問題。
近年來,業(yè)界出現(xiàn)了不少實(shí)時(shí)數(shù)據(jù)流計(jì)算系統(tǒng),雖然沒有一個(gè)類似于Hadoop的集大成者,但是也都各具特色。由于網(wǎng)絡(luò)數(shù)據(jù)的不斷膨脹和用戶需求的不斷涌現(xiàn),近年來互聯(lián)網(wǎng)企業(yè)開始廣泛研究和使用數(shù)據(jù)流處理,誕生了Yahoo! S4、Twitter Storm、IBM StreamBase、Facebook的Puma/Puma2 及學(xué)術(shù)界開源的Borealis等系統(tǒng)。
大數(shù)據(jù)是云計(jì)算嗎?
如果有人問你這句話,你看完本文,可以很自信的回答他“Absolutely!”
為了回答這個(gè)問題,我們有需要引入一個(gè)概念----云計(jì)算是什么。
維基百科給云計(jì)算下的定義:云計(jì)算將IT相關(guān)的能力以服務(wù)的方式提供給用戶,允許用戶在不了解提供服務(wù)的技術(shù)、沒有相關(guān)知識(shí)以及設(shè)備操作能力的情況下,通過Internet獲取需要服務(wù)。
中國(guó)云計(jì)算網(wǎng)將云定義為:云計(jì)算是分布式計(jì)算(Distributed Computing)、并行計(jì)算(Parallel Computing)和網(wǎng)格計(jì)算(Grid Computing)的發(fā)展,或者說是這些科學(xué)概念的商業(yè)實(shí)現(xiàn)。
云計(jì)算分為三個(gè)層次:基礎(chǔ)設(shè)施即服務(wù)(IaaS),平臺(tái)即服務(wù)(PaaS)和軟件即服務(wù)(SaaS)。
“在說什么,云啊云啊,好多的云啊,好大的棉花糖啊~~”
云計(jì)算的核心技術(shù)是海量數(shù)據(jù)分布式存儲(chǔ)和海量數(shù)據(jù)分布式計(jì)算,現(xiàn)在云計(jì)算系統(tǒng)主要采用Map-Reduce模型。
“Map-Reduce?哪里看到過?”沒錯(cuò),在前面對(duì)大數(shù)據(jù)的解讀的時(shí)候,我們就已經(jīng)明確描述過這一段。終于看到熟悉的內(nèi)容了,無比興奮啊。
實(shí)際上,云計(jì)算的數(shù)據(jù)存儲(chǔ)技術(shù)主要有谷歌的非開源的GFS(Google File System)和 Hadoop 開發(fā)團(tuán)隊(duì)開發(fā)的GFS的開源實(shí)現(xiàn)HDFS(Hadoop Distributed File System)。大部分IT廠商,包括yahoo、Intel的“云”計(jì)劃采用的都是HDFS的數(shù)據(jù)存儲(chǔ)技術(shù)。
通過對(duì)簡(jiǎn)單的云計(jì)算的定義及技術(shù)分析,加上前面我們對(duì)大數(shù)據(jù)的了解,不難得出結(jié)論,大數(shù)據(jù)當(dāng)然是可以歸為云計(jì)算的范疇。
應(yīng)用領(lǐng)域有哪些?
說些我們熟知的地方吧,哪些我們接觸到的地方用到了Hadoop?
要回答這個(gè)問題,舉幾個(gè)例子,很容易。在國(guó)內(nèi),包括中國(guó)移動(dòng)、百度、網(wǎng)易、淘寶、騰訊、金山和華為等眾多公司都在研究和使用它。
行業(yè)動(dòng)態(tài)及展望
“大數(shù)據(jù)”的影響,增加了對(duì)信息管理專家的需求,甲骨文,IBM,微軟和SAP花了超過15億美元的在軟件智能數(shù)據(jù)管理和分析的專業(yè)公司。這個(gè)行業(yè)自身價(jià)值超過1000億美元,增長(zhǎng)近10%,大數(shù)據(jù)已經(jīng)出現(xiàn),因?yàn)槲覀兩钤谝粋€(gè)社會(huì)中有更多的東西。有46億全球移動(dòng)電話用戶有1億美元和20億人訪問互聯(lián)網(wǎng)。基本上,人們比以往任何時(shí)候都與數(shù)據(jù)或信息交互。1990年至2005年,全球超過1億人進(jìn)入中產(chǎn)階級(jí),這意味著越來越多的人,誰(shuí)收益的這筆錢將成為反過來導(dǎo)致更多的識(shí)字信息的增長(zhǎng)。思科公司預(yù)計(jì),到2013年,在互聯(lián)網(wǎng)上流動(dòng)的交通量將達(dá)到每年667艾字節(jié)。
最早提出“大數(shù)據(jù)”時(shí)代已經(jīng)到來的機(jī)構(gòu)是全球知名咨詢公司麥肯錫。麥肯錫在研究報(bào)告中指出,數(shù)據(jù)已經(jīng)滲透到每一個(gè)行業(yè)和業(yè)務(wù)職能領(lǐng)域,逐漸成為重要的生產(chǎn)因素;而人們對(duì)于海量數(shù)據(jù)的運(yùn)用將預(yù)示著新一波生產(chǎn)率增長(zhǎng)和消費(fèi)者盈余浪潮的到來。
麥肯錫的報(bào)告發(fā)布后,大數(shù)據(jù)迅速成為了計(jì)算機(jī)行業(yè)爭(zhēng)相傳誦的熱門概念,也引起了金融界的高度關(guān)注。隨著大數(shù)據(jù)時(shí)代的全面開啟,你是否做好了充分的準(zhǔn)備迎接這個(gè)時(shí)代的到來呢?
評(píng)論
查看更多