大數(shù)據(jù)思維
什么是大數(shù)據(jù)
大數(shù)據(jù)具備Volume、Velocity居凶、Variety和Value四個特征虫给,簡稱“4V”,即數(shù)據(jù)體量巨大排监、速度快狰右、類型多樣,價值密度低但整體價值高舆床。
大數(shù)據(jù)產(chǎn)生
數(shù)據(jù)產(chǎn)生經(jīng)歷了被動棋蚌、主動和自動三個階段,分別是運(yùn)營式系統(tǒng)階段挨队、用戶原創(chuàng)內(nèi)容階段和感知式系統(tǒng)階段谷暮。
對數(shù)據(jù)分析的新認(rèn)識
- 不是隨機(jī)樣本,而是全體數(shù)據(jù)
- 不是純凈盛垦,而是混雜
- 不是精確湿弦,而是趨勢
- 不是因果關(guān)系,而是相關(guān)關(guān)系
大數(shù)據(jù)技術(shù)概述
大數(shù)據(jù)相關(guān)技術(shù)
大數(shù)據(jù)處理的基本流程
數(shù)據(jù)抽取與集成腾夯。
-
數(shù)據(jù)分析颊埃。
核心蔬充,大數(shù)據(jù)的價值產(chǎn)生于分析過程。
挑戰(zhàn)班利,噪音數(shù)據(jù)清洗饥漫,處理大數(shù)據(jù)的算法,數(shù)據(jù)結(jié)果的衡量標(biāo)準(zhǔn)罗标。
-
數(shù)據(jù)解釋庸队。用戶更關(guān)心對結(jié)果的解釋。
引入可視化技術(shù)闯割;讓用戶了解并參與分析過程彻消。
大數(shù)據(jù)關(guān)鍵技術(shù)
- 大數(shù)據(jù)采集技術(shù)。
- 大數(shù)據(jù)預(yù)處理技術(shù)宙拉。
- 大數(shù)據(jù)存儲和管理技術(shù)宾尚。
- 大數(shù)據(jù)處理技術(shù)。批處理模式和流處理模式鼓黔。
- 大數(shù)據(jù)分析和挖掘技術(shù)央勒。常用方法包括:分類、回歸分析澳化、聚類、關(guān)聯(lián)規(guī)則稳吮。
- 大數(shù)據(jù)展示技術(shù)缎谷。特征:實(shí)時性、操作簡單灶似、豐富的展現(xiàn)列林、支持多種數(shù)據(jù)源。
大數(shù)據(jù)采集
大數(shù)據(jù)采集概述
挑戰(zhàn):數(shù)據(jù)源的種類多酪惭,類型繁雜希痴,數(shù)據(jù)量大,產(chǎn)生速度快春感。所以大數(shù)據(jù)采集技術(shù)面臨的挑戰(zhàn)是砌创,一方面要保證數(shù)據(jù)采集的可靠性和高效性,同時還要避免重復(fù)數(shù)據(jù)鲫懒。
大數(shù)據(jù)采集方法
- 數(shù)據(jù)庫采集
- 系統(tǒng)日志采集
- 網(wǎng)絡(luò)數(shù)據(jù)采集
- 感知設(shè)備數(shù)據(jù)采集
系統(tǒng)日志采集
特征:
- 解耦應(yīng)用系統(tǒng)和分析系統(tǒng)嫩实。
- 支持近實(shí)時的在線分析和分布式并發(fā)的離線分析。
- 高可擴(kuò)展性窥岩。數(shù)據(jù)量增加時甲献,可以水平擴(kuò)展結(jié)點(diǎn)。
工具:
- Hadoop Chukwa
- Apache Flume
- Facebook Scribe
- LinkedIn Kafka
分布式架構(gòu)颂翼,能夠滿足每秒數(shù)百兆的日志采集和傳輸需求晃洒。
大數(shù)據(jù)預(yù)處理
大數(shù)據(jù)預(yù)處理概述
作用:數(shù)據(jù)預(yù)處理能夠改善數(shù)據(jù)質(zhì)量慨灭,從而提高數(shù)據(jù)挖掘過程中的有效性和準(zhǔn)確性。
數(shù)據(jù)清洗
補(bǔ)全遺漏數(shù)據(jù)球及,消除噪音數(shù)據(jù)氧骤,糾正不一致的錯誤。
數(shù)據(jù)集成
將來自多個數(shù)據(jù)源的數(shù)據(jù)合并到一起桶略,構(gòu)成一個完整的數(shù)據(jù)集语淘。
數(shù)據(jù)轉(zhuǎn)換
將數(shù)據(jù)格式轉(zhuǎn)換成適合數(shù)據(jù)挖掘的形式。
處理內(nèi)容:
- 平滑處理
- 合計(jì)處理
- 數(shù)據(jù)泛化處理
- 規(guī)格化處理际歼。重要惶翻。
- 屬性構(gòu)造處理
數(shù)據(jù)消減
刪除冗余特征,聚類消除多余數(shù)據(jù)鹅心。
主要策略:
- 數(shù)據(jù)立方合計(jì)
- 維度消減
- 數(shù)據(jù)壓縮
- 數(shù)據(jù)塊消減
- 離散化與概念層次生成
大數(shù)據(jù)處理系統(tǒng)
Google大數(shù)據(jù)處理系統(tǒng)
Google使用的大數(shù)據(jù)平臺包括三個相互獨(dú)立又緊密結(jié)合的系統(tǒng)吕粗,GFS,分布式文件系統(tǒng)旭愧,MapReduce颅筋,分布式計(jì)算框架,BigTable输枯,面向列的分布式數(shù)據(jù)庫议泵。
GFS
GFS采用廉價的商用服務(wù)器組成分布式集群,能夠在頻繁的故障中確保數(shù)據(jù)存儲的安全桃熄,不間斷的提供服務(wù)先口。
GFS架構(gòu)設(shè)計(jì)的優(yōu)勢:1. Client和Master Server之間只有控制流,沒有數(shù)據(jù)流瞳收,降低了Master Server的負(fù)載碉京。2. Client和Chunk Server之間直接傳輸數(shù)據(jù)流,文件被分成多個chunk存儲螟深,提高了系統(tǒng)I/O的并行度谐宙。
MapReduce
MapReduce封裝了分布式系統(tǒng)中并行處理、容錯處理界弧、本地化計(jì)算凡蜻、負(fù)載均衡等細(xì)節(jié),用戶只需要關(guān)心Map和Reduce兩個計(jì)算過程夹纫。
Hadoop大數(shù)據(jù)處理系統(tǒng)
開源咽瓷,與Google內(nèi)部使用的分布式處理系統(tǒng)原理相同。
大數(shù)據(jù)文件系統(tǒng)HDFS
HDFS簡介
HDFS是Hadoop分布式文件系統(tǒng)舰讹。在Hadoop體系結(jié)構(gòu)中有兩類結(jié)點(diǎn)茅姜,一類是NameNode,一類是DataNode,分別承擔(dān)Master和Worker的職責(zé)钻洒。
HDFS主要針對“一次寫入奋姿,多次讀取”的應(yīng)用場景,不適合實(shí)時交互性很強(qiáng)的應(yīng)用場景素标,也不適合存儲大量小文件称诗。
HDFS基本原理
傳統(tǒng)分布式系統(tǒng)問題
- 各個存儲結(jié)點(diǎn)負(fù)載不均衡
- 數(shù)據(jù)可靠性低
- 文件管理困難
HDFS基本思想
- 對外提供統(tǒng)一的文件管理功能。
- 將大文件分割成不同的塊头遭,存儲在不同的服務(wù)器上寓免。
- 每個文件塊有多個備份,一般是3個计维。
- 在NameNode中記錄和維護(hù)文件的元信息袜香。
HDFS設(shè)計(jì)理念
- 可構(gòu)建在廉價機(jī)器上
- 高容錯性
- 適合批處理
- 適合存儲大文件
HDFS的局限
- 實(shí)時性差。
- 小文件問題鲫惶。
- 文件修改問題蜈首。不支持多個寫入者,不支持在任意位置修改欠母。
HDFS系統(tǒng)實(shí)現(xiàn)
其他參考:Hadoop分布式文件系統(tǒng) - 架構(gòu)和設(shè)計(jì)
HDFS整體架構(gòu)
HDFS數(shù)據(jù)復(fù)制
HDFS中的文件都是一次性寫入的欢策,并且嚴(yán)格要求在任何時候只能有一個寫入者。
同一個機(jī)架內(nèi)的兩臺機(jī)器間的帶寬會比不同機(jī)架的兩臺機(jī)器間的帶寬大赏淌,HDFS默認(rèn)的副本實(shí)例數(shù)為3踩寇,其中兩個在同一機(jī)架,另一個在不同機(jī)架六水。
HDFS數(shù)據(jù)訪問機(jī)制
其他參考:hdfs架構(gòu)詳解
讀取流程
寫入流程
大數(shù)據(jù)批處理Hadoop MapReduce
其他參考: Hadoop Map/Reduce教程
MapReduce簡介
Hadoop Map/Reduce是一個使用簡易的軟件框架姑荷,基于它寫出來的應(yīng)用程序能夠運(yùn)行在由上千個商用機(jī)器組成的大型集群上,并以一種可靠容錯的方式并行處理上T級別的數(shù)據(jù)集缩擂。
一個Map/Reduce 作業(yè)(job) 通常會把輸入的數(shù)據(jù)集切分為若干獨(dú)立的數(shù)據(jù)塊,由 map任務(wù)(task)以完全并行的方式處理它們添寺】瓒ⅲ框架會對map的輸出先進(jìn)行排序, 然后把結(jié)果輸入給reduce任務(wù)计露。通常作業(yè)的輸入和輸出都會被存儲在文件系統(tǒng)中博脑。 整個框架負(fù)責(zé)任務(wù)的調(diào)度和監(jiān)控,以及重新執(zhí)行已經(jīng)失敗的任務(wù)票罐。
通常叉趣,Map/Reduce框架和分布式文件系統(tǒng)是運(yùn)行在一組相同的節(jié)點(diǎn)上的,也就是說该押,計(jì)算節(jié)點(diǎn)和存儲節(jié)點(diǎn)通常在一起疗杉。這種配置允許框架在那些已經(jīng)存好數(shù)據(jù)的節(jié)點(diǎn)上高效地調(diào)度任務(wù),這可以使整個集群的網(wǎng)絡(luò)帶寬被非常高效地利用蚕礼。
Map/Reduce框架由一個單獨(dú)的master JobTracker 和每個集群節(jié)點(diǎn)一個slave TaskTracker共同組成烟具。master負(fù)責(zé)調(diào)度構(gòu)成一個作業(yè)的所有任務(wù)梢什,這些任務(wù)分布在不同的slave上,master監(jiān)控它們的執(zhí)行朝聋,重新執(zhí)行已經(jīng)失敗的任務(wù)嗡午。而slave僅負(fù)責(zé)執(zhí)行由master指派的任務(wù)。
應(yīng)用程序至少應(yīng)該指明輸入/輸出的位置(路徑)冀痕,并通過實(shí)現(xiàn)合適的接口或抽象類提供map和reduce函數(shù)荔睹。再加上其他作業(yè)的參數(shù),就構(gòu)成了作業(yè)配置(job configuration)言蛇。然后僻他,Hadoop的 job client提交作業(yè)(jar包/可執(zhí)行程序等)和配置信息給JobTracker,后者負(fù)責(zé)分發(fā)這些軟件和配置信息給slave猜极、調(diào)度任務(wù)并監(jiān)控它們的執(zhí)行中姜,同時提供狀態(tài)和診斷信息給job-client。
MapReduce工作流程
MapReduce實(shí)際處理過程可以分解為Input跟伏、Map丢胚、Sort、Combine受扳、Partition携龟、Reduce、Output等階段勘高。
MapReduce作業(yè)執(zhí)行流程
MapReduce的Shuffle階段
大數(shù)據(jù)快速處理Spark
Hadoop MapReduce要求每個步驟間的數(shù)據(jù)都要序列化到磁盤峡蟋,這意味著Map Reduce作業(yè)的I/O成本很高,不適合于交互分析和機(jī)器學(xué)習(xí)华望。
Spark是一個基于內(nèi)存的開源計(jì)算框架蕊蝗,通過提供內(nèi)存計(jì)算,減少了迭代計(jì)算時的I/O開銷赖舟。
Spark與Hadoop
Hadoop MapReduce缺點(diǎn)
- MapReduce表達(dá)能力有限
- 磁盤I/O開銷大
- 計(jì)算延遲高
Spark優(yōu)點(diǎn)
- 基于內(nèi)存計(jì)算
- 提供了更多的計(jì)算類型
- 提供統(tǒng)一的框架管理批量數(shù)據(jù)和流數(shù)據(jù)
- Spark基于有向無環(huán)圖的任務(wù)調(diào)度機(jī)制比MapReduce的迭代執(zhí)行機(jī)制更優(yōu)越
RDD概念
Spark的核心是建立在統(tǒng)一的抽象彈性分布式數(shù)據(jù)集(Resilient Distributed Dataset)蓬戚。
可以將RDD理解為一個分布式對象集合,本質(zhì)上是一個只讀的分區(qū)記錄集合宾抓。每個RDD可以分成多個分區(qū)子漩,每個分區(qū)就是一個數(shù)據(jù)集片段。一個RDD的不同分區(qū)可以保存到集群中的不同結(jié)點(diǎn)上石洗,從而可以在集群中的不同結(jié)點(diǎn)上進(jìn)行并行計(jì)算幢泼。
RDD特點(diǎn):1. 只讀,2. 分布式讲衫,3. 彈性缕棵,計(jì)算過程中如果內(nèi)存不足會和硬盤交換數(shù)據(jù),4. 基于內(nèi)存,可以全部或部分緩存在內(nèi)存中挥吵,多次計(jì)算間重復(fù)利用重父。
RDD基本操作:轉(zhuǎn)化(Transformation)操作和行動(Action)操作。轉(zhuǎn)化操作就是從一個RDD產(chǎn)生一個新的RDD忽匈,而行動操作就是進(jìn)行實(shí)際的計(jì)算房午。
大數(shù)據(jù)實(shí)時流計(jì)算Spark Streaming
Spark Streaming簡介
Spark Streaming的處理機(jī)制是,接收實(shí)時的輸入數(shù)據(jù)流丹允,并根據(jù)一定的時間間隔(如1秒)拆分成一批批的數(shù)據(jù)郭厌,通過Spark Engine處理這些批數(shù)據(jù),得到結(jié)果雕蔽。
Spark Streaming支持一個高層的抽象折柠,叫做離散流(Discretized Stream)或者DStream,它代表連續(xù)的數(shù)據(jù)流批狐。在內(nèi)部扇售,DStream是由一系列RDD組成。一批數(shù)據(jù)對應(yīng)一個RDD實(shí)例嚣艇。
大數(shù)據(jù)挖掘
數(shù)據(jù)挖掘簡介
數(shù)據(jù)挖掘就是通過對大量數(shù)據(jù)的分析承冰,發(fā)現(xiàn)信息之間的關(guān)聯(lián),找到有用的知識的過程食零。
數(shù)據(jù)挖掘的價值:1. 相關(guān)性困乒,2. 趨勢,3. 特征分析
數(shù)據(jù)挖掘算法: