《大數(shù)據(jù)技術(shù)教程》全套教學(xué)課件_第1頁
《大數(shù)據(jù)技術(shù)教程》全套教學(xué)課件_第2頁
《大數(shù)據(jù)技術(shù)教程》全套教學(xué)課件_第3頁
《大數(shù)據(jù)技術(shù)教程》全套教學(xué)課件_第4頁
《大數(shù)據(jù)技術(shù)教程》全套教學(xué)課件_第5頁
已閱讀5頁,還剩545頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

第一篇技術(shù)基礎(chǔ)篇第1章大數(shù)據(jù)技術(shù)概述第2章大數(shù)據(jù)分析技術(shù)第3章Hadoop技術(shù)基礎(chǔ)第4章Spark技術(shù)基礎(chǔ)第5章構(gòu)建基于Hadoop的離線電商大數(shù)據(jù)分析平臺第6章構(gòu)建基于Hadoop+Spark的旅游大數(shù)據(jù)多維第7章基于Spark的汽車大數(shù)據(jù)實(shí)時評分系統(tǒng)全套可編輯PPT課件第1章大數(shù)據(jù)技術(shù)概述

本章內(nèi)容本章首先從大數(shù)據(jù)的產(chǎn)生、概念、實(shí)際應(yīng)用和核心技術(shù)方面講解大數(shù)據(jù),然后講解分布式技術(shù)和分布式集群的概念,最后重點(diǎn)講解Hadoop生態(tài)系統(tǒng)的組成以及Spark對于Hadoop在各方面的改進(jìn)。全套可編輯PPT課件本章要點(diǎn)

了解大數(shù)據(jù)的基本概念,重點(diǎn)圍繞大數(shù)據(jù)核心技術(shù)的相關(guān)知識熟悉分布式的技術(shù)基礎(chǔ),理解大數(shù)據(jù)集群平臺架構(gòu)了解大數(shù)據(jù)技術(shù)生態(tài)圈的組成,重點(diǎn)掌握Hadoop生態(tài)系統(tǒng)的組成及各組件的作用掌握Hadoop和Spark的不同之處。1.1大數(shù)據(jù)的基本概念為讓讀者了解真正的大數(shù)據(jù),本節(jié)將從大數(shù)據(jù)的產(chǎn)生階段、大數(shù)據(jù)的特征、各個領(lǐng)域的實(shí)際應(yīng)用以及大數(shù)據(jù)核心技術(shù)和具體的計算模式四方面進(jìn)行介紹。1.1.1大數(shù)據(jù)的產(chǎn)生階段大數(shù)據(jù)的產(chǎn)生大致經(jīng)歷了三個過程:運(yùn)營式系統(tǒng)階段:數(shù)據(jù)往往伴隨著一定的運(yùn)營活動而產(chǎn)生,并被記錄在數(shù)據(jù)庫中,數(shù)據(jù)的產(chǎn)生方式是被動的用戶原創(chuàng)內(nèi)容階段:智能手機(jī)等移動設(shè)備加速內(nèi)容產(chǎn)生,數(shù)據(jù)的產(chǎn)生方式是主動的感知式系統(tǒng)階段:感知式系統(tǒng)的廣泛使用推動著數(shù)據(jù)的產(chǎn)生,人類社會數(shù)據(jù)量第三次大的飛躍最終導(dǎo)致了大數(shù)據(jù)的產(chǎn)生,數(shù)據(jù)的產(chǎn)生方式是自動的1.1.2何謂大數(shù)據(jù)根據(jù)互聯(lián)網(wǎng)數(shù)據(jù)中心(IDC)做出的估測,數(shù)據(jù)一直在以每年50%的速度增長,也就是說每兩年就增長一倍(大數(shù)據(jù)新摩爾定律)。人類在最近兩年產(chǎn)生的數(shù)據(jù)量相當(dāng)于之前產(chǎn)生的全部數(shù)據(jù)量。而大數(shù)據(jù)不僅僅是指數(shù)據(jù)量大,而是包含快速、多樣、價值化等多重屬性。通常,人們將大數(shù)據(jù)時代的特點(diǎn)用5V來概括大數(shù)據(jù)的5vVolume,數(shù)據(jù)量大。從之前的TB級別,現(xiàn)如今已經(jīng)躍升到PB級別;Velocity,處理速度快。從數(shù)據(jù)的生成到消耗,時間窗口非常小,可用于生成決策的時間非常少,因此對速度的要求很高;Variety,數(shù)據(jù)類型繁多。大數(shù)據(jù)是由結(jié)構(gòu)化數(shù)據(jù)和非結(jié)構(gòu)化數(shù)據(jù)組成的,其中非結(jié)構(gòu)化數(shù)據(jù)占比約90%,與人類社會信息密切相關(guān);Value,價值密度低,這也是大數(shù)據(jù)的核心特征?,F(xiàn)實(shí)世界所產(chǎn)生的大量數(shù)據(jù)中,有價值的數(shù)據(jù)所占比例很小。例如,在不間斷的監(jiān)控過程中,可能有用的信息只有一兩秒,但具有很高的價值;Veracity,準(zhǔn)確性和可靠性高。例如,通過對用戶進(jìn)行身份驗證,可以解決某些數(shù)據(jù)的真實(shí)性問題。1.1.3大數(shù)據(jù)在各個領(lǐng)域的應(yīng)用大數(shù)據(jù)決策逐漸成為人類社會一種新的決策方式,大數(shù)據(jù)的應(yīng)用也滲透進(jìn)各行各業(yè),大力推動了新科技的露面;此外,大數(shù)據(jù)的興起也催生了一個新的熱門職業(yè)——數(shù)據(jù)科學(xué)家。大數(shù)據(jù)的主要價值在于對海量數(shù)據(jù)的分析,因而大數(shù)據(jù)廣泛應(yīng)用于人類社會的各行各業(yè),如金融、零售、餐飲、醫(yī)療、娛樂等領(lǐng)域。金融行業(yè),大數(shù)據(jù)在高頻交易、社交情緒分析和信貸風(fēng)險分析三大金融創(chuàng)新領(lǐng)域發(fā)揮重大作用;餐飲行業(yè),利用大數(shù)據(jù)實(shí)現(xiàn)餐飲O2O模式,徹底改變傳統(tǒng)餐飲經(jīng)營方式;生物醫(yī)學(xué)行業(yè),大數(shù)據(jù)有助于實(shí)現(xiàn)流行病預(yù)測、智慧醫(yī)療、健康管理,同時還可以幫助專家解讀DNA,了解更多的生命奧秘;體育娛樂行業(yè),大數(shù)據(jù)可以幫助人們訓(xùn)練球隊,決定投拍哪種題財?shù)挠耙曌髌罚约邦A(yù)測比賽結(jié)果;除此之外,大數(shù)據(jù)還可以應(yīng)用于個人生活,分析個人生活行為習(xí)慣,為其提供更加周到的個性化服務(wù)。1.1.4大數(shù)據(jù)的核心技術(shù)和計算模式大數(shù)據(jù)有兩大核心技術(shù),一是分布式存儲,二是分布式處理。分布式存儲的代表產(chǎn)品有HDFS、HBase、NoSQL、NewSQL等,分布式處理的代表產(chǎn)品有MapReduce。大數(shù)據(jù)的計算模式主要分為批處理計算、流計算、圖計算和查詢分析計算四種。其中,批處理計算主要針對大規(guī)模數(shù)據(jù)的批量處理,代表產(chǎn)品有MapReduce、Spark等;流計算主要應(yīng)用于流數(shù)據(jù)的實(shí)時計算,代表產(chǎn)品有Storm、Flume、DStream等;圖計算主要針對大規(guī)模圖結(jié)構(gòu)數(shù)據(jù),代表產(chǎn)品有Graphx、Pregel、Giraph等;查詢分析計算針對的是大規(guī)模數(shù)據(jù)的存儲管理和查詢分析,代表產(chǎn)品有Hive、Dremel、Cassandra等。1.2.1大數(shù)據(jù)的應(yīng)用場景大數(shù)據(jù)決策逐漸成為人類社會一種新的決策方式,大數(shù)據(jù)的應(yīng)用也滲透進(jìn)各行各業(yè),大力推動了新科技的露面;此外,大數(shù)據(jù)的興起也催生了一個新的熱門職業(yè)——數(shù)據(jù)科學(xué)家。大數(shù)據(jù)的主要價值在于對海量數(shù)據(jù)的分析,因而大數(shù)據(jù)廣泛應(yīng)用于人類社會的各行各業(yè),如金融、零售、餐飲、醫(yī)療、娛樂等領(lǐng)域。金融行業(yè),大數(shù)據(jù)在高頻交易、社交情緒分析和信貸風(fēng)險分析三大金融創(chuàng)新領(lǐng)域發(fā)揮重大作用;餐飲行業(yè),利用大數(shù)據(jù)實(shí)現(xiàn)餐飲O2O模式,徹底改變傳統(tǒng)餐飲經(jīng)營方式;生物醫(yī)學(xué)行業(yè),大數(shù)據(jù)有助于實(shí)現(xiàn)流行病預(yù)測、智慧醫(yī)療、健康管理,同時還可以幫助專家解讀DNA,了解更多的生命奧秘;體育娛樂行業(yè),大數(shù)據(jù)可以幫助人們訓(xùn)練球隊,決定投拍哪種題材的影視作品,以及預(yù)測比賽結(jié)果;除此之外,大數(shù)據(jù)還可以應(yīng)用于個人生活,分析個人生活行為習(xí)慣,為其提供更加周到的個性化服務(wù)。1.2.2大數(shù)據(jù)系統(tǒng)的作用大數(shù)據(jù)系統(tǒng)以處理海量數(shù)據(jù)存儲、計算及不間斷流數(shù)據(jù)實(shí)時計算等場景為主,能夠為大數(shù)據(jù)技術(shù)研發(fā)和應(yīng)用項目實(shí)施提供高效完備的開發(fā)與運(yùn)行環(huán)境,為業(yè)務(wù)提供數(shù)據(jù)洞察力,以解決各行各業(yè)對于大數(shù)據(jù)分析、處理的問題。大數(shù)據(jù)系統(tǒng)主要包括Hadoop系列、Spark、Storm以及Flume/Kafka等,可以部署在私有云或公有云上。大數(shù)據(jù)系統(tǒng)具有以下功能:(1)海量數(shù)據(jù)存儲(2)處理速度快(3)離線分析和在線分析(4)為數(shù)據(jù)科學(xué)家提供支持(5)提供數(shù)據(jù)分析和可視化功能1.3.1分布式技術(shù)概述1.分布式系統(tǒng)互聯(lián)網(wǎng)應(yīng)用的特點(diǎn)是:高并發(fā),海量數(shù)據(jù)。互聯(lián)網(wǎng)應(yīng)用的用戶數(shù)無上限,這也是其和傳統(tǒng)應(yīng)用的本質(zhì)區(qū)別。高并發(fā)指系統(tǒng)單位時間內(nèi)收到的請求數(shù)量(取決于使用的用戶數(shù)),沒有上限。海量數(shù)據(jù)包括:海量數(shù)據(jù)的存儲和海量數(shù)據(jù)的處理。這兩個工程難題都可以使用分布式系統(tǒng)來解決。簡單理解,分布式系統(tǒng)就是由多個通過網(wǎng)絡(luò)互聯(lián)的計算機(jī)組成的軟硬件系統(tǒng),它們協(xié)同工作以完成一個共同目標(biāo)。而協(xié)同工作則需要解決兩個問題:任務(wù)分解和節(jié)點(diǎn)通信。任務(wù)分解,即把一個問題拆解成若干個獨(dú)立任務(wù),每個任務(wù)在一臺節(jié)點(diǎn)上運(yùn)行,實(shí)現(xiàn)多任務(wù)的并發(fā)執(zhí)行;節(jié)點(diǎn)通信,即節(jié)點(diǎn)之間互相通信,需要設(shè)計特定的通信協(xié)議來實(shí)現(xiàn)。協(xié)議可以采用RPC或MessageQueue等方式。1.3.1分布式技術(shù)概述2.分布式計算分布式計算,又稱分布式并行計算,其主要是指將復(fù)雜任務(wù)分解成子任務(wù)、同時執(zhí)行單獨(dú)子任務(wù)的方法。分布式計算可以在短時間內(nèi)處理大量的數(shù)據(jù),完成更復(fù)雜的計算任務(wù),比傳統(tǒng)計算更加高效、快捷??傊?,分布式本質(zhì)上就是將一個業(yè)務(wù)分拆多個子業(yè)務(wù),部署在不同的服務(wù)器上。1.3.2分布式大數(shù)據(jù)集群概述圖1-1表示在個人計算機(jī)上安裝VMWare進(jìn)而搭建三臺服務(wù)器構(gòu)成分布式大數(shù)據(jù)集群的硬件架構(gòu)及IP地址規(guī)劃圖1-1集群虛擬機(jī)架構(gòu)圖1.3.2分布式大數(shù)據(jù)集群概述圖1-1表示在個人計算機(jī)上安裝VMWare進(jìn)而搭建三臺服務(wù)器構(gòu)成分布式大數(shù)據(jù)集群的硬件架構(gòu)及IP地址規(guī)劃圖1-1集群虛擬機(jī)架構(gòu)圖1.3.2分布式大數(shù)據(jù)集群概述圖1-2表示了在個人計算機(jī)上安裝VMWare搭建單臺服務(wù)器構(gòu)成偽分布大數(shù)據(jù)集群的硬件架構(gòu)及IP地址規(guī)劃。圖1-2單節(jié)點(diǎn)虛擬機(jī)架構(gòu)圖1.3.2分布式大數(shù)據(jù)集群概述按照如上方式將集群搭建完成后,總共會出現(xiàn)四個虛擬機(jī),其中偽分布集群有一臺虛擬機(jī),虛擬機(jī)名稱為single_node;分布式集群有三臺虛擬機(jī),名稱分別為master、slave1、slave2。各虛擬機(jī)的IP配置及安裝軟件(含軟件運(yùn)行的模塊)如表1-1所示。

