日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

大数据原理和应用

發(fā)布時間:2023/12/10 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 大数据原理和应用 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

習題答案:
第一章:
1. 簡述大數(shù)據(jù)的概念。
答:自2012年以來,“大數(shù)據(jù)”一詞越來越引起人們的關(guān)注。但是,目前為止,在學術(shù)研究領(lǐng)域和產(chǎn)業(yè)界中,大數(shù)據(jù)并沒有一個標準的定義。在維克托·邁爾-舍恩伯格編寫的《大數(shù)據(jù)時代》一書中大數(shù)據(jù)指不用隨機分析法(抽樣調(diào)查)這樣捷徑,而采用所有數(shù)據(jù)進行分析處理。而麥肯錫全球研究所則定義大數(shù)據(jù)為一種規(guī)模大到在獲取、存儲、管理、分析方面大大超出了傳統(tǒng)數(shù)據(jù)庫軟件工具能力范圍的數(shù)據(jù)集合,具有海量的數(shù)據(jù)規(guī)模、快速的數(shù)據(jù)流轉(zhuǎn)、多樣的數(shù)據(jù)類型和價值密度低四大特征。通常來說,大數(shù)據(jù)是指數(shù)據(jù)量超過一定大小,無法用常規(guī)的軟件在規(guī)定的時間范圍內(nèi)進行抓取、管理和處理的數(shù)據(jù)集合。
2. 簡述大數(shù)據(jù)的基本特征。
答:
大數(shù)據(jù)的主要特征可用“5V+1C”來進行概括,分別是:數(shù)據(jù)量大(Volume)、數(shù)據(jù)類型多(Variety)、數(shù)據(jù)時效性強(Velocity)、價值密度低(Value)、準確性高(Veracity)、復雜性高(Complexity),如下圖所示。

?


圖 大數(shù)據(jù)特征圖
3.簡述大數(shù)據(jù)的分析處理過程。
答:
大數(shù)據(jù)的處理流程基本可劃分為數(shù)據(jù)采集、數(shù)據(jù)處理與集成、數(shù)據(jù)分析和數(shù)據(jù)解釋4個階段。即經(jīng)數(shù)據(jù)源獲取的數(shù)據(jù),因為其數(shù)據(jù)結(jié)構(gòu)不同(包括結(jié)構(gòu)、半結(jié)構(gòu)和非結(jié)構(gòu)數(shù)據(jù)),用特殊方法進行數(shù)據(jù)處理和集成,將其轉(zhuǎn)變?yōu)榻y(tǒng)一標準的數(shù)據(jù)格式方便以后對其進行處理;然后用合適的數(shù)據(jù)分析方法將這些數(shù)據(jù)進行處理分析,并將分析的結(jié)果利用可視化等技術(shù)展現(xiàn)給用戶,這就是整個大數(shù)據(jù)處理的流程如下圖所示。

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

詳細的分析處理過程參見《大數(shù)據(jù)技術(shù)與應用》第5章第2節(jié)


4. 簡述大數(shù)據(jù)的存儲方式。
答:
存儲系統(tǒng)作為數(shù)據(jù)中心最核心的數(shù)據(jù)基礎(chǔ),不再僅是傳統(tǒng)分散的、單一的底層設(shè)備。除了要具備高性能、高安全、高可靠等基于大數(shù)據(jù)應用需求,“應用定義存儲”概念被提出。主要有以下幾種存儲方式:
1、分布式系統(tǒng)?
2、NoSQL數(shù)據(jù)庫?
3、云數(shù)據(jù)庫?
4、大數(shù)據(jù)存儲技術(shù)路線?
?? ??? ?1) 采用MPP架構(gòu)的新型數(shù)據(jù)庫集群?
?? ??? ?2) 基于Hadoop的技術(shù)擴展和封裝?
?? ??? ?3) 大數(shù)據(jù)一體機

5.簡述大數(shù)據(jù)的商業(yè)價值和社會價值。
答:?
商業(yè)價值:?
1.對顧客群體細分,然后對每個群體量體裁衣般的采取獨特的行動。?
2. 運用大數(shù)據(jù)模擬實境,發(fā)掘新的需求和提高利潤。
3. 提高大數(shù)據(jù)成果在各相關(guān)部門的分享程度,提高企業(yè)決策能力。
4. 進行商業(yè)模式、產(chǎn)品和服務的創(chuàng)新。
社會價值:?
1.大數(shù)據(jù)可以為個人提供個性化的醫(yī)療服務。
2.大數(shù)據(jù)可以提供個性化教育。在大數(shù)據(jù)的支持下,教育將呈現(xiàn)另外?? ??? ?的特征:彈性學制、個性化輔導、社區(qū)和家庭學習。
3.大數(shù)據(jù)的誕生讓社會安全管理更為井然有序。
4.大數(shù)據(jù)的發(fā)展帶動了社會上各行各業(yè)的發(fā)展。?
6.以某一行業(yè)為例,簡述大數(shù)據(jù)的應用。
答:參見《大數(shù)據(jù)技術(shù)與應用》 第1章第4節(jié)

