《大數(shù)據(jù)導(dǎo)論:思維、技術(shù)和應(yīng)用》摘要

大數(shù)據(jù)思維

什么是大數(shù)據(jù)

大數(shù)據(jù)具備Volume、Velocity、Variety和Value四個(gè)特征,簡(jiǎn)稱“4V”,即數(shù)據(jù)體量巨大、速度快、類型多樣,價(jià)值密度低但整體價(jià)值高。

大數(shù)據(jù)產(chǎn)生

數(shù)據(jù)產(chǎn)生經(jīng)歷了被動(dòng)、主動(dòng)和自動(dòng)三個(gè)階段,分別是運(yùn)營(yíng)式系統(tǒng)階段、用戶原創(chuàng)內(nèi)容階段和感知式系統(tǒng)階段。

對(duì)數(shù)據(jù)分析的新認(rèn)識(shí)

  1. 不是隨機(jī)樣本,而是全體數(shù)據(jù)
  2. 不是純凈,而是混雜
  3. 不是精確,而是趨勢(shì)
  4. 不是因果關(guān)系,而是相關(guān)關(guān)系

大數(shù)據(jù)技術(shù)概述

大數(shù)據(jù)相關(guān)技術(shù)

1.png

大數(shù)據(jù)處理的基本流程

  1. 數(shù)據(jù)抽取與集成。

  2. 數(shù)據(jù)分析。

    核心,大數(shù)據(jù)的價(jià)值產(chǎn)生于分析過(guò)程。

    挑戰(zhàn),噪音數(shù)據(jù)清洗,處理大數(shù)據(jù)的算法,數(shù)據(jù)結(jié)果的衡量標(biāo)準(zhǔn)。

  3. 數(shù)據(jù)解釋。用戶更關(guān)心對(duì)結(jié)果的解釋。

    引入可視化技術(shù);讓用戶了解并參與分析過(guò)程。

大數(shù)據(jù)關(guān)鍵技術(shù)

  1. 大數(shù)據(jù)采集技術(shù)。
  2. 大數(shù)據(jù)預(yù)處理技術(shù)。
  3. 大數(shù)據(jù)存儲(chǔ)和管理技術(shù)。
  4. 大數(shù)據(jù)處理技術(shù)。批處理模式和流處理模式。
  5. 大數(shù)據(jù)分析和挖掘技術(shù)。常用方法包括:分類、回歸分析、聚類、關(guān)聯(lián)規(guī)則。
  6. 大數(shù)據(jù)展示技術(shù)。特征:實(shí)時(shí)性、操作簡(jiǎn)單、豐富的展現(xiàn)、支持多種數(shù)據(jù)源。

大數(shù)據(jù)采集

大數(shù)據(jù)采集概述

挑戰(zhàn):數(shù)據(jù)源的種類多,類型繁雜,數(shù)據(jù)量大,產(chǎn)生速度快。所以大數(shù)據(jù)采集技術(shù)面臨的挑戰(zhàn)是,一方面要保證數(shù)據(jù)采集的可靠性和高效性,同時(shí)還要避免重復(fù)數(shù)據(jù)。

大數(shù)據(jù)采集方法

  1. 數(shù)據(jù)庫(kù)采集
  2. 系統(tǒng)日志采集
  3. 網(wǎng)絡(luò)數(shù)據(jù)采集
  4. 感知設(shè)備數(shù)據(jù)采集

系統(tǒng)日志采集

特征:

  1. 解耦應(yīng)用系統(tǒng)和分析系統(tǒng)。
  2. 支持近實(shí)時(shí)的在線分析和分布式并發(fā)的離線分析。
  3. 高可擴(kuò)展性。數(shù)據(jù)量增加時(shí),可以水平擴(kuò)展結(jié)點(diǎn)。

工具:

  1. Hadoop Chukwa
  2. Apache Flume
  3. Facebook Scribe
  4. LinkedIn Kafka

分布式架構(gòu),能夠滿足每秒數(shù)百兆的日志采集和傳輸需求。

大數(shù)據(jù)預(yù)處理

