java 大數(shù)據(jù)以及Hadoop相關(guān)概念介紹你知道什么?
一、大數(shù)據(jù)的基本概念
1.1、什么是大數(shù)據(jù)
大數(shù)據(jù)指的就是要處理的數(shù)據(jù)是TB級(jí)別以上的數(shù)據(jù)。大數(shù)據(jù)是以TB級(jí)別起步的。在計(jì)算機(jī)當(dāng)中,存放到硬盤上面的文件都會(huì)占用一定的存儲(chǔ)空間,例如:

文件占用的存儲(chǔ)空間代表的就是該文件的大小,在計(jì)算機(jī)當(dāng)中,文件的大小可以采用以下單位來表示,各個(gè)單位之間的轉(zhuǎn)換關(guān)系如下:

轉(zhuǎn)換
平時(shí)我們?cè)谖覀冏约旱碾娔X上面常見的就是Byte、KB、MB、GB這幾種,那么究竟什么是大數(shù)據(jù)呢,大數(shù)據(jù)的起步是以TB級(jí)別開始的,1TB=1024GB,而我們處理的數(shù)據(jù)可能會(huì)到達(dá)PB級(jí)別,1PB=1024TB,那可想而知,數(shù)據(jù)量是多么龐大,
所以大數(shù)據(jù)指的就是要處理的數(shù)據(jù)是TB級(jí)別以上的數(shù)據(jù)。而對(duì)于這些TB級(jí)別以上的數(shù)據(jù),一般情況下,一臺(tái)計(jì)算機(jī)的硬盤存儲(chǔ)空間是無法存儲(chǔ)那么大的數(shù)據(jù),我們現(xiàn)在的普通電腦一般都是一塊硬盤,而硬盤容量一般都是500GB左右,有的是1TB,假設(shè)現(xiàn)在有1PB的數(shù)據(jù)要存儲(chǔ),我們給每一臺(tái)計(jì)算機(jī)配置10塊硬盤,每一塊硬盤都是1T的存儲(chǔ)容量,那么也得要使用100多臺(tái)電腦才能夠存儲(chǔ)得下1PB的數(shù)據(jù)。所以說,當(dāng)我們的數(shù)據(jù)規(guī)模達(dá)到一定的程度的時(shí)候,我們以往的一些問題的解決辦法在這種場(chǎng)景下已經(jīng)變得不適用了。
1.2、大數(shù)據(jù)的特征

