大數(shù)據(jù)技術(shù)已經(jīng)被應(yīng)用到各行各業(yè),涉及人們生活的方方面面。大數(shù)據(jù)技術(shù)大大提高了數(shù)據(jù)存儲(chǔ)和計(jì)算能力,從而為企業(yè)快速?zèng)Q策提供了數(shù)據(jù)支撐,能夠助力企業(yè)改進(jìn)業(yè)務(wù)流程、控制成本、提高產(chǎn)品質(zhì)量,應(yīng)用大數(shù)據(jù)技術(shù)為企業(yè)核心競(jìng)爭(zhēng)力的提升打下了堅(jiān)實(shí)的基礎(chǔ)。
大數(shù)據(jù)技術(shù)在企業(yè)項(xiàng)目開(kāi)發(fā)中主要涉及數(shù)據(jù)采集、數(shù)據(jù)存儲(chǔ)和數(shù)據(jù)計(jì)算三個(gè)方面:數(shù)據(jù)采集是利用采集技術(shù)將各種數(shù)據(jù)源、不同格式的數(shù)據(jù)快速采集到大數(shù)據(jù)平臺(tái)。數(shù)據(jù)存儲(chǔ)是將采集過(guò)來(lái)的數(shù)據(jù),按照不同應(yīng)用場(chǎng)景,使用不同技術(shù)進(jìn)行存儲(chǔ),為數(shù)據(jù)計(jì)算做準(zhǔn)備。數(shù)據(jù)計(jì)算可以根據(jù)數(shù)據(jù)的時(shí)效性,對(duì)存儲(chǔ)的數(shù)據(jù)進(jìn)行離線計(jì)算和實(shí)時(shí)計(jì)算,最終的計(jì)算結(jié)果可以為企業(yè)決策提供數(shù)據(jù)支撐。數(shù)據(jù)采集、數(shù)據(jù)存儲(chǔ)和數(shù)據(jù)計(jì)算這三個(gè)方面是大數(shù)據(jù)工程師的必備技能。
大數(shù)據(jù)不是一項(xiàng)專門(mén)的技術(shù),而是很多技術(shù)的綜合應(yīng)用??梢酝ㄟ^(guò)一系列大數(shù)據(jù)技術(shù)對(duì)海量數(shù)據(jù)進(jìn)行分析,挖掘出數(shù)據(jù)背后的價(jià)值。本章將會(huì)詳細(xì)介紹大數(shù)據(jù)平臺(tái)架構(gòu)、大數(shù)據(jù)工程師的技能樹(shù)以及大數(shù)據(jù)項(xiàng)目的需求分析與設(shè)計(jì),使讀者對(duì)大數(shù)據(jù)的概念及技術(shù)有一個(gè)整體的認(rèn)知。
大數(shù)據(jù)平臺(tái)架構(gòu)大致可分為五個(gè)層級(jí)。
在大數(shù)據(jù)時(shí)代,數(shù)據(jù)是第一生產(chǎn)力,因?yàn)榇髷?shù)據(jù)技術(shù)的核心就是從數(shù)據(jù)中挖掘價(jià)值,那么最重要的是要有所需要的數(shù)據(jù),而第一步需要做的就是弄清楚有什么樣的數(shù)據(jù)、如何獲取數(shù)據(jù)。在企業(yè)運(yùn)行的過(guò)程中,特別是互聯(lián)網(wǎng)企業(yè),會(huì)產(chǎn)生各種各樣的數(shù)據(jù),如果企業(yè)不能正確獲取數(shù)據(jù)或沒(méi)有獲取數(shù)據(jù)的能力,就無(wú)法挖掘出數(shù)據(jù)中的價(jià)值,浪費(fèi)了寶貴的數(shù)據(jù)資源。
數(shù)據(jù)從總體上可以分為結(jié)構(gòu)化數(shù)據(jù)和非結(jié)構(gòu)化數(shù)據(jù)。結(jié)構(gòu)化數(shù)據(jù)也稱作行數(shù)據(jù),是由二維表結(jié)構(gòu)來(lái)邏輯表達(dá)和實(shí)現(xiàn)的數(shù)據(jù),嚴(yán)格地遵循數(shù)據(jù)格式與長(zhǎng)度規(guī)范,主要通過(guò)關(guān)系型數(shù)據(jù)庫(kù)進(jìn)行存儲(chǔ)和管理。非結(jié)構(gòu)化數(shù)據(jù)是指數(shù)據(jù)結(jié)構(gòu)不規(guī)則或不完整,沒(méi)有預(yù)定義的數(shù)據(jù)模型,不方便用數(shù)據(jù)庫(kù)的二維邏輯表來(lái)表現(xiàn)的數(shù)據(jù),包括所有格式的辦公文檔、文本、圖片、XML、HTML、各類報(bào)表、圖像和音頻/視頻信息等。
數(shù)據(jù)總體可分為結(jié)構(gòu)化數(shù)據(jù)和非結(jié)構(gòu)化數(shù)據(jù)。結(jié)構(gòu)化數(shù)據(jù)也稱作行數(shù)據(jù),是由二維表結(jié)構(gòu)來(lái)邏輯表達(dá)和實(shí)現(xiàn)的數(shù)據(jù),嚴(yán)格遵循數(shù)據(jù)的字段類型和長(zhǎng)度限制,主要通過(guò)關(guān)系型數(shù)據(jù)庫(kù)進(jìn)行存儲(chǔ)和管理。非結(jié)構(gòu)化數(shù)據(jù)是指數(shù)據(jù)結(jié)構(gòu)不規(guī)則或不完整,沒(méi)有預(yù)定義的數(shù)據(jù)模型,不方便用數(shù)據(jù)庫(kù)的二維邏輯表來(lái)表現(xiàn)的數(shù)據(jù)。
獲取數(shù)據(jù)所使用的技術(shù)主要有:使用瀏覽器探針采集用戶瀏覽器數(shù)據(jù);使用爬蟲(chóng)技術(shù)獲取網(wǎng)頁(yè)數(shù)據(jù);使用sqoop,canal等工具采集數(shù)據(jù)庫(kù)的binlog日志;使用組件flume采集web服務(wù)器的日志數(shù)據(jù)。
幾年來(lái),盡管硬盤(pán)容量在不斷提升,但是單一硬盤(pán)的讀寫(xiě)速度遠(yuǎn)遠(yuǎn)跟不上cpu和內(nèi)存的發(fā)展。為了加快對(duì)獲取到的海量信息的讀寫(xiě)效率,采用共享硬盤(pán)對(duì)數(shù)據(jù)進(jìn)行并行讀取,并由此引出了硬件故障問(wèn)題。為了避免某一硬盤(pán)故障造成數(shù)據(jù)丟失,通常有三種做法:
大數(shù)據(jù)離線或?qū)崟r(shí)計(jì)算項(xiàng)目中經(jīng)常需要使用kafka消息隊(duì)列作為實(shí)時(shí)的數(shù)據(jù)中專服務(wù),對(duì)來(lái)源不同(互聯(lián)網(wǎng)、物聯(lián)網(wǎng)、數(shù)據(jù)庫(kù)的數(shù)據(jù)等)進(jìn)行流轉(zhuǎn)達(dá)到分享和交換數(shù)據(jù)的目的。
資源管理是為了提高集群資源利用率,解決資源共享問(wèn)題。
YARN是一種hadoop資源管理器,作為通用的資源管理系統(tǒng),為上層應(yīng)用提供統(tǒng)一的資源管理和調(diào)度服務(wù),將短作業(yè)和長(zhǎng)服務(wù)混合部署到一個(gè)集群中,并為集群在資源在資源利用、資源的統(tǒng)一管理、調(diào)度和數(shù)據(jù)共享等方面帶來(lái)巨大的好處。
數(shù)據(jù)處理按照?qǐng)?zhí)行時(shí)間的跨度可以分為:離線處理和實(shí)時(shí)處理
離線處理(批處理):用于處理復(fù)雜的批量數(shù)據(jù)。
早期離線計(jì)算主要使用Mapreduce離線分布式計(jì)算框架。通過(guò)hive這個(gè)數(shù)據(jù)倉(cāng)庫(kù)系統(tǒng)提供豐富hive sql(類sql),經(jīng)過(guò)對(duì)hive sql語(yǔ)句進(jìn)行解析和轉(zhuǎn)換,生成一系列mapreduce任務(wù),再集群上執(zhí)行這些任務(wù)從而完成對(duì)數(shù)據(jù)的處理。
后來(lái)出現(xiàn)spark內(nèi)存計(jì)算框架以及flink實(shí)時(shí)計(jì)算框架,簡(jiǎn)化了代碼,提升了執(zhí)行效率,逐步取代了mapreduce。spark和flink同時(shí)也支持離線處理,spark core,spark sql,flink dataset等技術(shù)都支持離線計(jì)算。
實(shí)時(shí)計(jì)算(流處理):用于處理實(shí)時(shí)數(shù)據(jù)流,其特點(diǎn)是數(shù)據(jù)源源不斷實(shí)時(shí)傳輸。
Spark是基于內(nèi)存計(jì)算的大數(shù)據(jù)并行計(jì)算框架,除擴(kuò)展了廣泛使用的 MapReduce 計(jì)算模型,而且高效地支持更多計(jì)算模式,包括交互式查詢和流處理。Spark 適用于各種各樣原先需要多種不同的分布式平臺(tái)的場(chǎng)景,包括批處理、迭代算法、交互式查詢、流處理。
spark streaming是構(gòu)建再spark上的實(shí)時(shí)計(jì)算框架,能夠?qū)嵤?duì)流數(shù)據(jù)進(jìn)行實(shí)時(shí)處理,并且具有很好的可拓展性,高吞吐量和高容錯(cuò)性。
flink是一個(gè)開(kāi)源、分布式、高性能、高可用的大數(shù)據(jù)處理引擎,可部署在各種集群環(huán)境,對(duì)各中大小的數(shù)據(jù)規(guī)模進(jìn)行快速計(jì)算。
Datastream是flink提供給用戶使用,用于進(jìn)行流計(jì)算和批處理的API,是對(duì)底層流式計(jì)算模型的api封裝。
交互式分析是基于歷史數(shù)據(jù)的交互式查詢,常用于實(shí)時(shí)報(bào)表分析、實(shí)時(shí)大屏、在線話費(fèi)查詢等。隨著數(shù)據(jù)量增大,大數(shù)據(jù)領(lǐng)域中的交互式查詢采用分布式技術(shù),主要基于sql on hadoop(一般指hadoop框架中支持接口的組件和技術(shù)),常見(jiàn)的有hive sql,spark sql
機(jī)器學(xué)習(xí)(Machine Learning) 是一門(mén)涉及統(tǒng)計(jì)學(xué)、系統(tǒng)辨識(shí)、逼近理論、神經(jīng)網(wǎng)絡(luò)、優(yōu)化理論、計(jì)算機(jī)科學(xué)、腦科學(xué)等諸多領(lǐng)域的交叉學(xué)科,研究計(jì)算機(jī)怎樣模擬或?qū)崿F(xiàn)人類的學(xué)習(xí)行為,以獲取新的知識(shí)或技能,重新組織已有的知識(shí)結(jié)構(gòu)使之不斷改善自身的性能,是人工智能技術(shù)的核心。
數(shù)據(jù)挖掘(Data Mining,DM),是從大量的、有噪聲的、不完全的、模糊和隨機(jī)的數(shù)據(jù)中,提取出隱含在其中的、人們事先不知道的、具有潛在利用價(jià)值的信息和知識(shí)的過(guò)程。
MLlib(Machine Learnig lib) 是Spark對(duì)常用的機(jī)器學(xué)習(xí)算法的實(shí)現(xiàn)庫(kù),同時(shí)包括相關(guān)的測(cè)試和數(shù)據(jù)生成器。
文獻(xiàn)參考:
《實(shí)戰(zhàn)大數(shù)據(jù)(Hadoop+Spark+Flink)從平臺(tái)構(gòu)建到交互式數(shù)據(jù)分析(離線/實(shí)時(shí))》- 京東圖書(shū)
聯(lián)系客服