大數(shù)據(jù)預(yù)處理概述

作用:數(shù)據(jù)預(yù)處理能夠改善數(shù)據(jù)質(zhì)量,從而提高數(shù)據(jù)挖掘過(guò)程中的有效性和準(zhǔn)確性。

數(shù)據(jù)清洗

補(bǔ)全遺漏數(shù)據(jù),消除噪音數(shù)據(jù),糾正不一致的錯(cuò)誤。

數(shù)據(jù)集成

將來(lái)自多個(gè)數(shù)據(jù)源的數(shù)據(jù)合并到一起,構(gòu)成一個(gè)完整的數(shù)據(jù)集。

數(shù)據(jù)轉(zhuǎn)換

將數(shù)據(jù)格式轉(zhuǎn)換成適合數(shù)據(jù)挖掘的形式。

處理內(nèi)容:

  1. 平滑處理
  2. 合計(jì)處理
  3. 數(shù)據(jù)泛化處理
  4. 規(guī)格化處理。重要。
  5. 屬性構(gòu)造處理

數(shù)據(jù)消減

刪除冗余特征,聚類消除多余數(shù)據(jù)。

主要策略:

  1. 數(shù)據(jù)立方合計(jì)
  2. 維度消減
  3. 數(shù)據(jù)壓縮
  4. 數(shù)據(jù)塊消減
  5. 離散化與概念層次生成

大數(shù)據(jù)處理系統(tǒng)

Google大數(shù)據(jù)處理系統(tǒng)

Google使用的大數(shù)據(jù)平臺(tái)包括三個(gè)相互獨(dú)立又緊密結(jié)合的系統(tǒng),GFS,分布式文件系統(tǒng),MapReduce,分布式計(jì)算框架,BigTable,面向列的分布式數(shù)據(jù)庫(kù)。

GFS

GFS采用廉價(jià)的商用服務(wù)器組成分布式集群,能夠在頻繁的故障中確保數(shù)據(jù)存儲(chǔ)的安全,不間斷的提供服務(wù)。

GFS架構(gòu)設(shè)計(jì)的優(yōu)勢(shì):1. Client和Master Server之間只有控制流,沒(méi)有數(shù)據(jù)流,降低了Master Server的負(fù)載。2. Client和Chunk Server之間直接傳輸數(shù)據(jù)流,文件被分成多個(gè)chunk存儲(chǔ),提高了系統(tǒng)I/O的并行度。

MapReduce

MapReduce封裝了分布式系統(tǒng)中并行處理、容錯(cuò)處理、本地化計(jì)算、負(fù)載均衡等細(xì)節(jié),用戶只需要關(guān)心Map和Reduce兩個(gè)計(jì)算過(guò)程。

Hadoop大數(shù)據(jù)處理系統(tǒng)

開(kāi)源,與Google內(nèi)部使用的分布式處理系統(tǒng)原理相同。

大數(shù)據(jù)文件系統(tǒng)HDFS

HDFS簡(jiǎn)介

HDFS是Hadoop分布式文件系統(tǒng)。在Hadoop體系結(jié)構(gòu)中有兩類結(jié)點(diǎn),一類是NameNode,一類是DataNode,分別承擔(dān)Master和Worker的職責(zé)。

HDFS主要針對(duì)“一次寫(xiě)入,多次讀取”的應(yīng)用場(chǎng)景,不適合實(shí)時(shí)交互性很強(qiáng)的應(yīng)用場(chǎng)景,也不適合存儲(chǔ)大量小文件。

HDFS基本原理

傳統(tǒng)分布式系統(tǒng)問(wèn)題

  1. 各個(gè)存儲(chǔ)結(jié)點(diǎn)負(fù)載不均衡
  2. 數(shù)據(jù)可靠性低
  3. 文件管理困難

HDFS基本思想

  1. 對(duì)外提供統(tǒng)一的文件管理功能。
  2. 將大文件分割成不同的塊,存儲(chǔ)在不同的服務(wù)器上。
  3. 每個(gè)文件塊有多個(gè)備份,一般是3個(gè)。
  4. 在NameNode中記錄和維護(hù)文件的元信息。