大數(shù)據(jù),顧名思義,第一個(gè)特征就是數(shù)據(jù)量大,需要非常大的存儲(chǔ)空間進(jìn)行存儲(chǔ),而如果要處理這些海量的數(shù)據(jù),那么計(jì)算量可想而知,所以計(jì)算量非常龐大。而這些數(shù)據(jù)的來源往往也是多樣化的,數(shù)據(jù)的格式也是多樣化的,在我們平時(shí)的應(yīng)用系統(tǒng)開發(fā)中,我們要處理的數(shù)據(jù)來源大多數(shù)是存儲(chǔ)在數(shù)據(jù)庫中的數(shù)據(jù)又或者是存儲(chǔ)在文件當(dāng)中,而在大數(shù)據(jù)時(shí)代,我們一個(gè)系統(tǒng)要處理的數(shù)據(jù)來源是多種多樣的,這些數(shù)據(jù)的來源可能是來自數(shù)據(jù)庫,也可能是來自一些監(jiān)控采集數(shù)據(jù),或者是一些科研數(shù)據(jù),而數(shù)據(jù)的格式可能有普通文本,圖片、視頻、音頻、結(jié)構(gòu)化的,非結(jié)構(gòu)化的等等,反正什么樣的數(shù)據(jù)都有。
在大數(shù)據(jù)時(shí)代,數(shù)據(jù)的增長(zhǎng)速度是非??斓?,例如我們每天打電話,發(fā)短信,我們打出去的電話和發(fā)出去的短信在移動(dòng)和聯(lián)通公司都會(huì)有相應(yīng)的記錄,而這樣的數(shù)據(jù)每天都會(huì)產(chǎn)生幾億條,數(shù)據(jù)量的增長(zhǎng)速度可想而知,因此要求處理數(shù)據(jù)的應(yīng)用系統(tǒng)的處理速度也要快,當(dāng)我們想展示一些數(shù)據(jù)給用戶看時(shí),如果應(yīng)用系統(tǒng)的處理速度不夠快,那么給用戶的體驗(yàn)是非常差的。
另外,在大數(shù)據(jù)領(lǐng)域,我們從海里數(shù)據(jù)中能夠提取到的相對(duì)有價(jià)值的數(shù)據(jù)也是非常有限的,我們處理幾十個(gè)T的數(shù)據(jù),從這些數(shù)據(jù)當(dāng)中能夠提取出來的有價(jià)值的信息也是非常少的,大數(shù)據(jù)分析要想得到一些有價(jià)值的結(jié)果,那么要求數(shù)據(jù)要比較全。比如,我們想分析一個(gè)用戶的購(gòu)物習(xí)慣,她平時(shí)喜歡在京東和天貓、淘寶這些電子商務(wù)網(wǎng)站上面進(jìn)行購(gòu)物,我們分析她在京東商城上面的購(gòu)物行為時(shí),我們不光要分析她最近一次的購(gòu)買行為,還要分析她很長(zhǎng)一段時(shí)間內(nèi)的歷史購(gòu)買行為,以及在其他電商網(wǎng)站的購(gòu)買行為,如果我們真的想一體地分析用戶的生活習(xí)慣,那么不光是要分析她的購(gòu)物行為,還要分析她的社交行為,比如在一些社交網(wǎng)站上面平時(shí)和哪些人聯(lián)系最多,平時(shí)喜歡討論一些什么話題,從事的職業(yè),年齡,性別等,拿到的數(shù)據(jù)越全,我們分析的結(jié)果就會(huì)越準(zhǔn)確,所以大數(shù)據(jù)不光是要求數(shù)據(jù)量要大,更重要要的是數(shù)據(jù)要全面,要多維度的,這樣我們提取到的數(shù)據(jù)才是比較有價(jià)值,比較準(zhǔn)確的。
大數(shù)據(jù)處理領(lǐng)域在價(jià)值這一塊是稀疏型的,從海量數(shù)據(jù)當(dāng)中能夠提取到的有價(jià)值的數(shù)據(jù)是非常稀少的。
1.3、存在有大數(shù)據(jù)的行業(yè)
放眼觀世界,現(xiàn)在各行各業(yè)每天都會(huì)產(chǎn)生大量的數(shù)據(jù),21世紀(jì)是一個(gè)互聯(lián)網(wǎng)時(shí)代,一個(gè)信息化的時(shí)代,我們這一代人都不可避免地在一些IT系統(tǒng)當(dāng)中留下我們的腳印,存在有大數(shù)據(jù)的典型的行業(yè)有以下幾個(gè)行業(yè):

互聯(lián)網(wǎng)企業(yè)是最早收集大數(shù)據(jù)的行業(yè),最典型的代表就是Google和百度,這兩個(gè)公司是做搜索引擎的,數(shù)量都非常龐大,每天都要去把互聯(lián)網(wǎng)上的各種各樣的網(wǎng)頁信息抓取下來存儲(chǔ)到本地,然后進(jìn)行分析,處理,當(dāng)用戶想通過搜索引擎搜索一些他們關(guān)心的信息時(shí),Google和百度就從海量的數(shù)據(jù)當(dāng)中提取出相對(duì)于對(duì)用戶而言是有用的信息,然后將提取到的結(jié)果反饋給用戶,據(jù)說Google存儲(chǔ)的數(shù)據(jù)量已經(jīng)到達(dá)了上百個(gè)PB,這個(gè)數(shù)據(jù)量是非常驚人的。類似于Fackbook這樣的SNS(社交網(wǎng)站)因?yàn)橛脩袅勘容^多,用戶每天在網(wǎng)站上面分享一些文章,圖片,視頻,音頻等信息,因此每天產(chǎn)生的數(shù)據(jù)量也是非常龐大的。
二、大數(shù)據(jù)技術(shù)要解決的技術(shù)難題
2.1、海量數(shù)據(jù)如何存儲(chǔ)?
海量數(shù)據(jù)的存儲(chǔ)問題也不是今天才有的,很早以前就出現(xiàn)了,一些行業(yè)或者部門因?yàn)闅v史的積累,數(shù)據(jù)量也達(dá)到了一定的級(jí)別,當(dāng)一臺(tái)電腦無法存儲(chǔ)這么龐大的數(shù)據(jù)時(shí),采用的解決方案是使用NFS(網(wǎng)絡(luò)文件系統(tǒng))將數(shù)據(jù)分開存儲(chǔ),NFS系統(tǒng)的架構(gòu)如下圖所示:

NFS這種解決方案就是同時(shí)架設(shè)多臺(tái)文件服務(wù)器,如下圖所示:

然后在文件服務(wù)器上面設(shè)置共享目錄,例如圖中顯示的【D:\software、E:\aa\bb、F:\dd\cc、E:\images】

這樣我們就可以把文件分類存放到各個(gè)文件服務(wù)器上面的共享目錄當(dāng)中,一臺(tái)電腦的存儲(chǔ)空間不夠用,那么我們就將數(shù)據(jù)分散到多臺(tái)電腦進(jìn)行存儲(chǔ),而這些文件服務(wù)器上面的共享目錄對(duì)于用戶來說是透明的,用戶會(huì)以為自己存放數(shù)據(jù)的【Software、Tools、film、music】這些目錄都是屬于【Itdc.com.local】這臺(tái)文件服務(wù)器里面的【public】目錄下的子目錄,在NFS系統(tǒng)中,【Itdc.com.local】這臺(tái)文件服務(wù)器只是起到一個(gè)中轉(zhuǎn)站作用,將用戶需要存放的海量數(shù)據(jù)分類存放到各個(gè)文件系統(tǒng)當(dāng)中,這就解決了大數(shù)據(jù)的存儲(chǔ)問題了。當(dāng)用戶需要訪問分散在各個(gè)文件服務(wù)器中的文件資源時(shí),它只需要訪問【Itdc.com.local】這臺(tái)文件服務(wù)器就可以了。
NFS雖然是解決了海量數(shù)據(jù)的存儲(chǔ)問題,但是在大數(shù)據(jù)背景下,這種存儲(chǔ)方案是不適用的,大數(shù)據(jù)不光是要解決數(shù)據(jù)存儲(chǔ)問題,更重要的是海量數(shù)據(jù)的分析,而NFS在海量數(shù)據(jù)分析方面不能夠充分利用多臺(tái)計(jì)算機(jī)同時(shí)進(jìn)行分析。
2.2、海量數(shù)據(jù)如何計(jì)算
一個(gè)實(shí)際的需求場(chǎng)景——日志分析
對(duì)日志中每一個(gè)用戶的流量進(jìn)行匯總就和,如下圖所示:

對(duì)于這樣的一個(gè)日志文件,如果只有這么幾行數(shù)據(jù),我們一般會(huì)采用這樣的處理方式:
1、讀取一行日志
2、抽取手機(jī)號(hào)和流量字段
3、累加到HashMap中
4、遍歷輸出結(jié)果
那么問題來了,如果數(shù)據(jù)量變得很大呢,比如一個(gè)日志文件里面有幾個(gè)GB數(shù)據(jù),
如果仍然一行一行去讀,那么就會(huì)因?yàn)榇疟P的IO瓶頸導(dǎo)致效率太低,速度太慢。
如果一次性加載到內(nèi)存,那么就會(huì)因?yàn)閱闻_(tái)計(jì)算機(jī)的內(nèi)存空間有限而導(dǎo)致內(nèi)存溢出。
如果將中間結(jié)果全部緩存到HashMap中,那么也會(huì)因?yàn)閱闻_(tái)計(jì)算機(jī)的內(nèi)存空間有限而導(dǎo)致內(nèi)存溢出。
可以選擇采用多線程處理,但是依然無法改變資源瓶頸的現(xiàn)實(shí),因?yàn)橐慌_(tái)計(jì)算器的CPU資源,內(nèi)存資源,磁盤IO瓶頸是定,創(chuàng)建再多的線程也無法改變這個(gè)現(xiàn)實(shí)。
所以當(dāng)一個(gè)日志文件里面存儲(chǔ)了幾個(gè)GB數(shù)據(jù),那么這種情況下就不能采用這種傳統(tǒng)的處理方式了??梢钥吹剑诖髷?shù)據(jù)背景下,我們一個(gè)簡(jiǎn)單的業(yè)務(wù)場(chǎng)景,比如這里的統(tǒng)計(jì)用戶流量,在數(shù)據(jù)量變得很大的時(shí)候,原來不是問題的一些東西現(xiàn)在都成了問題。那么這些問題該如何解決呢?
解決思路一
縱向擴(kuò)展,也就是升級(jí)硬件,提高單機(jī)性能(增加內(nèi)存,增強(qiáng)CPU、用更高性能的磁盤(如固態(tài)硬盤)),比如可以購(gòu)買IBM的高端服務(wù)器。

