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