第二章:
1.簡述大數(shù)據(jù)集群系統(tǒng)。
答:集群技術(shù)是指通過高速通信網(wǎng)絡(luò)將一組相互獨立的計算機聯(lián)系在一起,組成一個計算機系統(tǒng),該系統(tǒng)中每一臺計算機都是一個獨立的服務器,運行各自的進程,它們相互之間可以通信,既可以看作是一個個單一的系統(tǒng),也能夠協(xié)同起來為用戶提供服務。對網(wǎng)絡(luò)用戶來講,后端就像是一個單一的系統(tǒng),協(xié)同向用戶提供系統(tǒng)資源、系統(tǒng)服務,通過網(wǎng)絡(luò)連接組合成一個組合來共同完一個任務。Hadoop 分布式集群是為了對海量的非結(jié)構(gòu)化數(shù)據(jù)進行存儲和分析而設(shè)計的一種特定的集群。其本質(zhì)上是一種計算集群。
詳見《大數(shù)據(jù)技術(shù)與應用》第2章第1節(jié)

2.簡述集群系統(tǒng)的分類。
答:集群分為同構(gòu)與異構(gòu)兩種。而按功能和結(jié)構(gòu)可以分成以下幾類。
?(1)高可用性集群。
?(2)負載均衡集群。
?(3)高性能計算集群。
?(4)網(wǎng)格計算。

3.簡述Linux操作系統(tǒng)的特性。
答:
Linux操作系統(tǒng)是一個多用戶,多任務,豐富的網(wǎng)絡(luò)功能,它不僅有可靠的系統(tǒng)安全,而且良好的可移植性,具有標準的兼容性,良好的用戶界面,出色的速度性能,最為重要的是開源,CentOS主要有以下特點:
? ? (1)主流:目前的Linux操作系統(tǒng)主要應用于生產(chǎn)環(huán)境,企業(yè)級主流Linux系統(tǒng)仍舊是RedHat或者CentOS。
? ? (2)免費:RedHat 和CentOS差別不大,基于Red Hat Linux 提供的可自由使用源代碼的企業(yè)CentOS是一個Linux發(fā)行版本。
? ? (3)更新方便:CentOS獨有的yum命令支持在線升級,可以即時更新系統(tǒng),不像RedHat 那樣需要花錢購買支持服務。

4.簡述計算機虛擬化技術(shù)以及常見的虛擬化軟件。
答:在計算機中,虛擬化(Virtualization)是一種資源管理技術(shù),是將計算機的各種實體資源,如服務器、網(wǎng)絡(luò)、內(nèi)存及存儲等,予以抽象、轉(zhuǎn)換后呈現(xiàn)出來,打破實體結(jié)構(gòu)間的不可分割的障礙,使用戶可以比原本的組態(tài)更好的方式來應用這些資源。這些資源的新虛擬部分是不受現(xiàn)有資源的架設(shè)方式,地域或物理組態(tài)所限制。一般所指的虛擬化資源包括計算能力和資料存儲。
? ? 常見的虛擬化軟件有VirtualBox、VMware Workstation、KVM。

5.簡述大數(shù)據(jù)集群技術(shù)的架構(gòu)。
答:一般來說,大數(shù)據(jù)集群的構(gòu)架,主要分為硬件資源層、OS 層、基礎(chǔ)設(shè)施管理層、文件系統(tǒng)層、大數(shù)據(jù)集群層和大數(shù)據(jù)應用層,如下圖所示。

圖 大數(shù)據(jù)集群的架構(gòu)
詳見《大數(shù)據(jù)技術(shù)與應用》第2章第5節(jié)

6.安裝Linux系統(tǒng)并進行網(wǎng)絡(luò)配置。
答:Linux安裝環(huán)境:CentOS 7.3, 官網(wǎng)http://www.centos.org/
為了簡化操作,使用三臺服務器作為集群節(jié)點,其中一臺為Master節(jié)點,兩臺為Slave節(jié)點。規(guī)劃集群節(jié)點IP。
對集群節(jié)點進行網(wǎng)絡(luò)配置:
?? ?(1)設(shè)置主機名
?? ?(2)修改/etc/hosts文件
?? ?(3)修改網(wǎng)絡(luò)配置
?? ?(4)重啟網(wǎng)絡(luò),并查看網(wǎng)絡(luò)IP地址
?? ?(5)關(guān)閉并停止NetworkManager服務

