大数据概述【一】
1、什么是大數(shù)據(jù)
最早提出在2002年,來源于美國的麥肯錫報(bào)告 4V特征: Volume(數(shù)據(jù)量大):PB級 Variety(數(shù)據(jù)多樣性):文本、圖像、視頻、音頻等 Velocity(輸入和處理速度快):流式數(shù)據(jù) Value(價(jià)值密度低):需要積累很多的數(shù)據(jù)才能發(fā)掘大數(shù)據(jù)隱含的意義,只要能發(fā)揮和挖掘數(shù)據(jù)隱藏的價(jià)值,不用糾結(jié)于數(shù)據(jù)量大小 由維克托·麥爾-舍恩伯格提出,被稱作大數(shù)據(jù)之父大數(shù)據(jù)核心問題:存儲、計(jì)算和分析。通過組件(計(jì)算框架)解決2、數(shù)據(jù)倉庫和大數(shù)據(jù)
1、傳統(tǒng)方式:DW(Data Warehouse),基于傳統(tǒng)的關(guān)系數(shù)據(jù)庫(Oracle、Mysql等),一般只做查詢分析。TD(Teradata 天睿)數(shù)據(jù)倉庫一體機(jī)。 2、數(shù)據(jù)倉庫VS大數(shù)據(jù) 數(shù)據(jù)倉庫:Share Everything,存儲、計(jì)算、CPU共享? 大數(shù)據(jù):Share Nothing,單獨(dú)計(jì)算(map)、結(jié)果匯總(reduce) (去紅樓夢里找林黛玉出現(xiàn)了多少次,一個(gè)研究生(高性能服務(wù)器)讀可能要一天,10個(gè)小學(xué)生(低性能服務(wù)器)讀也要一天,但是研究生更貴,所以我們選擇小學(xué)生方案)3、OLTP和OLAP
1、OLTP: Online Transaction Processing 聯(lián)機(jī)事物處理:(insert update delete)ACID: 所有的數(shù)據(jù)可追溯。-傳統(tǒng)關(guān)系型數(shù)據(jù)庫(Oracle Mysql Postgresql等) 2、OLAP: Online AnalyticProcessing 聯(lián)機(jī)分析處理 真正生產(chǎn)中是二者的結(jié)合:OLTP(后臺操作,前臺展示,數(shù)據(jù)設(shè)計(jì)等) + OLAP(Hive, Hbase, Spark等)4、Google三篇論文
4、1、GFS: Google File System《分布式文件系統(tǒng)》
主要是為了解決Google搜索內(nèi)容和存儲問題,造價(jià)低,易擴(kuò)展。
倒排索引(Reverted Index)
4.1.1 傳統(tǒng)的文件系統(tǒng)存在如下問題:?
1、硬盤不夠大。?
2、數(shù)據(jù)存儲單份,比較危險(xiǎn)。
而Google提出的GFS(Google File System)思想能解決以上問題。GFS核心的思想是硬盤橫向擴(kuò)展以及數(shù)據(jù)冗余。
4.1.2 GFS的優(yōu)點(diǎn):?
* 理論上能存儲無限數(shù)據(jù),因?yàn)橛脖P可以橫向擴(kuò)展。?
* 容錯(cuò)性,數(shù)據(jù)冗余多份,多份數(shù)據(jù)同時(shí)損壞的概念幾乎為零。?
* 存儲大數(shù)據(jù)的性能比傳統(tǒng)關(guān)系型數(shù)據(jù)庫好。
4.1.3 分布式文件系統(tǒng)HDFS體系結(jié)構(gòu)如下圖:
其中上傳數(shù)據(jù)到分布式文件系統(tǒng)的基本過程如下(具體過程后面的文章再講):?
1、客戶端上傳數(shù)據(jù)塊到其中一個(gè)硬盤。?
2、分布式文件系統(tǒng)會根據(jù)機(jī)架感知計(jì)算出存儲數(shù)據(jù)庫的位置,通過水平復(fù)制冗余多份數(shù)據(jù)。
那么何為機(jī)架感知?如下圖:
4.1.4 分布式文件系統(tǒng)如何提高查詢速度??
(HDFS通過倒排索引存儲元數(shù)據(jù))?
采用倒排索引,倒排索引本質(zhì)上也是索引。
說到倒排索引能聯(lián)想到正排索引。那么什么是正排索引和倒排索引。通過如下例子來說明:
正排索引:根據(jù)文件找到關(guān)鍵字(如所有引擎爬到一個(gè)文件,這個(gè)文件提取出10個(gè)關(guān)鍵字,根據(jù)這個(gè)文件找到這10個(gè)關(guān)鍵字)
倒排索引:在搜索引擎中輸入一個(gè)關(guān)鍵字,需要搜索出相關(guān)的文件,如果使用正排索引,需要遍歷所有文件,這是不可能去遍歷的(效率太低)。就產(chǎn)生了倒排索引,倒排索引是記錄關(guān)鍵字對應(yīng)文件的位置,把文件的位置根據(jù)關(guān)鍵字存起來,那么輸入一個(gè)關(guān)鍵字的時(shí)候,就知道這個(gè)關(guān)鍵字所對應(yīng)的文件都在什么地方,從而快速搜索得到相關(guān)的文件。
4.2分布式計(jì)算模型
2、MapReduce: 分布計(jì)算模型。
分而治之。
PageRank
3、BigTable:大表
把所有數(shù)據(jù)存入一張表中,通過犧牲空間,換取時(shí)間。
4.2.1 來源:分布式計(jì)算模型來源于PageRank(網(wǎng)頁排名)
4.2.2 什么是PageRank??
Google每天爬取海量的網(wǎng)頁,那么如果按照重要程度來排名網(wǎng)頁,應(yīng)該如何排序??
如下圖例子,下圖說明的是4個(gè)網(wǎng)頁之間如何排序,核心思想是把網(wǎng)頁之間的關(guān)系轉(zhuǎn)換成矩陣,因?yàn)榫仃囀强梢杂?jì)算的,那么可以計(jì)算出各個(gè)網(wǎng)頁的重要程度,用數(shù)據(jù)來表示,數(shù)字越大表示越重要。但是Google每天爬取的網(wǎng)頁數(shù)量是非常龐大的,實(shí)際上不可能用一個(gè)矩陣來計(jì)算,因此分布式計(jì)算是來解決這個(gè)問題的。核心思想是把一個(gè)大的矩陣拆分成很多足夠小的矩陣,計(jì)算每個(gè)小得矩陣,再合并各個(gè)小矩陣的結(jié)果,從而得出大矩陣的結(jié)果,而這個(gè)過程是在分布式環(huán)境中運(yùn)行的,如下圖:?
4.2.3 分布式計(jì)算框架MapReduce
關(guān)于MapReduce,有幾點(diǎn)需要注意:?
1、Map階段的輸出,是Reduce階段的輸入。每個(gè)Map輸出的是一個(gè)值,Reduce階段的輸入是一個(gè)集合,集合中的每個(gè)元素就是Map的每個(gè)輸出值。?
2、Map的輸入來自HDFS,Reduce也輸出倒HDFS。?
3、圖中分別有4對key-value值。分別是k1 v1,k2 v2,k3 v3 ,k4 v4,分別是Map的輸入,Map的輸出,reduce的輸入,reduce的輸出。?
4、k2=k3,v2的類型和v3的類型一致?
5、MapReduce所有的輸入輸出類型必須是Hadoop的類型:LongWritable,java中得String對應(yīng)Hadoop中得Text,java中得null對應(yīng)hadoop中得NullWritable.?
6、MapReduce的輸入輸出必須實(shí)現(xiàn)hadoop的序列化,除了原生類型,也可以是自定義類型,但必須實(shí)現(xiàn)hadoop序列化。?
7、從hadoop2.x后,MapReduce程序必須運(yùn)行在Yarn框架中,本地模式除外(本?
地模式?jīng)]有YARN,也沒有HDFS,本地模式中的MapReduce就是一個(gè)單一的java程序)?
4.3 BigTable
4.3.1 大表的基本思想:把所有數(shù)據(jù)存入一張表,通過空間換取時(shí)間。
4.3.2 HBase是hadoop生態(tài)中大表的實(shí)現(xiàn),看下面一個(gè)例子,對比數(shù)據(jù)存在關(guān)系型數(shù)據(jù)庫Oracle和存在HBase中?
?
總結(jié)
- 上一篇: 计算机硬件组成
- 下一篇: classpath和读取resource