HDFS設(shè)計(jì)理念

  1. 可構(gòu)建在廉價(jià)機(jī)器上
  2. 高容錯(cuò)性
  3. 適合批處理
  4. 適合存儲(chǔ)大文件

HDFS的局限

  1. 實(shí)時(shí)性差。
  2. 小文件問(wèn)題。
  3. 文件修改問(wèn)題。不支持多個(gè)寫(xiě)入者,不支持在任意位置修改。

HDFS系統(tǒng)實(shí)現(xiàn)

其他參考:Hadoop分布式文件系統(tǒng) - 架構(gòu)和設(shè)計(jì)

HDFS整體架構(gòu)

2.png

HDFS數(shù)據(jù)復(fù)制

3.png

HDFS中的文件都是一次性寫(xiě)入的,并且嚴(yán)格要求在任何時(shí)候只能有一個(gè)寫(xiě)入者。

同一個(gè)機(jī)架內(nèi)的兩臺(tái)機(jī)器間的帶寬會(huì)比不同機(jī)架的兩臺(tái)機(jī)器間的帶寬大,HDFS默認(rèn)的副本實(shí)例數(shù)為3,其中兩個(gè)在同一機(jī)架,另一個(gè)在不同機(jī)架。

HDFS數(shù)據(jù)訪問(wèn)機(jī)制

其他參考:hdfs架構(gòu)詳解

讀取流程

4.png

寫(xiě)入流程

5.png

大數(shù)據(jù)批處理Hadoop MapReduce

其他參考: Hadoop Map/Reduce教程

MapReduce簡(jiǎn)介

Hadoop Map/Reduce是一個(gè)使用簡(jiǎn)易的軟件框架,基于它寫(xiě)出來(lái)的應(yīng)用程序能夠運(yùn)行在由上千個(gè)商用機(jī)器組成的大型集群上,并以一種可靠容錯(cuò)的方式并行處理上T級(jí)別的數(shù)據(jù)集。

一個(gè)Map/Reduce 作業(yè)(job) 通常會(huì)把輸入的數(shù)據(jù)集切分為若干獨(dú)立的數(shù)據(jù)塊,由 map任務(wù)(task)以完全并行的方式處理它們??蚣軙?huì)對(duì)map的輸出先進(jìn)行排序, 然后把結(jié)果輸入給reduce任務(wù)。通常作業(yè)的輸入和輸出都會(huì)被存儲(chǔ)在文件系統(tǒng)中。 整個(gè)框架負(fù)責(zé)任務(wù)的調(diào)度和監(jiān)控,以及重新執(zhí)行已經(jīng)失敗的任務(wù)。

通常,Map/Reduce框架和分布式文件系統(tǒng)是運(yùn)行在一組相同的節(jié)點(diǎn)上的,也就是說(shuō),計(jì)算節(jié)點(diǎn)和存儲(chǔ)節(jié)點(diǎn)通常在一起。這種配置允許框架在那些已經(jīng)存好數(shù)據(jù)的節(jié)點(diǎn)上高效地調(diào)度任務(wù),這可以使整個(gè)集群的網(wǎng)絡(luò)帶寬被非常高效地利用。

Map/Reduce框架由一個(gè)單獨(dú)的master JobTracker 和每個(gè)集群節(jié)點(diǎn)一個(gè)slave TaskTracker共同組成。master負(fù)責(zé)調(diào)度構(gòu)成一個(gè)作業(yè)的所有任務(wù),這些任務(wù)分布在不同的slave上,master監(jiān)控它們的執(zhí)行,重新執(zhí)行已經(jīng)失敗的任務(wù)。而slave僅負(fù)責(zé)執(zhí)行由master指派的任務(wù)。

應(yīng)用程序至少應(yīng)該指明輸入/輸出的位置(路徑),并通過(guò)實(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í)行,同時(shí)提供狀態(tài)和診斷信息給job-client。

MapReduce工作流程