Single_nodeMasterSlave1Slave2IP192.168.***.10192.168.***.11192.168.***.12192.168.***.13HadoopNNDNNMRMSNNNNSNNRMDNNMDNNMSparkMasterWorkerMasterWorkerWorkerHiveHiveHive//ZooKeeperQuorumPeerMainQuorumPeerMainQuorumPeerMainQuorumPeerMainHBaseHMasterHMasterHRegionServerHRegionServerSqoopSqoopSqoop//表1-1各虛擬機(jī)配置表1.3.2分布式大數(shù)據(jù)集群概述以下為對上表中部分名詞的注解:1) hostname:各節(jié)點(diǎn)主機(jī)名稱。2) IP:各節(jié)點(diǎn)IP地址。3) NN:NameNode,元數(shù)據(jù)節(jié)點(diǎn),一般在Master上(NameNode是整個文件系統(tǒng)的管理節(jié)點(diǎn)。它維護(hù)著整個文件系統(tǒng)的文件目錄樹、文件/目錄的元信息和每個文件對應(yīng)的數(shù)據(jù)塊列表,負(fù)責(zé)接收用戶的操作請求。4) DN:DataNode,數(shù)據(jù)節(jié)點(diǎn),一般在Slave上(DataNode提供真實(shí)文件數(shù)據(jù)的存儲服務(wù)。5) NM:NodeManager(NodeManager是運(yùn)行在單個節(jié)點(diǎn)上的代理,它管理著Hadoop集群中的單個計算節(jié)點(diǎn),功能包括與ResourceManager保持通信,管理Container的生命周期、監(jiān)控每個Container的資源使用(內(nèi)存、CPU等)情況、追蹤節(jié)點(diǎn)健康狀況、管理日志和不同應(yīng)用程序用到的附屬服務(wù)等。1.3.2分布式大數(shù)據(jù)集群概述6) RM:ResourceManager(ResourceManager基于應(yīng)用程序?qū)Y源的需求進(jìn)行調(diào)度;每個應(yīng)用程序需要不同類型的資源,因此就需要不同的容器。ResourceManager是一個中心的服務(wù),主要負(fù)責(zé)調(diào)度、啟動每個Job所屬的ApplicationMaster,另外監(jiān)控ApplicationMaster的存在情況。NodeManager是每一臺機(jī)器框架的代理,是執(zhí)行應(yīng)用程序的容器,監(jiān)控應(yīng)用程序的資源使用情況(CPU,內(nèi)存,硬盤,網(wǎng)絡(luò))并且向調(diào)度器(ResourceManager)匯報。ApplicationMaster的職責(zé)有:向調(diào)度器索要適當(dāng)?shù)馁Y源容器,運(yùn)行任務(wù),跟蹤應(yīng)用程序的狀態(tài)和監(jiān)控它們的進(jìn)程,處理任務(wù)的失敗原因。1.3.2分布式大數(shù)據(jù)集群概述7) SNN:SecondaryNameNode,從元數(shù)據(jù)節(jié)點(diǎn),(NameNode主要是用來保存HDFS的元數(shù)據(jù)信息,比如命名空間信息,塊信息等。當(dāng)它運(yùn)行時,這些信息會存于內(nèi)存中,也可以持久化到磁盤上。只有當(dāng)NameNode重啟時,editlogs才會合并到fsimage文件中,從而得到一個文件系統(tǒng)的最新快照。但是在產(chǎn)品集群中,NameNode很少重啟,這也意味著當(dāng)NameNode運(yùn)行很長時間后,editlogs文件會變得很大。在這種情況下就會出現(xiàn)下面一些問題:①editlogs文件會變的很大,怎么去管理這個文件是一個挑戰(zhàn);②NameNode的重啟會花費(fèi)很長時間,因為有很多改動[筆者注:在editlogs中]要合并到fsimage文件中;③如果NameNode掛掉,將會丟失很多改動,因為此時的fsimage文件非常舊。SecondaryNameNode就是來幫助解決上述問題的,它的職責(zé)是合并NameNode的editlogs到fsimage文件中。8) /:表示不安裝。1.3.2分布式大數(shù)據(jù)集群概述分布式集群主機(jī)架構(gòu)如圖1-3所示。圖1-3分布式集群主機(jī)架構(gòu)圖1.3.2分布式大數(shù)據(jù)集群概述服務(wù)器相關(guān)術(shù)語如下:1) 節(jié)點(diǎn):代指服務(wù)器節(jié)點(diǎn),后面會經(jīng)常提到節(jié)點(diǎn),分布式環(huán)境中一個服務(wù)器就是一個節(jié)點(diǎn),在所搭建的集群中,服務(wù)器指的是通過VMware軟件虛擬出來的虛擬機(jī)。2) 操作系統(tǒng):服務(wù)器上運(yùn)行的操作系統(tǒng)基本上都是Linux操作系統(tǒng),當(dāng)然,虛擬機(jī)中安裝的也是Linux系統(tǒng)。3) 網(wǎng)絡(luò):集群中的多個節(jié)點(diǎn)之間協(xié)同工作需要不斷交換數(shù)據(jù)及狀態(tài)、命令等信息,因此需要互通的網(wǎng)絡(luò)環(huán)境。我們搭建的集群是通過虛擬機(jī)軟件虛擬出來的,網(wǎng)絡(luò)也是由虛擬機(jī)軟件虛擬出的虛擬網(wǎng)卡來實(shí)現(xiàn)數(shù)據(jù)交換。集群中要部署的組件主要有Hadoop、Spark、Hive、HBase、ZooKeeper等。1.4大數(shù)據(jù)技術(shù)生態(tài)圈本節(jié)首先介紹Linux操作系統(tǒng)的概念及不同版本的信息,為讀者提供了選擇版本的建議,然后介紹Hadoop生態(tài)系統(tǒng)的特點(diǎn)及組成,對各組件進(jìn)行了具體的介紹,最后介紹了Spark區(qū)別于Hadoop的特點(diǎn)。1.4.1Linux操作系統(tǒng)Linux內(nèi)核最初只是由芬蘭人林納斯·托瓦茲(LinusTorvalds)在赫爾辛基大學(xué)上學(xué)時出于個人愛好而編寫的。Linux是一套免費(fèi)使用和自由傳播的類Unix操作系統(tǒng),是一個基于POSIX和UNIX的多用戶、多任務(wù)、支持多線程和多CPU的操作系統(tǒng)。Linux上能運(yùn)行主要的UNIX工具軟件、應(yīng)用程序和網(wǎng)絡(luò)協(xié)議。它支持32位和64位硬件。Linux繼承了Unix以網(wǎng)絡(luò)為核心的設(shè)計思想,是一個性能穩(wěn)定的多用戶網(wǎng)絡(luò)操作系統(tǒng)。目前市面上較知名的發(fā)行版有:Ubuntu、CentOS、Debain、Fedora、SuSE、OpenSUSE。Linux和Windows操作系統(tǒng)的區(qū)別比較WindowsLinux免費(fèi)與收費(fèi)收費(fèi)且很貴免費(fèi)或少許費(fèi)用軟件與支持?jǐn)?shù)量和質(zhì)量的優(yōu)勢,不過大部分為收費(fèi)軟件;由微軟官方提供支持和服務(wù)開源自由軟件,用戶可以修改、定制和再發(fā)布,由于基本免費(fèi),沒有資金支持,部分軟件質(zhì)量和體驗欠缺;由全球所有的Linux開發(fā)者和自由軟件社區(qū)提供支持安全性三天兩頭打補(bǔ)丁,安裝系統(tǒng)安全更新,還是會中病毒木馬Linux比Windows平臺相對安全一些使用習(xí)慣普通用戶基本都是純圖形界面下操作使用,依靠鼠標(biāo)和鍵盤完成一切操作,用戶上手容易,入門簡單兼具圖形界面操作和完全的命令行操作,可以只用鍵盤完成一切操作,新手入門較困難,需要一些學(xué)習(xí)和指導(dǎo),一旦熟練之后,效率極高可定制性封閉的,系統(tǒng)可定制性很差開源,可定制化非常強(qiáng)應(yīng)用場景桌面操作系統(tǒng)主要使用的是Windows支撐百度、谷歌、淘寶等應(yīng)用軟件和服務(wù),是后臺成千上萬的Linux服務(wù)器主機(jī)。世界上大部分軟件和服務(wù)都是運(yùn)行在Linux之上的Linux版本介紹(1)FedoraFedora是一個開放的、創(chuàng)新的、前瞻性的操作系統(tǒng)和平臺,基于Linux。它允許任何人自由地使用、修改和重發(fā)布,無論現(xiàn)在還是將來。它由一個強(qiáng)大的社群開發(fā),這個社群的成員以自己的不懈努力,提供并維護(hù)自由、開放源碼的軟件和開放的標(biāo)準(zhǔn)。Fedora項目由Fedora基金會管理和控制,得到了RedHat,Inc.的支持。Fedora是一個獨(dú)立的操作系統(tǒng),是Linux的一個發(fā)行版,可運(yùn)行的體系結(jié)構(gòu)包括x86(即i386-i686),x86_64和PowerPC。Fedora和Redhat這兩個Linux的發(fā)行版聯(lián)系很密切??梢哉fFedoraCore的前身就是RedHatLinux。2003年9月,紅帽公司(RedHat)突然宣布不再推出個人使用的發(fā)行套件而專心發(fā)展商業(yè)版本(RedHatEnterpriseLinux)的桌面套件,但是紅帽公司也同時宣布將原有的RedHatLinux開發(fā)計劃和Fedora計劃整合成一個新的FedoraProject。FedoraProject將會由紅帽公司贊助,以RedHatLinux9為范本加以改進(jìn),原本的開發(fā)團(tuán)隊將會繼續(xù)參與Fedora的開發(fā)計劃,同時也鼓勵開放原始碼社群參與開發(fā)工作。Fedora可以說是Redhat桌面版本的延續(xù),只不過是與開源社區(qū)合作。Linux版本介紹(2)DebianDebian,或者稱Debian系列,包括Debian和Ubuntu等。Debian是社區(qū)類Linux的典范,是迄今為止最遵循GNU規(guī)范的Linux系統(tǒng)。Debian最早由IanMurdock于1993年創(chuàng)建,分為三個版本分支(branch):stable,testing和unstable。其中,unstable為最新的測試版本,其中包括最新的軟件包,但是也有相對較多的bug,適合桌面用戶。testing的版本都經(jīng)過unstable中的測試,相對較為穩(wěn)定,也支持了不少新技術(shù)(比如SMP等)。而stable一般只用于服務(wù)器,上面的軟件包大部分都比較過時,但是穩(wěn)定性和安全性都非常高。Debian最具特色的是apt-get/dpkg包管理方式,其實(shí)Redhat的YUM也是在模仿Debian的APT方式,但在二進(jìn)制文件發(fā)行方式中,APT應(yīng)該是最好的。Debian的資料也很豐富,有很多支持的社區(qū),有問題求教也有地方可去。Linux版本介紹(3)UbuntuUbuntu,目前使用最多的是Linux,簡單方便,有KDE和GNOME等視窗界面可供選擇,擁有強(qiáng)大的apt-get軟件管理程序,安裝管理軟件很方便,推薦新手使用。Ubuntu嚴(yán)格來說不能算一個獨(dú)立的發(fā)行版本,Ubuntu是基于Debian的unstable版本加強(qiáng)而來,可以說,Ubuntu就是一個擁有Debian所有的優(yōu)點(diǎn),以及自己所加強(qiáng)的優(yōu)點(diǎn)的近乎完美的Linux桌面系統(tǒng)。根據(jù)選擇的桌面系統(tǒng)不同,有三個版本可供選擇:基于Gnome的Ubuntu,基于KDE的Kubuntu以及基于Xfc的Xubuntu。特點(diǎn)是界面非常友好,容易上手,對硬件的支持非常全面,是最適合做桌面系統(tǒng)的Linux發(fā)行版本。Linux版本介紹(4)GentooGentoo,偉大的Gentoo是Linux世界最年輕的發(fā)行版本,正因為年輕,所以能吸取在它之前的所有發(fā)行版本的優(yōu)點(diǎn),這也是Gentoo被稱為最完美的Linux發(fā)行版本的原因之一。Gentoo最初由DanielRobbins(FreeBSD的開發(fā)者之一)創(chuàng)建,首個穩(wěn)定版本發(fā)布于2002年。由于開發(fā)者對FreeBSD的熟識,Gentoo擁有著媲美FreeBSD的廣受美譽(yù)的ports系統(tǒng)——Portage包管理系統(tǒng)。不同于APT和YUM等二進(jìn)制文件分發(fā)的包管理系統(tǒng),Portage是基于源代碼分發(fā)的,必須編譯后才能運(yùn)行,對于大型軟件而言比較慢,不過正因為所有軟件都是在本地機(jī)器編譯的,在經(jīng)過各種定制的編譯參數(shù)優(yōu)化后,能將機(jī)器的硬件性能發(fā)揮到極致。Gentoo是所有Linux發(fā)行版本里安裝最復(fù)雜的,但又是安裝完成后最便于管理的版本,也是在相同硬件環(huán)境下運(yùn)行最快的版本。Linux版本介紹(5) FreeBSDFreeBSD,需要強(qiáng)調(diào)的是:FreeBSD并不是一個Linux系統(tǒng)。但由于FreeBSD與Linux的用戶群有相當(dāng)一部分是重合的,二者支持的硬件環(huán)境比較一致,所采用的軟件也比較類似,故可以將FreeBSD視為一個Linux版本來比較。FreeBSD擁有兩個分支:stable和current,顧名思義,stable是穩(wěn)定版,而current則是添加了新技術(shù)的測試版。FreeBSD采用Ports包管理系統(tǒng),與Gentoo類似,基于源代碼分發(fā),必須在本地機(jī)器編后后才能運(yùn)行,但是Ports系統(tǒng)沒有Portage系統(tǒng)使用簡便,使用起來稍微復(fù)雜一些。FreeBSD的最大特點(diǎn)就是穩(wěn)定和高效,是作為服務(wù)器操作系統(tǒng)的最佳選擇,但對硬件的支持沒有Linux完備,所以并不適合作為桌面系統(tǒng)。Linux版本介紹(6) OpenSUSEOpenSUSE,在歐洲非常流行的一個Linux,由Novell公司發(fā)放,號稱是世界上最華麗的操作系統(tǒng),獨(dú)家開發(fā)的軟件管理程序zypper||yast得到了許多用戶的贊美,和ubuntu一樣,支持kde和gnome、xface等桌面,桌面特效比較豐富,缺點(diǎn)是KDE雖然華麗多彩,但比較不穩(wěn)定,新手用這個也很容易上手。Linux版本選擇建議(僅供參考)如果你只是需要一個桌面系統(tǒng),而且既不想使用盜版,又不想花大量的錢購買商業(yè)軟件,那么你就需要一款適合桌面使用的Linux發(fā)行版本;如果你不想定制任何東西,不想在系統(tǒng)上浪費(fèi)太多時間,那么很簡單,你就根據(jù)自己的愛好在ubuntu、kubuntu以及xubuntu中選一款吧,三者的區(qū)別僅僅是桌面程序的不同。如果你需要一個桌面系統(tǒng),而且還想非常靈活地定制自己的Linux系統(tǒng),想讓自己的機(jī)器跑得更歡,不介意在Linux系統(tǒng)安裝方面浪費(fèi)一點(diǎn)時間,那么你的唯一選擇就是Gentoo,盡情享受Gentoo帶來的自由快感吧!Linux版本選擇建議(僅供參考)如果你需要的是一個堅如磐石的非常穩(wěn)定的服務(wù)器系統(tǒng),那么你的唯一選擇就是FreeBSD。如果你需要一個穩(wěn)定的服務(wù)器系統(tǒng),并且想深入摸索一下Linux各個方面的知識,想要獨(dú)家定制許多內(nèi)容,那么我推薦你使用Gentoo。如果你需要的是一個服務(wù)器系統(tǒng),而且你已經(jīng)非常厭煩各種Linux的配置,只是想要一個比較穩(wěn)定的服務(wù)器系統(tǒng),那么你最好的選擇就是CentOS了,安裝完成后,經(jīng)過簡單的配置就能提供非常穩(wěn)定的服務(wù)。本書選擇使用CentOS系統(tǒng)進(jìn)行講解。Linux版本選擇建議(僅供參考)如果你只是需要一個桌面系統(tǒng),而且既不想使用盜版,又不想花大量的錢購買商業(yè)軟件,那么你就需要一款適合桌面使用的Linux發(fā)行版本;如果你不想定制任何東西,不想在系統(tǒng)上浪費(fèi)太多時間,那么很簡單,你就根據(jù)自己的愛好在ubuntu、kubuntu以及xubuntu中選一款吧,三者的區(qū)別僅僅是桌面程序的不同。1.4.2Hadoop生態(tài)系統(tǒng)Hadoop是一個由Apache基金會所開發(fā)的分布式系統(tǒng)基礎(chǔ)架構(gòu)。用戶可以在不了解分布式底層細(xì)節(jié)的情況下,開發(fā)分布式程序,充分利用集群的威力進(jìn)行高速運(yùn)算和存儲。Hadoop實(shí)現(xiàn)了一個分布式文件系統(tǒng)(DistributedFileSystem),其中一個組件是HDFS。HDFS有高容錯的特點(diǎn),并且用來部署在低廉的(low-cost)硬件上;它提供高吞吐量(highthroughput)來訪問應(yīng)用程序的數(shù)據(jù),適合有著超大數(shù)據(jù)集(largedataset)的應(yīng)用程序;HDFS放寬了對POSIX的要求,允許以流的形式訪問(streamingaccess)文件系統(tǒng)中的數(shù)據(jù)。1.4.2Hadoop生態(tài)系統(tǒng)Hadoop框架最核心的設(shè)計是:HDFS和MapReduce。HDFS為海量的數(shù)據(jù)提供了存儲,而MapReduce則為海量的數(shù)據(jù)提供了計算。所以,關(guān)鍵點(diǎn)有以下三個:1)Hadoop是一個由Apache基金會所開發(fā)的分布式系統(tǒng)基礎(chǔ)架構(gòu)。2)主要解決海量數(shù)據(jù)的存儲和海量數(shù)據(jù)的分析計算問題。3)廣義上來說,Hadoop通常是指一個更廣泛的概念——Hadoop生態(tài)圈。1.4.2Hadoop生態(tài)系統(tǒng)經(jīng)過多年的發(fā)展,Hadoop生態(tài)系統(tǒng)不斷完善,目前已包括多個子項目,除了核心的HDFS和MapReduce以外,還包括ZooKeeper、HBase、Hive、Pig、Mahout、Sqoop、Flume、YARN、Oozie、Storm、Kafka、Ambari等功能組件,同時,在面向在線業(yè)務(wù)時也常加入Spark組件。具體的組件組成如圖1-4所示。圖1-4Hadoop生態(tài)系統(tǒng)圖HDFSHadoop分布式文件系統(tǒng)是Hadoop項目的兩大核心之一,是針對谷歌文件系統(tǒng)(GoogleFileSystem,GFS)的開源實(shí)現(xiàn)。HDFS具有處理超大數(shù)據(jù)、流式處理、可以運(yùn)行在廉價商用服務(wù)器上等優(yōu)點(diǎn)。HDFS在設(shè)計之初就是要運(yùn)行在廉價的大型服務(wù)器集群上,因此在設(shè)計上就把硬件故障作為一種常態(tài)來考慮,可以在部分硬件發(fā)生故障的情況下仍然能夠保證文件系統(tǒng)的整體可用性和可靠性。HDFS放寬了一部分POSIX約束,從而實(shí)現(xiàn)以流的形式訪問文件系統(tǒng)中的數(shù)據(jù)。HDFS在訪問應(yīng)用程序數(shù)據(jù)時,可以具有很高的吞吐率,因此對于超大數(shù)據(jù)集的應(yīng)用程序而言,選擇HDFS作為底層數(shù)據(jù)存儲是較好的選擇。HDFSHadoop分布式文件系統(tǒng)是Hadoop項目的兩大核心之一,是針對谷歌文件系統(tǒng)(GoogleFileSystem,GFS)的開源實(shí)現(xiàn)。HDFS具有處理超大數(shù)據(jù)、流式處理、可以運(yùn)行在廉價商用服務(wù)器上等優(yōu)點(diǎn)。HDFS在設(shè)計之初就是要運(yùn)行在廉價的大型服務(wù)器集群上,因此在設(shè)計上就把硬件故障作為一種常態(tài)來考慮,可以在部分硬件發(fā)生故障的情況下仍然能夠保證文件系統(tǒng)的整體可用性和可靠性。HDFS放寬了一部分POSIX約束,從而實(shí)現(xiàn)以流的形式訪問文件系統(tǒng)中的數(shù)據(jù)。HDFS在訪問應(yīng)用程序數(shù)據(jù)時,可以具有很高的吞吐率,因此對于超大數(shù)據(jù)集的應(yīng)用程序而言,選擇HDFS作為底層數(shù)據(jù)存儲是較好的選擇。HBase相當(dāng)于關(guān)系型數(shù)據(jù)庫,數(shù)據(jù)放在文件中,而文件放在HDFS中。因此,HBase是基于HDFS的關(guān)系型數(shù)據(jù)庫。實(shí)時性:延遲非常低,實(shí)時性高。是較好的選擇。MapReduceHadoopMapReduce是針對谷歌MapReduce的開源實(shí)現(xiàn)。MapReduce是一種編程模型,用于大規(guī)模數(shù)據(jù)集(大于1TB)的并行運(yùn)算,它將復(fù)雜的、運(yùn)行于大規(guī)模集群上的并行計算過程高度抽象到了兩個函數(shù)——Map和Reduce上,并且允許用戶在不了解分布式系統(tǒng)底層細(xì)節(jié)的情況下開發(fā)并行應(yīng)用程序,并將其運(yùn)行于廉價的計算機(jī)集群上,從而完成海量數(shù)據(jù)的處理。通俗地說,MapReduce的核心思想就是“分而治之”。Hive分類管理文件和數(shù)據(jù),對這些數(shù)據(jù)可以通過很友好的接口,提供類似于SQL語言的HiveQL查詢語言來幫助分析。實(shí)質(zhì)上,Hive底層會經(jīng)歷一個轉(zhuǎn)換的過程。HiveQL執(zhí)行的時候,Hive會提供一個引擎,先將其轉(zhuǎn)換成MapReduce再去執(zhí)行。Hive設(shè)計目的:方便DBA很快地轉(zhuǎn)到大數(shù)據(jù)的挖掘和分析中去。PigPig是一種數(shù)據(jù)流語言和運(yùn)行環(huán)境,適合使用Hadoop和MapReduce平臺來查詢大型半結(jié)構(gòu)化數(shù)據(jù)集。雖然MapReduce應(yīng)用程序的編寫不是十分復(fù)雜,但也是需要一定開發(fā)經(jīng)驗的。Pig的出現(xiàn)大大簡化了Hadoop常見的工作任務(wù),它在MapReduce的基礎(chǔ)上創(chuàng)建了更簡單的過程語言抽象,為Hadoop應(yīng)用程序提供了一種更加接近結(jié)構(gòu)化査詢語言的接口。MahoutMahout是Apache軟件基金會旗下的一個開源項目,提供一些可擴(kuò)展的機(jī)器學(xué)習(xí)領(lǐng)域經(jīng)典算法的實(shí)現(xiàn),旨在幫助開發(fā)人員更加方便快捷地創(chuàng)建智能應(yīng)用程序:Mahout包含許多實(shí)現(xiàn),包括聚類、分類、推薦過濾、頻繁子項挖掘。此外,通過使用ApacheHadoop庫,Mahout可以有效地擴(kuò)展到云中。ZooKeeperZooKeeper是針對谷歌Chubby的一個開源實(shí)現(xiàn),是高效和可靠的協(xié)同工作系統(tǒng),提供分布式鎖之類的基本服務(wù),用于構(gòu)建分布式應(yīng)用,減輕分布式應(yīng)用程序所承擔(dān)的協(xié)調(diào)任務(wù)。FlumeFlume是Cloudera提供的一個高可用的、高可靠的、分布式的海量日志采集、聚合和傳輸?shù)南到y(tǒng)。Flume支持在日志系統(tǒng)中定制各類數(shù)據(jù)發(fā)送方,用于數(shù)據(jù)收集;同時,F(xiàn)lume提供對數(shù)據(jù)進(jìn)行簡單處理并寫到各種數(shù)據(jù)接受方的能力。SqoopSqoop是SQLtoHadoop的縮寫,主要用來在Hadoop和關(guān)系數(shù)據(jù)庫之間交換數(shù)據(jù)的互操作性。通過Sqoop可以方便地將數(shù)據(jù)從MySQL、Oracle、PostgreSQL等關(guān)系數(shù)據(jù)庫中導(dǎo)入Hadoop(可以導(dǎo)入HDFS、HBase或Hive),或者將數(shù)據(jù)從Hadoop導(dǎo)出到關(guān)系數(shù)據(jù)庫,使得傳統(tǒng)關(guān)系數(shù)據(jù)庫和Hadoop之間的數(shù)據(jù)遷移變得非常方便。Sqoop主要通過JDBC(JavaDataBaseConnectivity)關(guān)系數(shù)據(jù)庫進(jìn)行交互,理論上,支持JDBC的關(guān)系數(shù)據(jù)庫都可以使Sqoop和Hadoop進(jìn)行數(shù)據(jù)交互。Sqoop是專門為大數(shù)據(jù)集設(shè)計的,支持增量更新,可以將新記錄添加到最近一次導(dǎo)出的數(shù)據(jù)源上,或者指定上次修改的時間戳。AmbariApacheAmbari是一種基于Web的工具,支持ApacheHadoop集群的安裝、部署、配置和管理。Ambari目前已支持大多數(shù)Hadoop組件,包括HDFS、MapReduce、Hive、Pig、HBase、ZooKeeper、Sqoop等。YARNYARN是集群資源管理系統(tǒng),對整個集群每臺機(jī)器的資源進(jìn)行管理,對每個服務(wù)、每個job、每個應(yīng)用進(jìn)行調(diào)度。OoizeOozie起源于雅虎,主要用于管理、組織Hadoop工作流。Oozie的工作流必須是一個有向無環(huán)圖,實(shí)際上Oozie就相當(dāng)于Hadoop的一個客戶端,當(dāng)用戶需要執(zhí)行多個關(guān)聯(lián)的MR任務(wù)時,只需將MR執(zhí)行順序?qū)懭雡orkflow.xml,再使用Oozie提交本次任務(wù),Oozie就會托管此任務(wù)流。StormStorm是一個分布式實(shí)時大數(shù)據(jù)處理系統(tǒng)。Storm設(shè)計用于在容錯和水平可擴(kuò)展方法中處理大量數(shù)據(jù)。它是一個流數(shù)據(jù)框架,具有最高的攝取率。KafkaKafka最初由Linkedin公司開發(fā),是一個分布式、支持分區(qū)的、多副本的、多訂閱者、基于ZooKeeper協(xié)調(diào)的分布式日志系統(tǒng)(也可以當(dāng)做MQ系統(tǒng)),常可以用于web/nginx日志、訪問日志、消息服務(wù)等等。Linkedin于2010年將其貢獻(xiàn)給Apache基金會,Kafka也就成為了頂級開源項目。SparkApacheSpark是專為大規(guī)模數(shù)據(jù)處理而設(shè)計的快速通用的計算引擎。Spark是UCBerkeleyAMPlab(加州大學(xué)伯克利分校的AMP實(shí)驗室)所開源的類HadoopMapReduce的通用并行框架,Spark擁有HadoopMapReduce所具有的優(yōu)點(diǎn);但不同于MapReduce的是——Job中間輸出結(jié)果可以保存在內(nèi)存中,從而不再需要讀寫HDFS,因此,Spark能更好地適用于數(shù)據(jù)挖掘與機(jī)器學(xué)習(xí)等需要迭代的MapReduce的算法。Spark是一種與Hadoop相似的開源集群計算環(huán)境,但是兩者之間還存在一些不同之處,這些有用的不同之處使得Spark在某些工作負(fù)載方面表現(xiàn)得更加優(yōu)越,換句話說,Spark啟用了內(nèi)存分布數(shù)據(jù)集,除了能夠提供交互式查詢外,還可以優(yōu)化迭代工作負(fù)載。1.4.3Spark對Hadoop的完善Spark是在MapReduce的基礎(chǔ)之上發(fā)展而來的,繼承了其分布式并行計算的優(yōu)點(diǎn),并且改進(jìn)了MapReduce明顯的缺陷,具體如下:首先,Spark把中間數(shù)據(jù)放到內(nèi)存中,迭代運(yùn)算效率高。MapReduce中計算結(jié)果需要落地,保存到磁盤上,大大增加了迭代計算的時間,這樣勢必會影響整體速度,而Spark支持DAG圖的分布式并行計算的編程框架,減少了迭代過程中數(shù)據(jù)的落地,大大提高迭代式計算的性能,提高了處理效率。1.4.3Spark對Hadoop的完善其次,Spark容錯性高。Spark引進(jìn)了彈性分布式數(shù)據(jù)集RDD(ResilientDistributedDataset)的抽象,它是分布在一組節(jié)點(diǎn)中的只讀對象集合,這些集合是彈性的,如果數(shù)據(jù)集一部分丟失,則可以根據(jù)“血統(tǒng)”(即允許基于數(shù)據(jù)衍生過程)對它們進(jìn)行重建。另外在RDD計算時可以通過CheckPoint來實(shí)現(xiàn)容錯,而CheckPoint有兩種方式:CheckPointData,和LoggingTheUpdates,用戶可以決定采用哪種方式來實(shí)現(xiàn)容錯。1.4.3Spark對Hadoop的完善最后,Spark更加通用。不像Hadoop只提供了Map和Reduce兩種操作,Spark提供的數(shù)據(jù)集操作類型有很多種,大致分為:Transformations和Actions兩大類。Transformations包括Map、Filter、FlatMap、Sample、GroupByKey、ReduceByKey、Union、Join、Cogroup、MapValues、Sort和PartionBy等多種操作類型,Actions包括Count、Collect、Reduce、Lookup和Save等操作。另外,各個處理節(jié)點(diǎn)之間的通信模型不再像Hadoop只有Shuffle一種模式,用戶可以命名、物化,控制中間結(jié)果的存儲、分區(qū)等。1.5.1Hadoop3.0的新特性Hadoop3.0中引入了一些重要的功能和優(yōu)化,包括HDFS可擦除編碼、多Namenode支持、MRNativeTask優(yōu)化、YARN基于cgroup的內(nèi)存和磁盤IO隔離、YARNcontainerresizing等。Hadoop3.0在功能和性能方面進(jìn)行了多項重大改進(jìn),主要包括:(1)精簡Hadoop內(nèi)核,包括剔除過期的API和實(shí)現(xiàn),將默認(rèn)組件實(shí)現(xiàn)替換成最高效的實(shí)現(xiàn)。比如將FileOutputCommitter缺省實(shí)現(xiàn)換為v2版本,廢除hftp轉(zhuǎn)由webhdfs替代,移除Hadoop子實(shí)現(xiàn)序列化庫org.apache.hadoop.Records;基于JDK1.8重新發(fā)布一個新的Hadoop版本。(2)Shell腳本重寫。Hadoop3.0對Hadoop的管理腳本進(jìn)行了重構(gòu),修復(fù)了大量bug,增加了參數(shù)沖突檢測,支持動態(tài)命令等。(3)HDFS支持?jǐn)?shù)據(jù)的擦除編碼,這使得HDFS在不降低可靠性的前提下,節(jié)省一半存儲空間。Hadoop3.0之前,HDFS存儲方式為每一份數(shù)據(jù)存儲3份,這也使得存儲利用率僅為1/3,Hadoop3.0引入糾刪碼技術(shù)(EC技術(shù)),實(shí)現(xiàn)1份數(shù)據(jù)+0.5份冗余校驗數(shù)據(jù)存儲方式。糾刪碼(Erasurecoding)技術(shù)簡稱EC,是一種數(shù)據(jù)保護(hù)技術(shù).最早用于通信行業(yè)中數(shù)據(jù)傳輸中的數(shù)據(jù)恢復(fù),是一種編碼容錯技術(shù)。它通過在原始數(shù)據(jù)中加入新的校驗數(shù)據(jù),使得各個部分的數(shù)據(jù)產(chǎn)生關(guān)聯(lián)性。在一定范圍的數(shù)據(jù)出錯情況下,通過糾刪碼技術(shù)都可以進(jìn)行恢復(fù)。EC技術(shù)可以防止數(shù)據(jù)丟失,又可以解決HDFS存儲空間翻倍的問題。創(chuàng)建文件時,將從最近的祖先目錄繼承EC策略,以確定其塊如何存儲。與3路復(fù)制相比,默認(rèn)的EC策略可以節(jié)省50%的存儲空間,同時還可以承受更多的存儲故障。建議EC存儲用于冷數(shù)據(jù),由于冷數(shù)據(jù)確實(shí)數(shù)量大,可以減少副本從而降低存儲空間,另外冷數(shù)據(jù)穩(wěn)定,一旦需要恢復(fù)數(shù)據(jù),對業(yè)務(wù)不會有太大影響。1.5.1Hadoop3.0的新特性(4)支持多NameNode,即支持一個集群中,一個active和多個standbynamenode的部署方式。Active的NameNode始終只有1個,余下的都是Standby。StandbyNN會不斷與JN同步,保證自己獲取最新的editlog,并將edits同步到自己維護(hù)的image中去,這樣便可以實(shí)現(xiàn)熱備,在發(fā)生failover的時候,立馬切換成active狀態(tài),對外提供服務(wù)。同時,JN只允許一個active狀態(tài)的NN寫入。(5)Tasknative優(yōu)化。為MapReduce增加了C/C++的mapoutputcollector實(shí)現(xiàn)(包括Spill,Sort和IFile等),通過作業(yè)級別參數(shù)調(diào)整就可切換到該實(shí)現(xiàn)上。對于shuffle密集型應(yīng)用,其性能可提高約30%。(6)MapReduce內(nèi)存參數(shù)自動推斷。在Hadoop2.0中,為MapReduce作業(yè)設(shè)置內(nèi)存參數(shù)非常繁瑣,涉及到兩個參數(shù):mapreduce.{map,reduce}.memory.mb和mapreduce.{map,reduce}.java.opts,一旦設(shè)置不合理,則會使得內(nèi)存資源浪費(fèi)嚴(yán)重,比如將前者設(shè)置為4096MB,但后者卻是“-Xmx2g”,則剩余2g實(shí)際上無法讓javaheap使用到。1.5.2大數(shù)據(jù)引擎FlinkFlink是一個針對流數(shù)據(jù)和批數(shù)據(jù)的高性能開源分布式處理引擎,代碼主要由Java語言實(shí)現(xiàn),部分代碼由Scala語言實(shí)現(xiàn)。它可以處理有界的批量數(shù)據(jù)集和無界的實(shí)時數(shù)據(jù)集。對Flink而言,其所要處理的主要場景就是流數(shù)據(jù),批數(shù)據(jù)只是流數(shù)據(jù)的一個極限特例而已,故Flink是一款真正的流批統(tǒng)一的計算引擎。Flink支持在獨(dú)立集群(Standalone模式)或者在被YARN、Mesos、K8s等管理的集群上運(yùn)行,其整體結(jié)構(gòu)如圖1-5所示。圖1-5Flink整體結(jié)構(gòu)圖1.5.2大數(shù)據(jù)引擎FlinkFlink提交作業(yè)架構(gòu)流程如圖1-6所示。用戶在客戶端提交一個作業(yè)(Job)到服務(wù)端,服務(wù)端為分布式的主從架構(gòu)。JobManager(master)負(fù)責(zé)計算資源(TaskManager)的管理、任務(wù)的調(diào)度、檢查點(diǎn)(checkpoint)的創(chuàng)建等工作,而TaskManager(worker)負(fù)責(zé)SubTask的實(shí)際執(zhí)行。當(dāng)服務(wù)端的JobManager接收到一個Job后,會按照各個算子的并發(fā)度將Job拆分成多個SubTask,并分配到TaskManager的Slot上執(zhí)行。圖1-6Flink提交作業(yè)架構(gòu)流程圖1.5.2大數(shù)據(jù)引擎Flink此外,F(xiàn)link為了讓開發(fā)人員更好地進(jìn)行分布式流處理,通過對外暴露不同層級的API來掩藏內(nèi)部實(shí)現(xiàn)的復(fù)雜性。圖1-7給出了Flink分層API示意圖,自上而下分別提供了SQL、TableAPI、DataStreamAPI/DataSetAPI和StatefulStreamingProcessing四層API。圖1-7FlinkAPI分層示意圖1.5.3智能化大數(shù)據(jù)分析處理在數(shù)字化時代,大數(shù)據(jù)智能化是核心要素。大數(shù)據(jù)的智能分析化管理,即充分利用現(xiàn)代網(wǎng)絡(luò)信息技術(shù)和集成技術(shù)將各種海量數(shù)據(jù)予以整合,通過高效的智能化分析讓大數(shù)據(jù)變得易使用、易獲得、高質(zhì)量,為實(shí)現(xiàn)重點(diǎn)區(qū)域的信息數(shù)據(jù)處理提供多種智能、高效的分析管理功能,讓“大數(shù)據(jù)”在各個階段的應(yīng)用更加廣泛、穩(wěn)定。大數(shù)據(jù)智能化分析核心價值在于對海量數(shù)據(jù)進(jìn)行處理和智能分析,主要有以下優(yōu)勢:(1)高可靠性。存儲海量數(shù)據(jù)和智能化分析處理需求數(shù)據(jù)的能力值得人們信賴。(2)高擴(kuò)展性。大數(shù)據(jù)智能多層次的分析數(shù)據(jù)視圖,確保有效和透明的數(shù)據(jù)。(3)高效性。數(shù)據(jù)分析獲取過程直觀、強(qiáng)大,運(yùn)行效率快。(4)高容錯性。通過先進(jìn)的軟件技術(shù)、新算法設(shè)計與高性能計算研究處理各種數(shù)據(jù)。智能大數(shù)據(jù)分析處理技術(shù)在研究大量數(shù)據(jù)的過程中尋找模式、相關(guān)性和其他有用信息,利用大數(shù)據(jù)感知與分析技術(shù),支持大數(shù)據(jù)相關(guān)性分析思想來分析統(tǒng)計監(jiān)測數(shù)據(jù),助力業(yè)務(wù)普查,幫助企業(yè)用戶實(shí)時監(jiān)測、智能分析,幫助企業(yè)更好地適應(yīng)變化,全面提升企業(yè)水平和影響力。本章小結(jié)

本章主要介紹了大數(shù)據(jù)的概念及核心技術(shù)、分布式和集群的概念以及大數(shù)據(jù)技術(shù)生態(tài)圈的組成,重點(diǎn)介紹Hadoop生態(tài)系統(tǒng)的各個組件及其作用。本章的重點(diǎn)在于讀者能夠了解掌握大數(shù)據(jù)的核心技術(shù)以及Hadoop生態(tài)系統(tǒng)的組成。第2章大數(shù)據(jù)分析技術(shù)本章內(nèi)容本章圍繞大數(shù)據(jù)分析技術(shù)進(jìn)行介紹,首先講解分析流程以及相關(guān)技術(shù),然后講解大數(shù)據(jù)分析常用的幾種方法,最后講解各流程中所用到的工具,并對工具的特點(diǎn)、適用范圍等信息進(jìn)行了具體介紹。本章要點(diǎn)重點(diǎn)掌握大數(shù)據(jù)的分析流程,熟悉相關(guān)技術(shù);理解并掌握大數(shù)據(jù)分析的常用方法;了解大數(shù)據(jù)分析過程中所用到的基礎(chǔ)工具及其使用方法。2.1大數(shù)據(jù)分析流程及相關(guān)技術(shù)要進(jìn)行大數(shù)據(jù)的分析工作,就必須先了解其流程,故本節(jié)圍繞大數(shù)據(jù)采集、預(yù)處理、大數(shù)據(jù)存儲、分析挖掘和可視化這五個主要階段進(jìn)行闡述,除對基本概念、特征進(jìn)行介紹外,還講解了流程中所用到的主要技術(shù)。2.1.1大數(shù)據(jù)采集與預(yù)處理1.大數(shù)據(jù)采集數(shù)據(jù)采集,又稱數(shù)據(jù)獲取,是指通過社交網(wǎng)絡(luò)交互數(shù)據(jù)及移動互聯(lián)網(wǎng)數(shù)據(jù)等方式獲得的各種類型的海量數(shù)據(jù)。在大數(shù)據(jù)體系中,數(shù)據(jù)分為業(yè)務(wù)數(shù)據(jù)、行業(yè)數(shù)據(jù)、內(nèi)容數(shù)據(jù)、線上行為數(shù)據(jù)和線下行為數(shù)據(jù)五大類,實(shí)際采集的數(shù)據(jù)主要來源于社交網(wǎng)絡(luò)、商業(yè)數(shù)據(jù)、傳感器數(shù)據(jù)等。在實(shí)際的數(shù)據(jù)采集過程中,數(shù)據(jù)源會影響大數(shù)據(jù)質(zhì)量的真實(shí)性、完整性、一致性、準(zhǔn)確性,因此,大數(shù)據(jù)采集技術(shù)面臨著許多技術(shù)挑戰(zhàn),一方面需要保證數(shù)據(jù)的可靠性,同時還要保證從中可以提取到有價值的信息。根據(jù)數(shù)據(jù)源的不同,大數(shù)據(jù)采集的方法也不相同。例如,對于Web數(shù)據(jù),多采用網(wǎng)絡(luò)爬蟲方式,這需要對爬蟲軟件進(jìn)行時間設(shè)置以保障收集到的數(shù)據(jù)時效性質(zhì)量,靈活控制采集任務(wù)的啟動和停止。數(shù)據(jù)采集是數(shù)據(jù)分析生命周期中的重要一環(huán),它通過傳感器數(shù)據(jù)、社交網(wǎng)絡(luò)數(shù)據(jù)等獲得各種類型的結(jié)構(gòu)化、半結(jié)構(gòu)化及非結(jié)構(gòu)化的海量數(shù)據(jù)。由于采集到的數(shù)據(jù)錯綜復(fù)雜,因此,需要對數(shù)據(jù)進(jìn)行預(yù)處理。2.1.1大數(shù)據(jù)采集與預(yù)處理2.大數(shù)據(jù)預(yù)處理數(shù)據(jù)預(yù)處理主要包括數(shù)據(jù)抽取、數(shù)據(jù)清洗、數(shù)據(jù)集成、數(shù)據(jù)歸約等內(nèi)容,即通過對數(shù)據(jù)進(jìn)行提取、轉(zhuǎn)換、加載,最終挖掘數(shù)據(jù)的潛在價值,大大提高大數(shù)據(jù)的總體質(zhì)量。數(shù)據(jù)提取過程有助于將獲取到的具有多種結(jié)構(gòu)和類型的復(fù)雜數(shù)據(jù)轉(zhuǎn)化為單一的或者便于處理的構(gòu)型,以達(dá)到快速分析處理的目的;數(shù)據(jù)清洗包括對數(shù)據(jù)的不一致檢測、噪聲數(shù)據(jù)的識別、數(shù)據(jù)過濾與修正等,通過對數(shù)據(jù)過濾“去噪”從而提取出有效數(shù)據(jù);數(shù)據(jù)集成則是將多個數(shù)據(jù)源的數(shù)據(jù)進(jìn)行集成,從而形成集中、統(tǒng)一的數(shù)據(jù)庫;數(shù)據(jù)歸約是在不損害分析結(jié)果準(zhǔn)確性的前提下降低數(shù)據(jù)集規(guī)模,使之簡化,包括維歸約、數(shù)據(jù)歸約、數(shù)據(jù)抽樣等技術(shù),這一過程有利于提高大數(shù)據(jù)的價值密度。2.1.2大數(shù)據(jù)存儲大數(shù)據(jù)存儲與管理是大數(shù)據(jù)分析流程中不可缺少的環(huán)節(jié)。大數(shù)據(jù)存儲與管理要用存儲器把采集到的數(shù)據(jù)都存儲起來,建立相應(yīng)的數(shù)據(jù)庫,并進(jìn)行管理和調(diào)用,數(shù)據(jù)存儲的好壞直接決定了整個系統(tǒng)的性能。2.1.2大數(shù)據(jù)存儲1.大數(shù)據(jù)存儲由于當(dāng)今社會數(shù)據(jù)量的龐大,大數(shù)據(jù)的存儲大都采取分布式的形式。分布式存儲,即大量數(shù)據(jù)分塊存儲在不同的服務(wù)器節(jié)點(diǎn),他們之間通過副本保持?jǐn)?shù)據(jù)的可靠性。大數(shù)據(jù)存儲過程重點(diǎn)解決復(fù)雜結(jié)構(gòu)化、半結(jié)構(gòu)化和非結(jié)構(gòu)化大數(shù)據(jù)管理與處理技術(shù),主要解決大數(shù)據(jù)的可存儲、可表示、可處理、可靠性及有效傳輸?shù)葞讉€關(guān)鍵問題:開發(fā)可靠的分布式文件系統(tǒng)(DFS)、能效優(yōu)化的存儲、計算融入存儲、大數(shù)據(jù)的去冗余及高效低成本的大數(shù)據(jù)存儲技術(shù);突破分布式非關(guān)系型大數(shù)據(jù)管理與處理技術(shù),異構(gòu)數(shù)據(jù)的數(shù)據(jù)融合技術(shù),數(shù)據(jù)組織技術(shù),研究大數(shù)據(jù)建模技術(shù);突破大數(shù)據(jù)索引技術(shù);突破大數(shù)據(jù)移動、備份、復(fù)制等技術(shù)。大數(shù)據(jù)系統(tǒng)中最常用的分布式存儲技術(shù)是Hadoop的HDFS文件系統(tǒng),其理念為多個節(jié)點(diǎn)共同存儲數(shù)據(jù),由于數(shù)據(jù)量逐漸增多,節(jié)點(diǎn)也就形成一個大規(guī)模集群。也就是說,HDFS支持上萬的節(jié)點(diǎn),能夠存儲很大規(guī)模的數(shù)據(jù)。2.1.2大數(shù)據(jù)存儲2.大數(shù)據(jù)管理傳統(tǒng)數(shù)據(jù)庫存儲的數(shù)據(jù)類型僅限于結(jié)構(gòu)化的數(shù)據(jù),而大數(shù)據(jù)集合是由結(jié)構(gòu)化、半結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù)組成的,因此在大數(shù)據(jù)管理過程中,通常使用非關(guān)系型數(shù)據(jù)庫。非關(guān)系型數(shù)據(jù)庫提出另一種理念,例如,以鍵值對存儲,且結(jié)構(gòu)不固定,元組可以有不同的字段,每個元組可以根據(jù)需要增加鍵值對,這樣就不會局限于固定的結(jié)構(gòu),從而減少一些時間和空間的開銷。使用這種方式,用戶可以根據(jù)需要去添加自己需要的字段,這樣,當(dāng)獲取用戶的不同信息時,不需要像關(guān)系型數(shù)據(jù)庫一樣對多表進(jìn)行關(guān)聯(lián)查詢,僅需要根據(jù)id取出相應(yīng)的value即可完成查詢。常用的非關(guān)系型數(shù)據(jù)庫有HBase、MongoDB、Redis等等,其中HBase采用了列族存儲,本質(zhì)上就是一個按列存儲的大表,數(shù)據(jù)按相同字段進(jìn)行存儲,不同的列對應(yīng)不同的屬性,因此在查詢時即可單單查詢相關(guān)的列。2.1.3大數(shù)據(jù)分析與挖掘隨著現(xiàn)代互聯(lián)網(wǎng)的高速發(fā)展,人們生產(chǎn)生活中產(chǎn)生的數(shù)據(jù)量急劇增長,如何從海量的數(shù)據(jù)中提取有用的知識成為當(dāng)務(wù)之急,針對大數(shù)據(jù)的分析與挖掘技術(shù)應(yīng)運(yùn)而生。大數(shù)據(jù)分析技術(shù)主要包括已有數(shù)據(jù)的統(tǒng)計分析技術(shù)和未知數(shù)據(jù)的挖掘技術(shù)。統(tǒng)計分析可由數(shù)據(jù)處理技術(shù)完成,具體見本章2.1.1節(jié);本節(jié)主要介紹數(shù)據(jù)挖掘的相關(guān)內(nèi)容。數(shù)據(jù)挖掘在大數(shù)據(jù)分析階段完成,即從大量的、有噪聲的、模糊的、隨機(jī)的實(shí)際應(yīng)用數(shù)據(jù)中提取隱含的、潛在有用的信息和知識,挖掘數(shù)據(jù)關(guān)聯(lián)性。數(shù)據(jù)挖掘的主要任務(wù)包括關(guān)聯(lián)規(guī)則、聚類分析、分類和預(yù)測和奇異值檢測等。2.1.3大數(shù)據(jù)分析與挖掘(1)關(guān)聯(lián)規(guī)則兩個或兩個以上變量的取值之間存在某種規(guī)律性,就稱為關(guān)聯(lián)。關(guān)聯(lián)規(guī)則的任務(wù)是找出數(shù)據(jù)庫中隱藏的關(guān)聯(lián)網(wǎng),即通過使用數(shù)據(jù)挖掘方法,發(fā)現(xiàn)數(shù)據(jù)所隱含的某一種或多種關(guān)聯(lián),從而幫助用戶決策。(2)聚類分析聚類是把數(shù)據(jù)按照相似性歸納成若干類別,同一類別的數(shù)據(jù)相似度極高,不同類別間的數(shù)據(jù)差異性較大。(3)分類和預(yù)測分類和預(yù)測本質(zhì)上都可以看作是一種預(yù)測,分類用于預(yù)測離散類別,而預(yù)測則用于預(yù)測連續(xù)類別。2.1.3大數(shù)據(jù)分析與挖掘(4)奇異值檢測數(shù)據(jù)庫中的數(shù)據(jù)往往會存在很多異常情況,發(fā)現(xiàn)數(shù)據(jù)庫中數(shù)據(jù)存在的異常情況是非常重要的。奇異值檢測即是根據(jù)一定標(biāo)準(zhǔn)識別或者檢測出其中的異常值。根據(jù)信息存儲格式,用于挖掘的對象有關(guān)系數(shù)據(jù)庫、面向?qū)ο髷?shù)據(jù)庫、數(shù)據(jù)倉庫、文本數(shù)據(jù)源、多媒體數(shù)據(jù)庫以及Internet等。數(shù)據(jù)挖掘的經(jīng)典算法主要包括C4.5、K-means、SVM、KNN等,實(shí)際項目中需根據(jù)數(shù)據(jù)的類型及特點(diǎn)選擇合適的算法,在數(shù)據(jù)集上進(jìn)行數(shù)據(jù)挖掘,最終對結(jié)果進(jìn)行分析并轉(zhuǎn)換成最終能被用戶理解的知識。在數(shù)據(jù)分析與挖掘環(huán)節(jié),應(yīng)根據(jù)大數(shù)據(jù)應(yīng)用情境與決策需求,選擇合適的大數(shù)據(jù)分析技術(shù),提高大數(shù)據(jù)分析結(jié)果的可用性、價值性和準(zhǔn)確性質(zhì)量。但數(shù)據(jù)分析的結(jié)果往往不夠直觀,因此通常需要借助數(shù)據(jù)可視化階段將結(jié)果直觀地展示給用戶。2.1.4數(shù)據(jù)可視化數(shù)據(jù)可視化對于普通用戶或是數(shù)據(jù)分析人員來說,都是最基本的功能。數(shù)據(jù)可視化是指將大數(shù)據(jù)分析與預(yù)測結(jié)果以計算機(jī)圖形或圖像的方式展示給用戶的過程,讓數(shù)據(jù)自己說話,用戶直觀感受到結(jié)果,并可與用戶進(jìn)行交互。2.1.4數(shù)據(jù)可視化其主要用途如下:(1)使用戶快速理解信息通過使用數(shù)據(jù)的圖形化表示,用戶可以以一種直觀的方式查看大量數(shù)據(jù)以及數(shù)據(jù)間的聯(lián)系,以根據(jù)這些信息制定決策;由于這種模式下數(shù)據(jù)分析要更快,因此企業(yè)可以更加及時地發(fā)現(xiàn)問題、解決問題。(2)確定新興趨勢數(shù)據(jù)可視化可以幫助公司發(fā)現(xiàn)影響商品銷量的異常數(shù)據(jù)和客戶購買行為數(shù)據(jù),發(fā)現(xiàn)新興的市場趨勢,做出相應(yīng)的決策以提升其經(jīng)營效益。(3)方便溝通交流使用圖表、圖形或其它有效的數(shù)據(jù)可視化表示在溝通中是非常重要的,因為這種表示更能吸引人的注意,并能快速獲得彼此的信息。數(shù)據(jù)可視化技術(shù)有利于發(fā)現(xiàn)大量業(yè)務(wù)數(shù)據(jù)中隱含的規(guī)律性信息,以支持決策;可大大提高大數(shù)據(jù)分析結(jié)果的直觀性,便于用戶理解與使用。數(shù)據(jù)可視化與信息圖形、信息可視化、科學(xué)可視化以及統(tǒng)計圖形密切相關(guān)。當(dāng)前,在研究、教學(xué)和開發(fā)等領(lǐng)域都得到了廣泛應(yīng)用。2.2大數(shù)據(jù)分析常用方法大數(shù)據(jù)分析中常用的四種方法:數(shù)理統(tǒng)計分析、聚類分析、分類分析和回歸分析,本節(jié)主要從各方法的原理、具體實(shí)現(xiàn)算法等方面進(jìn)行講解。2.2.1數(shù)理統(tǒng)計分析數(shù)理統(tǒng)計分析法,即以概率論為基礎(chǔ),主要研究隨機(jī)現(xiàn)象中局部與整體之間及各有關(guān)因素之間的規(guī)律性。它要求數(shù)據(jù)具有隨機(jī)性,且必須真實(shí)可靠,這是進(jìn)行定量分析的基礎(chǔ)。這種方法在不借助計算機(jī)來進(jìn)行的同時,亦能達(dá)到快速、準(zhǔn)確和實(shí)施大量計算的目的。2.2.2聚類分析1.大數(shù)據(jù)采集數(shù)據(jù)采集,又稱數(shù)據(jù)獲取,是指通過社交網(wǎng)絡(luò)交互數(shù)據(jù)及移動互聯(lián)網(wǎng)數(shù)據(jù)等方式獲得的各種類型的海量數(shù)據(jù)。在大數(shù)據(jù)體系中,數(shù)據(jù)分為業(yè)務(wù)數(shù)據(jù)、行業(yè)數(shù)據(jù)、內(nèi)容數(shù)據(jù)、線上行為數(shù)據(jù)和線下行為數(shù)據(jù)五大類,實(shí)際采集的數(shù)據(jù)主要來源于社交網(wǎng)絡(luò)、商業(yè)數(shù)據(jù)、傳感器數(shù)據(jù)等。在實(shí)際的數(shù)據(jù)采集過程中,數(shù)據(jù)源會影響大數(shù)據(jù)質(zhì)量的真實(shí)性、完整性、一致性、準(zhǔn)確性,因此,大數(shù)據(jù)采集技術(shù)面臨著許多技術(shù)挑戰(zhàn),一方面需要保證數(shù)據(jù)的可靠性,同時還要保證從中可以提取到有價值的信息。根據(jù)數(shù)據(jù)源的不同,大數(shù)據(jù)采集的方法也不相同。例如,對于Web數(shù)據(jù),多采用網(wǎng)絡(luò)爬蟲方式,這需要對爬蟲軟件進(jìn)行時間設(shè)置以保障收集到的數(shù)據(jù)時效性質(zhì)量,靈活控制采集任務(wù)的啟動和停止。數(shù)據(jù)采集是數(shù)據(jù)分析生命周期中的重要一環(huán),它通過傳感器數(shù)據(jù)、社交網(wǎng)絡(luò)數(shù)據(jù)等獲得各種類型的結(jié)構(gòu)化、半結(jié)構(gòu)化及非結(jié)構(gòu)化的海量數(shù)據(jù)。由于采集到的數(shù)據(jù)錯綜復(fù)雜,因此,需要對數(shù)據(jù)進(jìn)行預(yù)處理。2.2.3分類分析類分析是一種基本的數(shù)據(jù)分析方式,根據(jù)其特點(diǎn),可將數(shù)據(jù)對象劃分為不同的部分和類型,再進(jìn)一步分析,能夠進(jìn)一步挖掘事物的本質(zhì)。常用的分類分析法有決策樹、神經(jīng)網(wǎng)絡(luò)、貝葉斯分類、SVM、隨機(jī)森林……決策樹算法采用樹形結(jié)構(gòu),使用層層推理來實(shí)現(xiàn)最終的分類。決策樹由根節(jié)點(diǎn)、內(nèi)部節(jié)點(diǎn)、葉節(jié)點(diǎn)構(gòu)成。其中,根節(jié)點(diǎn)包含樣本的全集,內(nèi)部節(jié)點(diǎn)對應(yīng)特征屬性測試,葉節(jié)點(diǎn)代表決策結(jié)果。預(yù)測時,在內(nèi)部節(jié)點(diǎn)處用某一屬性值進(jìn)行判斷,根據(jù)判斷結(jié)果決定進(jìn)入哪個分支節(jié)點(diǎn),直到到達(dá)葉節(jié)點(diǎn)處,得到分類結(jié)果。隨機(jī)森林是由很多決策樹構(gòu)成的,不同決策樹之間沒有關(guān)聯(lián)。執(zhí)行分類任務(wù)時,每當(dāng)新的輸入樣本進(jìn)入,令森林中的每一棵決策樹分別進(jìn)行判斷和分類,每個決策樹會得到一個自己的分類結(jié)果,決策樹的分類結(jié)果中哪一個分類最多,那么隨機(jī)森林就把這個結(jié)果當(dāng)做最終結(jié)果。2.2.4回歸分析回歸分析是一種預(yù)測性的建模技術(shù),它研究的是因變量(目標(biāo))和自變量(預(yù)測器)之間的關(guān)系。這種技術(shù)通常用于預(yù)測分析,時間序列模型以及發(fā)現(xiàn)變量之間的因果關(guān)系?;貧w分析是建模和分析數(shù)據(jù)的重要工具。常見的回歸方法有線性回歸和邏輯回歸。線性回歸通常是人們在學(xué)習(xí)預(yù)測模型時首選技術(shù)之一。在線性回歸中,自變量是連續(xù)的或離散的,因變量是連續(xù)的,回歸線的性質(zhì)是線性的。線性回歸使用最佳的擬合直線在因變量(Y)和一個或多個自變量(X)之間建立一種關(guān)系(Y=a+b*X+e,其中a表示截距,b表示直線的斜率,e表示誤差項),以根據(jù)給定的預(yù)測變量來預(yù)測目標(biāo)變量的值。邏輯回歸用于計算“事件Success”和“事件Failure”的概率,也就是說,當(dāng)因變量的類型屬于二元(1/0,是/否)變量時,應(yīng)選擇使用邏輯回歸。邏輯回歸廣泛用于處理分類問題,它不局限于處理自變量和因變量的線性關(guān)系,可以處理各種類型的關(guān)系。2.3數(shù)據(jù)分析基礎(chǔ)工具本節(jié)講解了數(shù)據(jù)采集、清洗、存儲、挖掘、可視化階段所用到的基礎(chǔ)工具,并給出了各工具的官方網(wǎng)站。2.3.1數(shù)據(jù)采集工具Python如何爬取動態(tài)加載頁面?終極解決方案是,通過聯(lián)合使用Selenium和PhantomJS兩種工具來實(shí)現(xiàn)。Selenium是一款使用ApacheLicense2.0協(xié)議發(fā)布的開源框架,是一個用于Web應(yīng)用程序自動化測試的工具。Selenium測試直接運(yùn)行在瀏覽器中,支持的瀏覽器包括IE,MozillaFirefox,Safari,GoogleChrome,Opera等。它采用Javascript來管理整個測試過程,包括讀入測試套件、執(zhí)行測試和記錄測試結(jié)果;它采用Javascript單元測試工具JSUnit為核心,模擬真實(shí)用戶操作,包括瀏覽頁面、點(diǎn)擊鏈接、輸入文字、提交表單、觸發(fā)鼠標(biāo)事件等等,并且能夠?qū)撁娼Y(jié)果進(jìn)行種種驗證。PhantomJS是一個可編程的無頭瀏覽器,也就是一個包括js解析引擎、渲染引擎、請求處理等但不包括顯示和用戶交互頁面的完整的瀏覽器內(nèi)核。它提供JavascriptAPI接口,即通過編寫js程序直接與webkit內(nèi)核交互。此外,它也可以在不同平臺上二次開發(fā)采集項目或是自動項目測試等工作。PhantomJS通常適用于網(wǎng)絡(luò)爬蟲、網(wǎng)頁監(jiān)控等方面,網(wǎng)絡(luò)爬蟲即獲取鏈接處使用js跳轉(zhuǎn)后的真實(shí)地址2.3數(shù)據(jù)分析基礎(chǔ)工具Selenium官方網(wǎng)站:https://www.selenium.dev/,如圖2-1所示。圖2-1Selenium官方網(wǎng)站2.3數(shù)據(jù)分析基礎(chǔ)工具PhantomJS官方網(wǎng)站:/,如圖2-2所示。圖2-2PhantomJS官方網(wǎng)站2.3.2使用Excel爬取數(shù)據(jù)2.3.3數(shù)據(jù)清洗工具Kettle是一款開源的ETL工具,用于數(shù)據(jù)庫間的數(shù)據(jù)遷移。它以Java開發(fā),支持跨平臺運(yùn)行,即支持在Linux、Windows、Unix系統(tǒng)中運(yùn)行,數(shù)據(jù)抽取高效穩(wěn)定。Kettle是PDI以前的名稱,PDI的全稱是PentahoDataIntegeration,其本意是水壺,表達(dá)了數(shù)據(jù)流的含義。Kettle主作者是Matt,他在2003年就開始了這個項目。從版本2.2開始,Kettle項目進(jìn)入了開源領(lǐng)域,并遵守LGPL協(xié)議。2006年Kettle加入了開源的BI(BusinessIntelligence)組織Pentaho,正式命名為PDI,加入Pentaho后的Kettle發(fā)展越來越快,并且得到了越來越多的人的關(guān)注。作為Pentaho的一個重要組成部分,Kettle目前在國內(nèi)項目的應(yīng)用逐漸增多。Kettle允許用戶管理來自不同數(shù)據(jù)庫的數(shù)據(jù),通過提供一個圖形化的用戶環(huán)境來描述用戶想做什么。作為一個端對端的數(shù)據(jù)集成平臺,可以對多種數(shù)據(jù)源進(jìn)行抽取、加載、對數(shù)據(jù)進(jìn)行各種清洗、轉(zhuǎn)換、混合,并支持多維聯(lián)機(jī)分析處理和數(shù)據(jù)挖掘。Kettle中有兩種腳本文件:transformation和job,transformation完成針對數(shù)據(jù)的基礎(chǔ)轉(zhuǎn)換,job則完成整個工作流的控制2.3.3數(shù)據(jù)清洗工具Kettle是一款開源的ETL工具,用于數(shù)據(jù)庫間的數(shù)據(jù)遷移。它以Java開發(fā),支持跨平臺運(yùn)行,即支持在Linux、Windows、Unix系統(tǒng)中運(yùn)行,數(shù)據(jù)抽取高效穩(wěn)定。Kettle是PDI以前的名稱,PDI的全稱是PentahoDataIntegeration,其本意是水壺,表達(dá)了數(shù)據(jù)流的含義。Kettle主作者是Matt,他在2003年就開始了這個項目。從版本2.2開始,Kettle項目進(jìn)入了開源領(lǐng)域,并遵守LGPL協(xié)議。2006年Kettle加入了開源的BI(BusinessIntelligence)組織Pentaho,正式命名為PDI,加入Pentaho后的Kettle發(fā)展越來越快,并且得到了越來越多的人的關(guān)注。作為Pentaho的一個重要組成部分,Kettle目前在國內(nèi)項目的應(yīng)用逐漸增多。Kettle允許用戶管理來自不同數(shù)據(jù)庫的數(shù)據(jù),通過提供一個圖形化的用戶環(huán)境來描述用戶想做什么。作為一個端對端的數(shù)據(jù)集成平臺,可以對多種數(shù)據(jù)源進(jìn)行抽取、加載、對數(shù)據(jù)進(jìn)行各種清洗、轉(zhuǎn)換、混合,并支持多維聯(lián)機(jī)分析處理和數(shù)據(jù)挖掘。Kettle中有兩種腳本文件:transformation和job,transformation完成針對數(shù)據(jù)的基礎(chǔ)轉(zhuǎn)換,job則完成整個工作流的控制2.3.3數(shù)據(jù)清洗工具Kettle目前包含五個產(chǎn)品:Spoon、Pan、Chef、Kithcen、Encr。(1)SPOON:一個圖形用戶界面,允許用戶通過圖形界面來設(shè)計ETL轉(zhuǎn)換過程和任務(wù)。(2)PAN:轉(zhuǎn)換執(zhí)行器;允許批量運(yùn)行由Spoon設(shè)計的ETL轉(zhuǎn)換。PAN在后臺執(zhí)行,沒有圖形界面。(3)CHEF:允許創(chuàng)建任務(wù),有利于自動化更新數(shù)據(jù)倉庫的復(fù)雜工作。任務(wù)創(chuàng)建后將被檢查,判斷其是否正確運(yùn)行。(4)KITHCEN:作業(yè)執(zhí)行器,允許批量使用由CHEF設(shè)計的任務(wù)。KITCHEN也在后臺運(yùn)行。(5)ENCR:用來加密連接數(shù)據(jù)庫與集群時使用的密碼。2.3.3數(shù)據(jù)清洗工具Kettle官方網(wǎng)站:http://www.kettle.be/,如圖2-10所示圖2-10Kettle官方網(wǎng)站2.3.4數(shù)據(jù)存儲工具M(jìn)ongoDB是由C++語言編寫的一個基于分布式文件存儲的數(shù)據(jù)庫,旨在為WEB應(yīng)用提供可擴(kuò)展的高性能數(shù)據(jù)存儲解決方案。MongoDB是一個介于關(guān)系數(shù)據(jù)庫和非關(guān)系數(shù)據(jù)庫(NoSQL)之間的產(chǎn)品,是非關(guān)系數(shù)據(jù)庫當(dāng)中功能最豐富,最像關(guān)系數(shù)據(jù)庫的產(chǎn)品。此外,MongoDB也支持RUBY,PYTHON,JAVA,C++,PHP,C#等多種編程語言。MongoDB將數(shù)據(jù)存儲為一個文檔,數(shù)據(jù)結(jié)構(gòu)由鍵值(key=>value)對組成。MongoDB文檔類似于JSON對象。字段值可以包含其他文檔,數(shù)組及文檔數(shù)組。2.3.4數(shù)據(jù)存儲工具M(jìn)ySQL是一個開源的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),由瑞典MySQLAB公司開發(fā),目前隸屬于Oracle公司。MySQL可以處理擁有上千萬條記錄的大型數(shù)據(jù)庫,將數(shù)據(jù)保存在不同的表中,而不是將所有數(shù)據(jù)放在一個大倉庫內(nèi),這樣就提高了速度和靈活性。MySQL是一個關(guān)系型數(shù)據(jù)庫,一個關(guān)系型數(shù)據(jù)庫由一個或數(shù)個表格組成,一個表格包括表頭、行、列、鍵和值。MySQL使用標(biāo)準(zhǔn)的SQL數(shù)據(jù)語言形式。2.3.4數(shù)據(jù)存儲工具M(jìn)ongoDB官方網(wǎng)站:/,如圖2-11所示。圖2-11mongoDB官方網(wǎng)站2.3.4數(shù)據(jù)存儲工具M(jìn)ySQL官方網(wǎng)站:/,如圖2-12所示。圖2-12MySQL官方網(wǎng)站2.3.5機(jī)器學(xué)習(xí)工具Scikit-learn是一個開源的機(jī)器學(xué)習(xí)工具,基于Python語言,提供了用于數(shù)據(jù)降維、預(yù)處理、模型選擇等各種工具。Scikit-learn可以實(shí)現(xiàn)數(shù)據(jù)預(yù)處理、分類、回歸、降維、模型選擇等常用的機(jī)器學(xué)習(xí)算法。Scikit-learn是基于NumPy、SciPy和matplotlib構(gòu)建。2.3.5機(jī)器學(xué)習(xí)工具Scikit-learn包括分類、回歸、聚類、降維、預(yù)處理等。(1)分類用于識別對象屬于哪個類別,例如垃圾郵件檢測、圖像識別等,常用算法有SVM、最近鄰、隨機(jī)森林等;(2)回歸用于預(yù)測與對象關(guān)聯(lián)的連續(xù)值屬性,例如預(yù)測藥物反應(yīng)、股票漲勢等,常用算法有SVR、最近鄰、隨機(jī)森林等;(3)聚類用于自動將相似對象分組為集合,例如將客戶細(xì)分、分組實(shí)驗等,常用算法有k-Means、譜聚類、均值漂移等;(4)降維用于減少要考慮的隨機(jī)變量的數(shù)量,例如可視化場景,常用算法有k-Means、特征選擇、非負(fù)矩陣分解等;(5)預(yù)處理用于特征提取和歸一化,例如轉(zhuǎn)換輸入數(shù)據(jù)、用于機(jī)器學(xué)習(xí)算法的文本等,常用算法有預(yù)處理、特征提取等。2.3.5機(jī)器學(xué)習(xí)工具更多詳情見Scikit-learn中文社區(qū):/,如圖2-13所示。圖2-13Scikit-learn中文社區(qū)網(wǎng)站2.3.6數(shù)據(jù)可視化工具M(jìn)atplotlib是當(dāng)下用于數(shù)據(jù)可視化最流行的套件之一,是一個跨平臺庫,支持Python、Jupyter和Web應(yīng)用程序服務(wù)器等。它能將數(shù)據(jù)圖形化,并且提供多樣化的輸出格式,向用戶或從業(yè)人員直觀地展示數(shù)據(jù),在市場分析等多個領(lǐng)域發(fā)揮著重要作用。