?? ?詳見《大數(shù)據(jù)技術(shù)與應用》第2章第6節(jié)
7.部署Linux集群、設(shè)置時間同步以及免密鑰SSH配置。
答:一、集群規(guī)劃
二、網(wǎng)絡(luò)配置
? ?(1)設(shè)置主機名
? ?(2)修改/etc/hosts文件
? ?(3)修改網(wǎng)絡(luò)配置
? ?(4)重啟網(wǎng)絡(luò),并查看網(wǎng)絡(luò)IP地址
? ?(5)關(guān)閉并停止Network Manager服務
? ? 三、安全配置
? ?(1)安全密碼控制
? ?(2)設(shè)置歷史記錄、退出自動清空歷史記錄等
? ?(3)設(shè)置閑置超時時間
? ?(4)設(shè)置Selinux
? ?(5)設(shè)置并停止firewalld服務
? ? 四、時間同步
? ?(1)Master節(jié)點時間同步安裝設(shè)置
? ?(2)Slave節(jié)點時間同步安裝設(shè)置
? ?(3)設(shè)置自動加載并重啟chrony服務
? ?(4)查看master節(jié)點時間同步信息
? ?(5)查看slaver節(jié)點時間同步信息
? ? 五、SSH登錄
? ?(1)安裝openssh,開啟sshd服務
? ?(2)以root用戶登錄master節(jié)點,生成SSH密鑰對
? ?(3)把含有公用密鑰文件信息復制到節(jié)點機上
? ?(4)使用SSH登錄節(jié)點機
? ? ? ? 詳見《大數(shù)據(jù)技術(shù)與應用》第2章第6節(jié)
第三章:
1.簡述Hadoop系統(tǒng)及其優(yōu)點。
答:Hadoop是一個能夠讓用戶輕松架構(gòu)和使用的分布式計算平臺,它主要有以下幾個優(yōu)點:
(1)高可靠性。
(2)高擴展性。
(3)高效性
(4)高容錯性。
詳見《大數(shù)據(jù)技術(shù)與應用》第3章第1節(jié)

2.簡述Hadoop原理及運行機制。
答:Hadoop的核心由3個子項目組成:Hadoop Common、HDFS、和MapReduce。?Hadoop Common包括文件系統(tǒng)(File System)、遠程過程調(diào)用協(xié)議(RPC)和數(shù)據(jù)串行化庫(Serialization Libraries)
詳見《大數(shù)據(jù)技術(shù)與應用》第3章第1節(jié)

3.簡述Hadoop技術(shù)生態(tài)系統(tǒng)。
答:Hadoop生態(tài)系統(tǒng)主要包括:HDFS、MapReduce、Spark、Storm、HBase、Hive、Pig、ZooKeeper、 Avro 、Sqoop、Ambari、HCatalog、Chukwa 、Flume、Mahout、Phoenix、Tez、Shark等, Hadoop開源技術(shù)生態(tài)系統(tǒng)如下圖所示。


圖 Hadoop開源技術(shù)生態(tài)系統(tǒng)
4. 學會JDK的安裝和配置。
答:參見《大數(shù)據(jù)技術(shù)與應用》第3章第3節(jié)

5.掌握Hadoop的安裝和配置。
答:參見《大數(shù)據(jù)技術(shù)與應用》第3章第3節(jié)
第四章
1.簡述 HDFS的體系架構(gòu)。
答:Hdfs架構(gòu)如下圖所示:

圖 HDFS架構(gòu)

2.簡述 HDFS讀數(shù)據(jù)的流程。?
答:詳細流程如下:
(1)首先HDFS的客戶端通過Distributed FileSystem(HDFS中API里的一個對象);
(2)通過Distributed FileSystem發(fā)送給NameNode請求,同時將用戶信息及文件名的信息等發(fā)送給NameNode,并返回給DistributedFileSystem,該文件包含的block所在的DataNode位置;
(3)HDFS客戶端通過FSDataInputStream按順序去讀取DataNode中的block信息(它會選擇負載最低的或離客戶端最近的一臺DataNode去讀block);
(4)FSDataInputStream按順序一個一個的讀,直到所有的block都讀取完畢;
(5)當讀取完畢后會將FSDataInputStream關(guān)閉。
HDFS讀數(shù)據(jù)的流程可如下圖所示:

圖 HDFS讀流程
3.簡述 HDFS寫數(shù)據(jù)的流程。?
答:詳細流程如下:
(1)首先HDFS的客戶端通過Distributed FileSystem(HDFS中API里的一個對象);
(2)通過Distributed FileSystem發(fā)送客戶端的請求給NameNode(NameNode主要是接受客戶端請求)并且會帶著文件要保存的位置、 文件名、操作的用戶名等信息一起發(fā)送給NameNode;
(3)NameNode會給客戶端返回了一個FSDataOutputStream,同時也會返回文件要寫入哪些DataNode上(負載較低的);
(4)通過FSDataOutputStream進行寫操作,在寫之前就做文件的拆分,將文件拆分成多個Block,第一個寫操作寫在負載比較低的DataNode上,并將這個block復制到其他的DataNode上;
(5)當所有的block副本復制完成后會反饋給FSDataOutputStream;
(6)當所有的block副本全都復制完成,就可以將FSDataOutputStream流關(guān)閉;
(7)通過Distributed FileSystem更新NameNode中的源數(shù)據(jù)信息。
HDFS寫數(shù)據(jù)的流程可如下圖所示:

圖 Hdfs寫流程
4.簡述 Block副本的存放策略。?
答:在大多數(shù)情況下,副本系數(shù)是3,HDFS的存放策略是將一個副本存放在本地機架的 節(jié)點上,一個副本放在同一機架的另一個節(jié)點上,最后一個副本放在不同機架的節(jié)點上。
詳細請參見《大數(shù)據(jù)技術(shù)與應用》4.1.4

5.編寫程序?qū)崿F(xiàn)對 HDFS文件讀寫等。
答:請參見《大數(shù)據(jù)技術(shù)與應用》第4章第2節(jié)

第五章
1.簡述 MapReduce架構(gòu)。?
答:MapReduce采用Master/Slave的架構(gòu),它主要由以下4個部分組成:
? 1)Client
? 2)JobTracker
? 3)TaskTracker:
? 4)Task

其架構(gòu)圖如圖所示:

圖 The Hadoop Ecosystem

2.簡述 MapReduce的工作原理。?
答:MapReduce框架的流程可以分為兩個階段來描述:
1.Map階段
(1)InputFormat根據(jù)輸入文件產(chǎn)生鍵值對,并傳送到Mapper類的map函數(shù)中;
(2)Map輸出鍵值對到一個沒有排序的緩沖內(nèi)存中;
(3)當緩沖內(nèi)存達到給定值或者map任務完成,在緩沖內(nèi)存中的鍵值對就會被排序,然后輸出到磁盤中的溢出文件;
(4)如果有多個溢出文件,那么就會整合這些文件到一個文件中,且是排序的;
(5)這些排序過的、在溢出文件中的鍵值對會等待Reducer的獲取。

2.Reduce階段
(1)Reducer獲取Mapper的記錄,然后產(chǎn)生另外的鍵值對,最后輸出到HDFS中;
(2)Shuffle:相同的key被傳送到同一個的Reducer中;
(3)當有一個Mapper完成后,Reducer就開始獲取相關(guān)數(shù)據(jù),所有的溢出文件會被排到一個內(nèi)存緩沖區(qū)中;
(4)當內(nèi)存緩沖區(qū)滿了后,就會產(chǎn)生溢出文件到本地磁盤;
(5)當Reducer所有相關(guān)的數(shù)據(jù)都傳輸完成后,所有溢出文件就會被整合和排序;
(6)Reducer中的reduce方法針對每個key調(diào)用一次;
(7)Reducer的輸出到HDFS。

3.簡述 MapReduce的工作機制。?
答:
一、MapReduce運行圖如圖所示:


圖 Write-Ahead-Log

二、運行解析:
1.作業(yè)的提交
2.作業(yè)的初始化
3.作業(yè)的分配
4.任務的執(zhí)行
5.進度和狀態(tài)的更新
6.作業(yè)的完成
三、失敗解析:
1.任務失敗
2.tasktracker失敗
3.jobtracker失敗

4.編寫 MapReduceWordCount。?
答:參見《大數(shù)據(jù)技術(shù)與應用》第5章第2節(jié)

5.實現(xiàn)MapReduce倒排索引編程
答:參見《大數(shù)據(jù)技術(shù)與應用》第5章第2節(jié)

第六章
1、簡述Hbase數(shù)據(jù)庫
答:
(1)HBase(Hadoop Database)是一個高可靠性、高性能、面向列、可伸縮的分布式存儲系統(tǒng),利用HBase技術(shù)可在廉價PC Server上搭建起大規(guī)模結(jié)構(gòu)化存儲集群。
(2)HBase利用Hadoop HDFS作為其文件存儲系統(tǒng),HBase利用Hadoop MapReduce來處理HBase中的海量數(shù)據(jù),HBase利用Zookeeper作為協(xié)同服務。
(3)HBase采用Master/Slave架構(gòu)搭建集群,它隸屬于Hadoop生態(tài)系統(tǒng),由Client、HMaster、HRegionServer、ZooKeeper等組成。
(4)HBase是基于列式存儲的
(5)HBase以表的形式存儲數(shù)據(jù)

2、簡述HBase過濾器的工作過程
答:?
如下圖描述了過濾器怎樣在客戶端進行配置,怎樣在網(wǎng)絡(luò)傳輸中被序列化,怎樣在服務端執(zhí)行。

圖 過濾器的工作過程
3、學會HBase集群部署
答:參見《大數(shù)據(jù)技術(shù)與應用》第6章第2節(jié)

4、掌握Hbase Java API編程
答:參見《大數(shù)據(jù)技術(shù)與應用》第6章第5節(jié)

5、掌握HBase過濾器編程
答:參見《大數(shù)據(jù)技術(shù)與應用》第6章第5節(jié)

第七章
1、統(tǒng)一資源管理和調(diào)度平臺的優(yōu)點
答:
(1)支持多種計算框架HBase利用Hadoop HDFS作為其文件存儲系統(tǒng),HBase利用Hadoop MapReduce來處理HBase中的海量數(shù)據(jù),HBase利用Zookeeper作為協(xié)同服務。
(2)擴展性
(3)容錯性
(4) 高資源利用率
相對于第一代Hadoop,YARN把Hadoop中的資源控制、任務調(diào)度和具體任務計算的JobTracker/TaskTracker架構(gòu),變?yōu)镽esourceManager、ApplicationMaster、NodeManager、Container、四個功能組件,讓資源調(diào)度和任務調(diào)度更加細粒化。

2、簡述Yarn架構(gòu)及工作流程
答:
總的來說,YARN的工作流程分為以下幾個步驟:
1)用戶向YARN中提交應用程序,其中包括ApplicationMaster程序、啟動ApplicationMaster的命令、用戶程序等。
2)ResourceManager為該應用程序分配第一個Container,并與對應的Node-Manager通信,要求它在這個Container中啟動應用程序的ApplicationMaster。
3)ApplicationMaster首先向ResourceManager注冊,這樣用戶可以直接通過ResourceManage查看應用程序的運行狀態(tài),然后它將為各個任務申請資源,并監(jiān)控它的運行狀態(tài),直到運行結(jié)束,即重復步驟4)到7)。
4)ApplicationMaster采用輪詢的方式通過RPC協(xié)議向ResourceManager申請和領(lǐng)取資源。
5)一旦ApplicationMaster申請到資源后,便與對應的NodeManager通信,要求它啟動任務。
6)NodeManager為任務設(shè)置好運行環(huán)境(包括環(huán)境變量、JAR包、二進制程序等)后,將任務啟動命令寫到一個腳本中,并通過運行該腳本啟動任務。
7)各個任務通過某個RPC協(xié)議向ApplicationMaster匯報自己的狀態(tài)和進度,以讓ApplicationMaster隨時掌握各個任務的運行狀態(tài),從而可以在任務失敗時重新啟動任務。在應用程序運行過程中,用戶可隨時通過RPC向ApplicationMaster查詢應用程序的當前運行狀態(tài)。
8)應用程序運行完成后,ApplicationMaster向ResourceManager注銷并關(guān)閉自己。YARN的工作流程
如圖所示:


YARN的工作流程圖
3、學會YARN Shell的操作命令
答:參見《大數(shù)據(jù)技術(shù)與應用》第7章第3節(jié)

第八章
1. 簡述Spark開源框架及其特點。?
答:
Spark架構(gòu)采用了分布式計算中的Master-Slave模型,Spark架構(gòu)如下圖所示:

圖8-2 Spark架構(gòu)圖

2. 簡述Spark生態(tài)系統(tǒng)及其主要組件。?
答:
Spark主要包括Spark Core和在Spark Core基礎(chǔ)之上建立的應用框架Spark SQL、Spark Streaming、MLlib和GraphX。如下圖所示。

圖 Spark生態(tài)系統(tǒng)

除了這些庫以外,還有一些其他的庫,如BlinkDB和Tachyon。此外,還有一些用于與其他產(chǎn)品集成的適配器,如Cassandra(Spark Cassandra連接器)和R(SparkR)。

3. 簡述RDD的基本工作原理和特性。
答:參見《大數(shù)據(jù)技術(shù)與應用》第8章第2節(jié)

4. 使用蒙特卡羅方法計算圓周率π值。
答:
step1:首先進入spark安裝目錄
?? ?cd /opt/spark

Step2:提交任務命令
?? ?bin/spark-submit –class org.apache.spark.examples.SparkPi?
–master spark://master:7077?
–executor-memory 1G?
–total-executor-cores 1?
examples/jars/spark-examples_2.11-2.0.2.jar?
10

注:10是計算的次數(shù)
輸出:

附:
1.Python源碼:
from __future__ import print_function
import sys
from random import random
from operator import add
from pyspark.sql import SparkSession

if __name__ == "__main__":
spark=SparkSession\
? ? ? ? .builder\
? ? ? ? .appName("PythonPi")\
? ? ? ? .getOrCreate() ? ??
partitions = int(sys.argv[1]) if len(sys.argv) > 1 else 2 ? ? ? ?
n = 100000 * partitions ? ?
print(n)

? ? ?def f(_):
? ? ? ? x = random() * 2 – 1
? ? ? ? y = random() * 2 – 1
? ? ? ? return 1 if x ** 2 + y ** 2 < 1 else 0

? ? count = spark.sparkContext.parallelize(range(1, n + 1), partitions).map(f).reduce(add) ? ?print(count)
? ? print("Pi is roughly %f" % (4.0 * count / n))
? ? spark.stop()
1.java源碼:
public final class JavaSparkPi {
public static void main(String[] args) throws Exception {
int slices = (args.length == 1) ? Integer.parseInt(args[0]) : 2;
int n = 100000 * slices;
List<Integer> l = new ArrayList<Integer>(n);
for (int i = 0; i < n; i++) { l.add(i); }
SparkConf sparkConf = new SparkConf().setAppName("JavaSparkPi");
JavaSparkContext jsc = new JavaSparkContext(sparkConf);
JavaRDD<Integer> dataSet = jsc.parallelize(l, slices);
int count = dataSet.map(new Function<Integer, Integer>() {
? ? @Override
? ? ?public Integer call(Integer integer) {
? ? ? ? ?double x = Math.random() * 2 - 1;
? ? ? ? ?double y = Math.random() * 2 - 1;
? ? ? ? ?return (x * x + y * y < 1) ? 1 : 0; } }).reduce(new Function2<Integer, Integer, Integer>() {
? ? ?@Override
? ? ?public Integer call(Integer integer, Integer integer2) {
? ? ? ? ?return integer + integer2; ? ? } });
System.out.println("Pi is roughly " + 4.0 * count / n); jsc.stop();
?}
}

5. 使用Spark實現(xiàn)詞頻統(tǒng)計和相關(guān)系數(shù)計算
答:參見《大數(shù)據(jù)技術(shù)與應用》第8章第3節(jié)

第九章
1.簡述機器學習的基本概念。
答:
機器學習是一個龐大的家族體系,涉及眾多算法、任務和學習理論。
詳見《大數(shù)據(jù)技術(shù)與應用》第9章第1節(jié)?

2.簡述機器學習的分類。
答:?
?? ?(1)按任務類型分,機器學習模型可以分為回歸模型、分類模型和結(jié)構(gòu)化學習模型。
?? ?(2)從方法的角度分,可以分為線性模型和非線性模型,非線性模型又可以分為傳統(tǒng)機器學習模型(SVM,KNN,決策樹等)和深度學習模型。
?? ?(3)按照學習理論分,機器學習模型可以分為有監(jiān)督學習、半監(jiān)督學習、無監(jiān)督學習、遷移學習和強化學習。

3.MLlib的數(shù)據(jù)類型和API函數(shù)有哪些? 如何使用?
答:
MLlib提供了以下數(shù)據(jù)類型:
? (1)Local vector
? (2)Labeled point
? (3)Local matrix
? (4)RowMatrix
? (5)IndexedRowMatrix
? (6)CoordinateMatrix
? (7)BlockMatrix
MLlib提供了以下API:
? (1)基于 DataFrame的 API
? (2)基于 RDD的 API
詳見《大數(shù)據(jù)技術(shù)與應用》第9章第2節(jié)

4. 3種鳶尾花數(shù)據(jù)(萼片寬度、萼片長度、 花瓣寬度、花瓣長度)為: (4.9,3.0,1.4,0.2)、(5.0,3.6,1.4,0.2)、(5.2,2.7,3.9,1.4)、(6.1,2.9,4.7,1.4)、(7.7,2.6,6.9,2.3)、(6.6,2.9,4.6,1.3)、(4.4,3.2,1.3,0.2)、(5.7,2.8,4.1,1.3),計算其聚類中心并將數(shù)據(jù)進行分類。
答:參見《大數(shù)據(jù)技術(shù)與應用》第9章第3節(jié)?

5.使用決策樹算法對鳶尾花數(shù)據(jù)進行模型訓練和預測。
答:參見《大數(shù)據(jù)技術(shù)與應用》第9章第3節(jié)?

第十章
1.簡述Hive的組成及執(zhí)行流程。
答:
Hive的主要模塊以及與Hadoop的交互工作如下圖所示:

圖 Hive組成模塊
下圖顯示Hive與Hadoop交互的主要組件,這些組件如下:
(1)UI——包括Shell命令、JDBC/ODBC和WebUi,其中最常用的是shell這個客戶端方式對Hive進行相應操作。
(2)Driver——Hive解析器的核心功能就是根據(jù)用戶編寫的SQL語法匹配出相應的MapReduce模板,形成對應的MapReduce job進行執(zhí)行。
(3)Compiler——將HiveQL編譯成有向無環(huán)圖(Directed Acyclic Graph,DAG)形式的MapReduce任務。
(4)Metastore——Hive將表中的元數(shù)據(jù)信息存儲在數(shù)據(jù)庫中,如derby、MySQL,Hive中的元數(shù)據(jù)信息包括表的名字、表的列和分區(qū)、表的屬性(是否為外部表等)、表的數(shù)據(jù)所在的目錄等。編譯器Compiler根據(jù)用戶任務去MetaStore中獲取需要的Hive的元數(shù)據(jù)信息。
(5)Execution Engine——執(zhí)行編譯器產(chǎn)生的執(zhí)行計劃,該計劃是一個有向無環(huán)圖,執(zhí)行引擎管理這些計劃的不同階段之間的依賴關(guān)系,并在相關(guān)組件上執(zhí)行這些階段。

圖 Hive執(zhí)行流程

2.比較ARRAY、MAP和STRUCT這3種數(shù)據(jù)類型的區(qū)別
答:
復雜數(shù)據(jù)類型包括ARRAY、MAP、STRUCT,這些復雜數(shù)據(jù)類型是由基礎(chǔ)類型組成的,如下表所示:
數(shù)據(jù)類型
描述
例子

ARRAY
一組有序字段。字段的類型必須相同。例如:數(shù)組A的值為[?1,?2?],則第2個元素為A[1]。
ARRAY(?1,?2?)

MAP
一組無序的鍵/值對。鍵的類型必須是原子的,值可以是任何類型,同一個映射的鍵的類型必須相同,值得類型也必須相同。例如:MAP數(shù)據(jù)M的鍵-值對?&apos;a&apos;?->?1,?&apos;b&apos;?->?2,則&apos;b&apos;的值為M[?&apos;b&apos;?]。
MAP(?‘a(chǎn)’,?1,?‘b’,?2?)

STRUCT
一組命名的字段。字段類型可以不同。例如:name為STRUCT{?first?STRING,?last?STRING?},則使用name.last引用name中l(wèi)ast的值。
STRUCT(?&apos;a&apos;,?1,?2?)

表 復雜數(shù)據(jù)類型

3.舉例Hive文件格式的JSON 表示
答:
教材中的數(shù)據(jù)以json形式表示
{
"name": "王可塘",
"salary": 12000.0,
"degree": ["學士", "碩士"],
"dues": {
"公積金": .2,
"保險金": ?.05,
"養(yǎng)老金": ?.1
},
"address":{
"province": "廣東省",
"city": "汕尾市",
"street": "蓮塘街36號.",
"zip": ?516600}?
}

4.使用HSQL進行詞頻統(tǒng)計。?
答:參考《大數(shù)據(jù)技術(shù)與應用》第十章第5節(jié)

5.從騰訊證券下載股市行情,使用Hive進行分析。
答:參見《大數(shù)據(jù)技術(shù)與應用》第十章第6節(jié)

第十一章
1.簡述ZooKeeper協(xié)調(diào)服務。
答:
分布式協(xié)調(diào)服務有Paxos、 ZooKeeper、Chubby和Fourinone等。

2.簡述ZAB協(xié)議。
答:
?(1)所有的事務請求必須一個全局唯一的服務器 ? (Leader)來協(xié)調(diào)處理,集群其余的服務器稱為follower服務器。
?(2) ZAB協(xié)議分為四個階段:階段0為leader選 ?舉,階段1為發(fā)現(xiàn),階段2為同步, ? ?階段3為廣播。而實際實現(xiàn)時將發(fā)現(xiàn)及同步階段合并為一個恢復階段。
?(3) ZAB協(xié)議分兩大塊:恢復和廣播。

3.簡述ZooKeeper事件監(jiān)聽器工作流程。
答:
ZooKeeper的Watcher機制主要包括客戶端線程、客戶端WatchManager和ZooKeeper服務器三部分。其工作流程:客戶端在向ZooKeeper服務器注冊Watcher的同時,會將Watcher對象存儲在客戶端的WatchManager中。當ZooKeeper服務器端觸發(fā)Watcher事件后,會向客戶端發(fā)送通知,客戶端線程從WatchManager中取出對應的Watcher對象執(zhí)行回調(diào)邏輯,如下圖所示。

圖 Watcher工作流程

4.簡述ZooKeeper如何解決YARN中ResourceManager單點故障問題。
答:
為了解決 ResourceManager單點問題,YARN 設(shè)計了一套 Active/Standby模式的 ResourceManagerHA架構(gòu),如下圖所示:

圖YARN HA架構(gòu)

5.編寫程序?qū)崿F(xiàn)ZNode的增加、刪除等。
答:參見《大數(shù)據(jù)技術(shù)與應用》第11章第5節(jié)

第十二章
1.簡述大數(shù)據(jù)分析平臺的原理及功能。
答:
功能:
(1)流量分析 、
(2)經(jīng)營狀況分析、
(3)大數(shù)據(jù)可視化系統(tǒng)

醫(yī)藥大數(shù)據(jù)分析平臺方案主要分為三部分:數(shù)據(jù)采集子系統(tǒng)、數(shù)據(jù)分析子系統(tǒng)和數(shù)據(jù)報表呈現(xiàn)子系統(tǒng)。詳情如下表所示:

子系統(tǒng)
系統(tǒng)定義
交互接口