優(yōu)點(diǎn):
1、簡(jiǎn)單易行
缺點(diǎn):
1、單臺(tái)計(jì)算機(jī)的擴(kuò)展空間有限,CPU、內(nèi)存、磁盤再怎么擴(kuò)展也是有限的,無法無限擴(kuò)展。
2、成本高(高端服務(wù)器非常昂貴,幾百萬甚至上千萬一臺(tái),一般的小公司承受不起這樣高昂的成本)
解決思路二
橫向擴(kuò)展,用多臺(tái)節(jié)點(diǎn)分布式集群處理 (通過增加節(jié)點(diǎn)數(shù)量提高處理能力,這里說的節(jié)點(diǎn)指的就是一臺(tái)計(jì)算機(jī))

核心思想:任務(wù)分?jǐn)偅ㄟ^協(xié)作來實(shí)現(xiàn)單節(jié)點(diǎn)無法實(shí)現(xiàn)的任務(wù)。
優(yōu)點(diǎn):
1、成本相對(duì)低(可采用普通機(jī)器)
2、易于線性擴(kuò)展
缺點(diǎn):
系統(tǒng)復(fù)雜度增加,我們要將我們的web應(yīng)用部署到每一個(gè)節(jié)點(diǎn)上面,而多個(gè)節(jié)點(diǎn)協(xié)同工作時(shí)就要考慮以下幾個(gè)問題
1、如何調(diào)度資源
2、任務(wù)如何監(jiān)控
3、中間結(jié)果如何調(diào)度
4、系統(tǒng)如何容錯(cuò)
5、如何實(shí)現(xiàn)眾多節(jié)點(diǎn)間的協(xié)調(diào)
分布式計(jì)算的復(fù)雜性就體現(xiàn)在這樣的5個(gè)問題里面。
三、Hadoop相關(guān)概念介紹
3.1、大數(shù)據(jù)行業(yè)的標(biāo)準(zhǔn)——Hadoop
Hadoop是一個(gè)開源的可運(yùn)行于大規(guī)模集群上的分布式文件系統(tǒng)和運(yùn)行處理基礎(chǔ)框架
Hadoop擅長(zhǎng)于在廉價(jià)機(jī)器搭建的集群上進(jìn)行海量數(shù)據(jù)(結(jié)構(gòu)化與非結(jié)構(gòu)化)的存儲(chǔ)與離線處理。
Hadoop就是一門用來處理大數(shù)據(jù)的技術(shù),就是用來解決上述提到的分布式計(jì)算里面的5個(gè)技術(shù)難題的。
3.2、Hadoop的Logo圖片

3.3、Hadoop的由來

3.4、Hadoop的核心組件
3.4.1、海量存儲(chǔ)——HDFS(Hadoop分布式文件系統(tǒng),Hadoop Distributed File System)
分布式易擴(kuò)展
廉價(jià)易得
高吞吐量
高可靠性
3.4.2、分布式并行計(jì)算——資源調(diào)度(Yarn)+編程模型(MapReduce)
大容量高并發(fā)
封裝分布式實(shí)現(xiàn)細(xì)節(jié)
大大提高分析效率
3.5、Hadoop的學(xué)習(xí)路線
Linux系統(tǒng)基本操作能力
java開發(fā)語言
Hadoop核心組件
MapReduce或Spark等編程模型
Zookeeper-Sqoop-Flume等工具組件
NoSQL技術(shù),Hbase
數(shù)據(jù)分析挖掘、機(jī)器學(xué)習(xí)、Mahout
大家可以看到,學(xué)習(xí)大數(shù)據(jù)的話,咱們先要把java的基礎(chǔ)給打牢,想學(xué)大數(shù)據(jù),java是基礎(chǔ)!