PyEcharts是由JavaScript實(shí)現(xiàn)的開源可視化庫,支持主流Notebook環(huán)境(JupyterNotebook和JupyterLab),可以兼容大多數(shù)瀏覽器(IE8/9/10/11,Chrome,F(xiàn)irefox等)。它支持折線圖、柱狀圖、散點(diǎn)圖、餅圖、雷達(dá)圖、儀表盤、漏斗圖等12類圖表,支持多圖表、組件的聯(lián)動,提供了直觀、交互豐富、高度個性化定制的數(shù)據(jù)可視化圖表,且擁有原生地圖文件,為地理數(shù)據(jù)可視化提供強(qiáng)有力的支持。ApacheSuperset是一個可用于數(shù)據(jù)展示與數(shù)據(jù)可視化的開源軟件,在處理大量數(shù)據(jù)方面效果顯著。Superset最初為Airbnb所開發(fā),在2017年成為Apache的孵化項目。它是一款快速直觀的輕量級工具,具有豐富的功能選項,從簡單的折線圖到高度詳細(xì)的地理空間圖,用戶可以輕松地以可視化的方式瀏覽數(shù)據(jù),提供了精美的可視化效果。此外,它支持多種數(shù)據(jù)庫,如MySQL、SQLserver、ORACLE、druid等。2.3.6數(shù)據(jù)可視化工具M(jìn)atplotlib官方網(wǎng)站:/,如圖2-14所示。圖2-14Matplotlib官方網(wǎng)站2.3.6數(shù)據(jù)可視化工具PyEcharts官方網(wǎng)站:/#/,如圖2-15所示。圖2-15PyEcharts官方網(wǎng)站2.3.6數(shù)據(jù)可視化工具ApacheSuperset官方網(wǎng)站:/,如圖2-16所示。圖2-16Superset官方網(wǎng)站本章小結(jié)本章主要介紹了大數(shù)據(jù)分析的基本流程、常用方法及工具。從數(shù)據(jù)的采集與清洗開始,再到數(shù)據(jù)的存儲,繼而進(jìn)行分析與挖掘,最終將數(shù)據(jù)以圖表的形式展示給用戶,這就形成了一個數(shù)據(jù)分析“周期”。本章的重點(diǎn)在于掌握大數(shù)據(jù)分析的流程,了解各階段所用到的

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論