大數(shù)據(jù)采集子系統(tǒng)
系統(tǒng)以離線批處理方式,推送采集結(jié)果數(shù)據(jù)給大數(shù)據(jù)分析平臺。
(1)采集大數(shù)據(jù)接收的格式,(2)大數(shù)據(jù)接口定義

大數(shù)據(jù)分析子系統(tǒng)
接收采集系統(tǒng)的數(shù)據(jù),客戶行為分析,不同藥品的精準預測算法,藥品推薦算法等特色功能。生成分析結(jié)果數(shù)據(jù)
(1)大數(shù)據(jù)的存儲,(2)客戶行為模型,(3)流量分析模型,(4)統(tǒng)計分析模型

大數(shù)據(jù)報表呈現(xiàn)子系統(tǒng)
采用Web的方案,進行大數(shù)據(jù)分析結(jié)果的呈現(xiàn),分析結(jié)果以報表、圖表的方式呈現(xiàn)給醫(yī)藥電子商務商家。
以交互接口、調(diào)用報表數(shù)據(jù)的等方式獲取需要的結(jié)果。

圖 系統(tǒng)組成

醫(yī)藥大數(shù)改系統(tǒng)的子系統(tǒng)間的協(xié)作方式如下圖所示。

圖 系統(tǒng)協(xié)作

該系統(tǒng)的網(wǎng)絡(luò)拓撲圖如下圖所示。醫(yī)藥電商系統(tǒng)以批處理方式,推送采集數(shù)據(jù)給大數(shù)據(jù)分析平臺,存儲到Hadoop集群,大數(shù)據(jù)報表服務器通過交換機和集群相連。
圖 系統(tǒng)網(wǎng)絡(luò)拓撲

2.簡述大數(shù)據(jù)分析平臺的功能。
答:
功能:
? ? (1)流量分析?
? ? (2)經(jīng)營狀況分析
? ? (3)大數(shù)據(jù)可視化系統(tǒng)

3.簡述大數(shù)據(jù)分析平臺的系統(tǒng)組成。
答:
醫(yī)藥大數(shù)據(jù)分析平臺方案主要分為三部分:數(shù)據(jù)采集子系統(tǒng)、數(shù)據(jù)分析子系統(tǒng)和數(shù)據(jù)報表呈現(xiàn)子系統(tǒng)。詳情如下表所示:

子系統(tǒng)
系統(tǒng)定義
交互接口

大數(shù)據(jù)采集子系統(tǒng)
系統(tǒng)以離線批處理方式,推送采集結(jié)果數(shù)據(jù)給大數(shù)據(jù)分析平臺。
(1)采集大數(shù)據(jù)接收的格式,(2)大數(shù)據(jù)接口定義

大數(shù)據(jù)分析子系統(tǒng)
接收采集系統(tǒng)的數(shù)據(jù),客戶行為分析,不同藥品的精準預測算法,藥品推薦算法等特色功能。生成分析結(jié)果數(shù)據(jù)
(1)大數(shù)據(jù)的存儲,(2)客戶行為模型,(3)流量分析模型,(4)統(tǒng)計分析模型

大數(shù)據(jù)報表呈現(xiàn)子系統(tǒng)
采用Web的方案,進行大數(shù)據(jù)分析結(jié)果的呈現(xiàn),分析結(jié)果以報表、圖表的方式呈現(xiàn)給醫(yī)藥電子商務商家。
以交互接口、調(diào)用報表數(shù)據(jù)的等方式獲取需要的結(jié)果。

表 系統(tǒng)組成
4.簡述大數(shù)據(jù)分析平臺涉及的關(guān)鍵技術(shù)。
答:
? Hadoop作為分布式計算平臺。
? Hbase作為分布式數(shù)據(jù)存儲數(shù)據(jù)庫。
? Bootstrap作為頁面搭建框架。
? jQuery進行后臺交互操作。
? EChart實現(xiàn)數(shù)據(jù)可視化。
5.簡述大數(shù)據(jù)分析平臺的存儲方式。
答:
結(jié)合醫(yī)藥電商數(shù)據(jù)的具體特點和上述的設(shè)計及優(yōu)化策略,為了滿足商家用戶進行流量分析、銷售分析、藥品推薦等需求,從而設(shè)計流量數(shù)據(jù)表、訂單數(shù)據(jù)表、會員評價表,具體內(nèi)容如下表所示:
? 1.流量數(shù)據(jù)表
RowKey
列族 cf

<platformtype><clicktime><userId>
sessionId
userId
trackUid
userAgent
referer


? 2.訂單數(shù)據(jù)表
RowKey
列族 cf

<orderId><userId>
orderId
userId
orderNum
Payment
totalAmount
isCod
orderStatus


具體請參見《大數(shù)據(jù)技術(shù)與應用》第12章第7節(jié)

?

總結(jié)

以上是生活随笔為你收集整理的大数据原理和应用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。