MapReduce實(shí)際處理過(guò)程可以分解為Input、Map、Sort、Combine、Partition、Reduce、Output等階段。

6.png

MapReduce作業(yè)執(zhí)行流程

7.png

MapReduce的Shuffle階段

8.png

大數(shù)據(jù)快速處理Spark

Hadoop MapReduce要求每個(gè)步驟間的數(shù)據(jù)都要序列化到磁盤(pán),這意味著Map Reduce作業(yè)的I/O成本很高,不適合于交互分析和機(jī)器學(xué)習(xí)。

Spark是一個(gè)基于內(nèi)存的開(kāi)源計(jì)算框架,通過(guò)提供內(nèi)存計(jì)算,減少了迭代計(jì)算時(shí)的I/O開(kāi)銷。

Spark與Hadoop

Hadoop MapReduce缺點(diǎn)

  1. MapReduce表達(dá)能力有限
  2. 磁盤(pán)I/O開(kāi)銷大
  3. 計(jì)算延遲高

Spark優(yōu)點(diǎn)

  1. 基于內(nèi)存計(jì)算
  2. 提供了更多的計(jì)算類型
  3. 提供統(tǒng)一的框架管理批量數(shù)據(jù)和流數(shù)據(jù)
  4. Spark基于有向無(wú)環(huán)圖的任務(wù)調(diào)度機(jī)制比MapReduce的迭代執(zhí)行機(jī)制更優(yōu)越

RDD概念

Spark的核心是建立在統(tǒng)一的抽象彈性分布式數(shù)據(jù)集(Resilient Distributed Dataset)。

可以將RDD理解為一個(gè)分布式對(duì)象集合,本質(zhì)上是一個(gè)只讀的分區(qū)記錄集合。每個(gè)RDD可以分成多個(gè)分區(qū),每個(gè)分區(qū)就是一個(gè)數(shù)據(jù)集片段。一個(gè)RDD的不同分區(qū)可以保存到集群中的不同結(jié)點(diǎn)上,從而可以在集群中的不同結(jié)點(diǎn)上進(jìn)行并行計(jì)算。

RDD特點(diǎn):1. 只讀,2. 分布式,3. 彈性,計(jì)算過(guò)程中如果內(nèi)存不足會(huì)和硬盤(pán)交換數(shù)據(jù),4. 基于內(nèi)存,可以全部或部分緩存在內(nèi)存中,多次計(jì)算間重復(fù)利用。

RDD基本操作:轉(zhuǎn)化(Transformation)操作和行動(dòng)(Action)操作。轉(zhuǎn)化操作就是從一個(gè)RDD產(chǎn)生一個(gè)新的RDD,而行動(dòng)操作就是進(jìn)行實(shí)際的計(jì)算。

大數(shù)據(jù)實(shí)時(shí)流計(jì)算Spark Streaming

Spark Streaming簡(jiǎn)介

Spark Streaming的處理機(jī)制是,接收實(shí)時(shí)的輸入數(shù)據(jù)流,并根據(jù)一定的時(shí)間間隔(如1秒)拆分成一批批的數(shù)據(jù),通過(guò)Spark Engine處理這些批數(shù)據(jù),得到結(jié)果。

Spark Streaming支持一個(gè)高層的抽象,叫做離散流(Discretized Stream)或者DStream,它代表連續(xù)的數(shù)據(jù)流。在內(nèi)部,DStream是由一系列RDD組成。一批數(shù)據(jù)對(duì)應(yīng)一個(gè)RDD實(shí)例。

大數(shù)據(jù)挖掘

數(shù)據(jù)挖掘簡(jiǎn)介

數(shù)據(jù)挖掘就是通過(guò)對(duì)大量數(shù)據(jù)的分析,發(fā)現(xiàn)信息之間的關(guān)聯(lián),找到有用的知識(shí)的過(guò)程。

數(shù)據(jù)挖掘的價(jià)值:1. 相關(guān)性,2. 趨勢(shì),3. 特征分析

數(shù)據(jù)挖掘算法:

9.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容