大数据原理和应用
習題答案:
第一章:
1. 簡述大數據的概念。
答:自2012年以來,“大數據”一詞越來越引起人們的關注。但是,目前為止,在學術研究領域和產業界中,大數據并沒有一個標準的定義。在維克托·邁爾-舍恩伯格編寫的《大數據時代》一書中大數據指不用隨機分析法(抽樣調查)這樣捷徑,而采用所有數據進行分析處理。而麥肯錫全球研究所則定義大數據為一種規模大到在獲取、存儲、管理、分析方面大大超出了傳統數據庫軟件工具能力范圍的數據集合,具有海量的數據規模、快速的數據流轉、多樣的數據類型和價值密度低四大特征。通常來說,大數據是指數據量超過一定大小,無法用常規的軟件在規定的時間范圍內進行抓取、管理和處理的數據集合。
2. 簡述大數據的基本特征。
答:
大數據的主要特征可用“5V+1C”來進行概括,分別是:數據量大(Volume)、數據類型多(Variety)、數據時效性強(Velocity)、價值密度低(Value)、準確性高(Veracity)、復雜性高(Complexity),如下圖所示。
?
圖 大數據特征圖
3.簡述大數據的分析處理過程。
答:
大數據的處理流程基本可劃分為數據采集、數據處理與集成、數據分析和數據解釋4個階段。即經數據源獲取的數據,因為其數據結構不同(包括結構、半結構和非結構數據),用特殊方法進行數據處理和集成,將其轉變為統一標準的數據格式方便以后對其進行處理;然后用合適的數據分析方法將這些數據進行處理分析,并將分析的結果利用可視化等技術展現給用戶,這就是整個大數據處理的流程如下圖所示。
圖 大數據的處理流程
詳細的分析處理過程參見《大數據技術與應用》第5章第2節
4. 簡述大數據的存儲方式。
答:
存儲系統作為數據中心最核心的數據基礎,不再僅是傳統分散的、單一的底層設備。除了要具備高性能、高安全、高可靠等基于大數據應用需求,“應用定義存儲”概念被提出。主要有以下幾種存儲方式:
1、分布式系統?
2、NoSQL數據庫?
3、云數據庫?
4、大數據存儲技術路線?
?? ??? ?1) 采用MPP架構的新型數據庫集群?
?? ??? ?2) 基于Hadoop的技術擴展和封裝?
?? ??? ?3) 大數據一體機
5.簡述大數據的商業價值和社會價值。
答:?
商業價值:?
1.對顧客群體細分,然后對每個群體量體裁衣般的采取獨特的行動。?
2. 運用大數據模擬實境,發掘新的需求和提高利潤。
3. 提高大數據成果在各相關部門的分享程度,提高企業決策能力。
4. 進行商業模式、產品和服務的創新。
社會價值:?
1.大數據可以為個人提供個性化的醫療服務。
2.大數據可以提供個性化教育。在大數據的支持下,教育將呈現另外?? ??? ?的特征:彈性學制、個性化輔導、社區和家庭學習。
3.大數據的誕生讓社會安全管理更為井然有序。
4.大數據的發展帶動了社會上各行各業的發展。?
6.以某一行業為例,簡述大數據的應用。
答:參見《大數據技術與應用》 第1章第4節
第二章:
1.簡述大數據集群系統。
答:集群技術是指通過高速通信網絡將一組相互獨立的計算機聯系在一起,組成一個計算機系統,該系統中每一臺計算機都是一個獨立的服務器,運行各自的進程,它們相互之間可以通信,既可以看作是一個個單一的系統,也能夠協同起來為用戶提供服務。對網絡用戶來講,后端就像是一個單一的系統,協同向用戶提供系統資源、系統服務,通過網絡連接組合成一個組合來共同完一個任務。Hadoop 分布式集群是為了對海量的非結構化數據進行存儲和分析而設計的一種特定的集群。其本質上是一種計算集群。
詳見《大數據技術與應用》第2章第1節
2.簡述集群系統的分類。
答:集群分為同構與異構兩種。而按功能和結構可以分成以下幾類。
?(1)高可用性集群。
?(2)負載均衡集群。
?(3)高性能計算集群。
?(4)網格計算。
3.簡述Linux操作系統的特性。
答:
Linux操作系統是一個多用戶,多任務,豐富的網絡功能,它不僅有可靠的系統安全,而且良好的可移植性,具有標準的兼容性,良好的用戶界面,出色的速度性能,最為重要的是開源,CentOS主要有以下特點:
? ? (1)主流:目前的Linux操作系統主要應用于生產環境,企業級主流Linux系統仍舊是RedHat或者CentOS。
? ? (2)免費:RedHat 和CentOS差別不大,基于Red Hat Linux 提供的可自由使用源代碼的企業CentOS是一個Linux發行版本。
? ? (3)更新方便:CentOS獨有的yum命令支持在線升級,可以即時更新系統,不像RedHat 那樣需要花錢購買支持服務。
4.簡述計算機虛擬化技術以及常見的虛擬化軟件。
答:在計算機中,虛擬化(Virtualization)是一種資源管理技術,是將計算機的各種實體資源,如服務器、網絡、內存及存儲等,予以抽象、轉換后呈現出來,打破實體結構間的不可分割的障礙,使用戶可以比原本的組態更好的方式來應用這些資源。這些資源的新虛擬部分是不受現有資源的架設方式,地域或物理組態所限制。一般所指的虛擬化資源包括計算能力和資料存儲。
? ? 常見的虛擬化軟件有VirtualBox、VMware Workstation、KVM。
5.簡述大數據集群技術的架構。
答:一般來說,大數據集群的構架,主要分為硬件資源層、OS 層、基礎設施管理層、文件系統層、大數據集群層和大數據應用層,如下圖所示。
圖 大數據集群的架構
詳見《大數據技術與應用》第2章第5節
6.安裝Linux系統并進行網絡配置。
答:Linux安裝環境:CentOS 7.3, 官網http://www.centos.org/
為了簡化操作,使用三臺服務器作為集群節點,其中一臺為Master節點,兩臺為Slave節點。規劃集群節點IP。
對集群節點進行網絡配置:
?? ?(1)設置主機名
?? ?(2)修改/etc/hosts文件
?? ?(3)修改網絡配置
?? ?(4)重啟網絡,并查看網絡IP地址
?? ?(5)關閉并停止NetworkManager服務
?? ?詳見《大數據技術與應用》第2章第6節
7.部署Linux集群、設置時間同步以及免密鑰SSH配置。
答:一、集群規劃
二、網絡配置
? ?(1)設置主機名
? ?(2)修改/etc/hosts文件
? ?(3)修改網絡配置
? ?(4)重啟網絡,并查看網絡IP地址
? ?(5)關閉并停止Network Manager服務
? ? 三、安全配置
? ?(1)安全密碼控制
? ?(2)設置歷史記錄、退出自動清空歷史記錄等
? ?(3)設置閑置超時時間
? ?(4)設置Selinux
? ?(5)設置并停止firewalld服務
? ? 四、時間同步
? ?(1)Master節點時間同步安裝設置
? ?(2)Slave節點時間同步安裝設置
? ?(3)設置自動加載并重啟chrony服務
? ?(4)查看master節點時間同步信息
? ?(5)查看slaver節點時間同步信息
? ? 五、SSH登錄
? ?(1)安裝openssh,開啟sshd服務
? ?(2)以root用戶登錄master節點,生成SSH密鑰對
? ?(3)把含有公用密鑰文件信息復制到節點機上
? ?(4)使用SSH登錄節點機
? ? ? ? 詳見《大數據技術與應用》第2章第6節
第三章:
1.簡述Hadoop系統及其優點。
答:Hadoop是一個能夠讓用戶輕松架構和使用的分布式計算平臺,它主要有以下幾個優點:
(1)高可靠性。
(2)高擴展性。
(3)高效性
(4)高容錯性。
詳見《大數據技術與應用》第3章第1節
2.簡述Hadoop原理及運行機制。
答:Hadoop的核心由3個子項目組成:Hadoop Common、HDFS、和MapReduce。?Hadoop Common包括文件系統(File System)、遠程過程調用協議(RPC)和數據串行化庫(Serialization Libraries)
詳見《大數據技術與應用》第3章第1節
3.簡述Hadoop技術生態系統。
答:Hadoop生態系統主要包括:HDFS、MapReduce、Spark、Storm、HBase、Hive、Pig、ZooKeeper、 Avro 、Sqoop、Ambari、HCatalog、Chukwa 、Flume、Mahout、Phoenix、Tez、Shark等, Hadoop開源技術生態系統如下圖所示。
圖 Hadoop開源技術生態系統
4. 學會JDK的安裝和配置。
答:參見《大數據技術與應用》第3章第3節
5.掌握Hadoop的安裝和配置。
答:參見《大數據技術與應用》第3章第3節
第四章
1.簡述 HDFS的體系架構。
答:Hdfs架構如下圖所示:
圖 HDFS架構
2.簡述 HDFS讀數據的流程。?
答:詳細流程如下:
(1)首先HDFS的客戶端通過Distributed FileSystem(HDFS中API里的一個對象);
(2)通過Distributed FileSystem發送給NameNode請求,同時將用戶信息及文件名的信息等發送給NameNode,并返回給DistributedFileSystem,該文件包含的block所在的DataNode位置;
(3)HDFS客戶端通過FSDataInputStream按順序去讀取DataNode中的block信息(它會選擇負載最低的或離客戶端最近的一臺DataNode去讀block);
(4)FSDataInputStream按順序一個一個的讀,直到所有的block都讀取完畢;
(5)當讀取完畢后會將FSDataInputStream關閉。
HDFS讀數據的流程可如下圖所示:
圖 HDFS讀流程
3.簡述 HDFS寫數據的流程。?
答:詳細流程如下:
(1)首先HDFS的客戶端通過Distributed FileSystem(HDFS中API里的一個對象);
(2)通過Distributed FileSystem發送客戶端的請求給NameNode(NameNode主要是接受客戶端請求)并且會帶著文件要保存的位置、 文件名、操作的用戶名等信息一起發送給NameNode;
(3)NameNode會給客戶端返回了一個FSDataOutputStream,同時也會返回文件要寫入哪些DataNode上(負載較低的);
(4)通過FSDataOutputStream進行寫操作,在寫之前就做文件的拆分,將文件拆分成多個Block,第一個寫操作寫在負載比較低的DataNode上,并將這個block復制到其他的DataNode上;
(5)當所有的block副本復制完成后會反饋給FSDataOutputStream;
(6)當所有的block副本全都復制完成,就可以將FSDataOutputStream流關閉;
(7)通過Distributed FileSystem更新NameNode中的源數據信息。
HDFS寫數據的流程可如下圖所示:
圖 Hdfs寫流程
4.簡述 Block副本的存放策略。?
答:在大多數情況下,副本系數是3,HDFS的存放策略是將一個副本存放在本地機架的 節點上,一個副本放在同一機架的另一個節點上,最后一個副本放在不同機架的節點上。
詳細請參見《大數據技術與應用》4.1.4
5.編寫程序實現對 HDFS文件讀寫等。
答:請參見《大數據技術與應用》第4章第2節
第五章
1.簡述 MapReduce架構。?
答:MapReduce采用Master/Slave的架構,它主要由以下4個部分組成:
? 1)Client
? 2)JobTracker
? 3)TaskTracker:
? 4)Task
其架構圖如圖所示:
圖 The Hadoop Ecosystem
2.簡述 MapReduce的工作原理。?
答:MapReduce框架的流程可以分為兩個階段來描述:
1.Map階段
(1)InputFormat根據輸入文件產生鍵值對,并傳送到Mapper類的map函數中;
(2)Map輸出鍵值對到一個沒有排序的緩沖內存中;
(3)當緩沖內存達到給定值或者map任務完成,在緩沖內存中的鍵值對就會被排序,然后輸出到磁盤中的溢出文件;
(4)如果有多個溢出文件,那么就會整合這些文件到一個文件中,且是排序的;
(5)這些排序過的、在溢出文件中的鍵值對會等待Reducer的獲取。
2.Reduce階段
(1)Reducer獲取Mapper的記錄,然后產生另外的鍵值對,最后輸出到HDFS中;
(2)Shuffle:相同的key被傳送到同一個的Reducer中;
(3)當有一個Mapper完成后,Reducer就開始獲取相關數據,所有的溢出文件會被排到一個內存緩沖區中;
(4)當內存緩沖區滿了后,就會產生溢出文件到本地磁盤;
(5)當Reducer所有相關的數據都傳輸完成后,所有溢出文件就會被整合和排序;
(6)Reducer中的reduce方法針對每個key調用一次;
(7)Reducer的輸出到HDFS。
3.簡述 MapReduce的工作機制。?
答:
一、MapReduce運行圖如圖所示:
圖 Write-Ahead-Log
二、運行解析:
1.作業的提交
2.作業的初始化
3.作業的分配
4.任務的執行
5.進度和狀態的更新
6.作業的完成
三、失敗解析:
1.任務失敗
2.tasktracker失敗
3.jobtracker失敗
4.編寫 MapReduceWordCount。?
答:參見《大數據技術與應用》第5章第2節
5.實現MapReduce倒排索引編程
答:參見《大數據技術與應用》第5章第2節
第六章
1、簡述Hbase數據庫
答:
(1)HBase(Hadoop Database)是一個高可靠性、高性能、面向列、可伸縮的分布式存儲系統,利用HBase技術可在廉價PC Server上搭建起大規模結構化存儲集群。
(2)HBase利用Hadoop HDFS作為其文件存儲系統,HBase利用Hadoop MapReduce來處理HBase中的海量數據,HBase利用Zookeeper作為協同服務。
(3)HBase采用Master/Slave架構搭建集群,它隸屬于Hadoop生態系統,由Client、HMaster、HRegionServer、ZooKeeper等組成。
(4)HBase是基于列式存儲的
(5)HBase以表的形式存儲數據
2、簡述HBase過濾器的工作過程
答:?
如下圖描述了過濾器怎樣在客戶端進行配置,怎樣在網絡傳輸中被序列化,怎樣在服務端執行。
圖 過濾器的工作過程
3、學會HBase集群部署
答:參見《大數據技術與應用》第6章第2節
4、掌握Hbase Java API編程
答:參見《大數據技術與應用》第6章第5節
5、掌握HBase過濾器編程
答:參見《大數據技術與應用》第6章第5節
第七章
1、統一資源管理和調度平臺的優點
答:
(1)支持多種計算框架HBase利用Hadoop HDFS作為其文件存儲系統,HBase利用Hadoop MapReduce來處理HBase中的海量數據,HBase利用Zookeeper作為協同服務。
(2)擴展性
(3)容錯性
(4) 高資源利用率
相對于第一代Hadoop,YARN把Hadoop中的資源控制、任務調度和具體任務計算的JobTracker/TaskTracker架構,變為ResourceManager、ApplicationMaster、NodeManager、Container、四個功能組件,讓資源調度和任務調度更加細粒化。
2、簡述Yarn架構及工作流程
答:
總的來說,YARN的工作流程分為以下幾個步驟:
1)用戶向YARN中提交應用程序,其中包括ApplicationMaster程序、啟動ApplicationMaster的命令、用戶程序等。
2)ResourceManager為該應用程序分配第一個Container,并與對應的Node-Manager通信,要求它在這個Container中啟動應用程序的ApplicationMaster。
3)ApplicationMaster首先向ResourceManager注冊,這樣用戶可以直接通過ResourceManage查看應用程序的運行狀態,然后它將為各個任務申請資源,并監控它的運行狀態,直到運行結束,即重復步驟4)到7)。
4)ApplicationMaster采用輪詢的方式通過RPC協議向ResourceManager申請和領取資源。
5)一旦ApplicationMaster申請到資源后,便與對應的NodeManager通信,要求它啟動任務。
6)NodeManager為任務設置好運行環境(包括環境變量、JAR包、二進制程序等)后,將任務啟動命令寫到一個腳本中,并通過運行該腳本啟動任務。
7)各個任務通過某個RPC協議向ApplicationMaster匯報自己的狀態和進度,以讓ApplicationMaster隨時掌握各個任務的運行狀態,從而可以在任務失敗時重新啟動任務。在應用程序運行過程中,用戶可隨時通過RPC向ApplicationMaster查詢應用程序的當前運行狀態。
8)應用程序運行完成后,ApplicationMaster向ResourceManager注銷并關閉自己。YARN的工作流程
如圖所示:
YARN的工作流程圖
3、學會YARN Shell的操作命令
答:參見《大數據技術與應用》第7章第3節
第八章
1. 簡述Spark開源框架及其特點。?
答:
Spark架構采用了分布式計算中的Master-Slave模型,Spark架構如下圖所示:
圖8-2 Spark架構圖
2. 簡述Spark生態系統及其主要組件。?
答:
Spark主要包括Spark Core和在Spark Core基礎之上建立的應用框架Spark SQL、Spark Streaming、MLlib和GraphX。如下圖所示。
圖 Spark生態系統
除了這些庫以外,還有一些其他的庫,如BlinkDB和Tachyon。此外,還有一些用于與其他產品集成的適配器,如Cassandra(Spark Cassandra連接器)和R(SparkR)。
3. 簡述RDD的基本工作原理和特性。
答:參見《大數據技術與應用》第8章第2節
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是計算的次數
輸出:
附:
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實現詞頻統計和相關系數計算
答:參見《大數據技術與應用》第8章第3節
第九章
1.簡述機器學習的基本概念。
答:
機器學習是一個龐大的家族體系,涉及眾多算法、任務和學習理論。
詳見《大數據技術與應用》第9章第1節?
2.簡述機器學習的分類。
答:?
?? ?(1)按任務類型分,機器學習模型可以分為回歸模型、分類模型和結構化學習模型。
?? ?(2)從方法的角度分,可以分為線性模型和非線性模型,非線性模型又可以分為傳統機器學習模型(SVM,KNN,決策樹等)和深度學習模型。
?? ?(3)按照學習理論分,機器學習模型可以分為有監督學習、半監督學習、無監督學習、遷移學習和強化學習。
3.MLlib的數據類型和API函數有哪些? 如何使用?
答:
MLlib提供了以下數據類型:
? (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
詳見《大數據技術與應用》第9章第2節
4. 3種鳶尾花數據(萼片寬度、萼片長度、 花瓣寬度、花瓣長度)為: (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),計算其聚類中心并將數據進行分類。
答:參見《大數據技術與應用》第9章第3節?
5.使用決策樹算法對鳶尾花數據進行模型訓練和預測。
答:參見《大數據技術與應用》第9章第3節?
第十章
1.簡述Hive的組成及執行流程。
答:
Hive的主要模塊以及與Hadoop的交互工作如下圖所示:
圖 Hive組成模塊
下圖顯示Hive與Hadoop交互的主要組件,這些組件如下:
(1)UI——包括Shell命令、JDBC/ODBC和WebUi,其中最常用的是shell這個客戶端方式對Hive進行相應操作。
(2)Driver——Hive解析器的核心功能就是根據用戶編寫的SQL語法匹配出相應的MapReduce模板,形成對應的MapReduce job進行執行。
(3)Compiler——將HiveQL編譯成有向無環圖(Directed Acyclic Graph,DAG)形式的MapReduce任務。
(4)Metastore——Hive將表中的元數據信息存儲在數據庫中,如derby、MySQL,Hive中的元數據信息包括表的名字、表的列和分區、表的屬性(是否為外部表等)、表的數據所在的目錄等。編譯器Compiler根據用戶任務去MetaStore中獲取需要的Hive的元數據信息。
(5)Execution Engine——執行編譯器產生的執行計劃,該計劃是一個有向無環圖,執行引擎管理這些計劃的不同階段之間的依賴關系,并在相關組件上執行這些階段。
圖 Hive執行流程
2.比較ARRAY、MAP和STRUCT這3種數據類型的區別
答:
復雜數據類型包括ARRAY、MAP、STRUCT,這些復雜數據類型是由基礎類型組成的,如下表所示:
數據類型
描述
例子
ARRAY
一組有序字段。字段的類型必須相同。例如:數組A的值為[?1,?2?],則第2個元素為A[1]。
ARRAY(?1,?2?)
MAP
一組無序的鍵/值對。鍵的類型必須是原子的,值可以是任何類型,同一個映射的鍵的類型必須相同,值得類型也必須相同。例如:MAP數據M的鍵-值對?'a'?->?1,?'b'?->?2,則'b'的值為M[?'b'?]。
MAP(?‘a’,?1,?‘b’,?2?)
STRUCT
一組命名的字段。字段類型可以不同。例如:name為STRUCT{?first?STRING,?last?STRING?},則使用name.last引用name中last的值。
STRUCT(?'a',?1,?2?)
表 復雜數據類型
3.舉例Hive文件格式的JSON 表示
答:
教材中的數據以json形式表示
{
"name": "王可塘",
"salary": 12000.0,
"degree": ["學士", "碩士"],
"dues": {
"公積金": .2,
"保險金": ?.05,
"養老金": ?.1
},
"address":{
"province": "廣東省",
"city": "汕尾市",
"street": "蓮塘街36號.",
"zip": ?516600}?
}
4.使用HSQL進行詞頻統計。?
答:參考《大數據技術與應用》第十章第5節
5.從騰訊證券下載股市行情,使用Hive進行分析。
答:參見《大數據技術與應用》第十章第6節
第十一章
1.簡述ZooKeeper協調服務。
答:
分布式協調服務有Paxos、 ZooKeeper、Chubby和Fourinone等。
2.簡述ZAB協議。
答:
?(1)所有的事務請求必須一個全局唯一的服務器 ? (Leader)來協調處理,集群其余的服務器稱為follower服務器。
?(2) ZAB協議分為四個階段:階段0為leader選 ?舉,階段1為發現,階段2為同步, ? ?階段3為廣播。而實際實現時將發現及同步階段合并為一個恢復階段。
?(3) ZAB協議分兩大塊:恢復和廣播。
3.簡述ZooKeeper事件監聽器工作流程。
答:
ZooKeeper的Watcher機制主要包括客戶端線程、客戶端WatchManager和ZooKeeper服務器三部分。其工作流程:客戶端在向ZooKeeper服務器注冊Watcher的同時,會將Watcher對象存儲在客戶端的WatchManager中。當ZooKeeper服務器端觸發Watcher事件后,會向客戶端發送通知,客戶端線程從WatchManager中取出對應的Watcher對象執行回調邏輯,如下圖所示。
圖 Watcher工作流程
4.簡述ZooKeeper如何解決YARN中ResourceManager單點故障問題。
答:
為了解決 ResourceManager單點問題,YARN 設計了一套 Active/Standby模式的 ResourceManagerHA架構,如下圖所示:
圖YARN HA架構
5.編寫程序實現ZNode的增加、刪除等。
答:參見《大數據技術與應用》第11章第5節
第十二章
1.簡述大數據分析平臺的原理及功能。
答:
功能:
(1)流量分析 、
(2)經營狀況分析、
(3)大數據可視化系統
醫藥大數據分析平臺方案主要分為三部分:數據采集子系統、數據分析子系統和數據報表呈現子系統。詳情如下表所示:
子系統
系統定義
交互接口
大數據采集子系統
系統以離線批處理方式,推送采集結果數據給大數據分析平臺。
(1)采集大數據接收的格式,(2)大數據接口定義
大數據分析子系統
接收采集系統的數據,客戶行為分析,不同藥品的精準預測算法,藥品推薦算法等特色功能。生成分析結果數據
(1)大數據的存儲,(2)客戶行為模型,(3)流量分析模型,(4)統計分析模型
大數據報表呈現子系統
采用Web的方案,進行大數據分析結果的呈現,分析結果以報表、圖表的方式呈現給醫藥電子商務商家。
以交互接口、調用報表數據的等方式獲取需要的結果。
圖 系統組成
醫藥大數改系統的子系統間的協作方式如下圖所示。
圖 系統協作
該系統的網絡拓撲圖如下圖所示。醫藥電商系統以批處理方式,推送采集數據給大數據分析平臺,存儲到Hadoop集群,大數據報表服務器通過交換機和集群相連。
圖 系統網絡拓撲
2.簡述大數據分析平臺的功能。
答:
功能:
? ? (1)流量分析?
? ? (2)經營狀況分析
? ? (3)大數據可視化系統
3.簡述大數據分析平臺的系統組成。
答:
醫藥大數據分析平臺方案主要分為三部分:數據采集子系統、數據分析子系統和數據報表呈現子系統。詳情如下表所示:
子系統
系統定義
交互接口
大數據采集子系統
系統以離線批處理方式,推送采集結果數據給大數據分析平臺。
(1)采集大數據接收的格式,(2)大數據接口定義
大數據分析子系統
接收采集系統的數據,客戶行為分析,不同藥品的精準預測算法,藥品推薦算法等特色功能。生成分析結果數據
(1)大數據的存儲,(2)客戶行為模型,(3)流量分析模型,(4)統計分析模型
大數據報表呈現子系統
采用Web的方案,進行大數據分析結果的呈現,分析結果以報表、圖表的方式呈現給醫藥電子商務商家。
以交互接口、調用報表數據的等方式獲取需要的結果。
表 系統組成
4.簡述大數據分析平臺涉及的關鍵技術。
答:
? Hadoop作為分布式計算平臺。
? Hbase作為分布式數據存儲數據庫。
? Bootstrap作為頁面搭建框架。
? jQuery進行后臺交互操作。
? EChart實現數據可視化。
5.簡述大數據分析平臺的存儲方式。
答:
結合醫藥電商數據的具體特點和上述的設計及優化策略,為了滿足商家用戶進行流量分析、銷售分析、藥品推薦等需求,從而設計流量數據表、訂單數據表、會員評價表,具體內容如下表所示:
? 1.流量數據表
RowKey
列族 cf
<platformtype><clicktime><userId>
sessionId
userId
trackUid
userAgent
referer
? 2.訂單數據表
RowKey
列族 cf
<orderId><userId>
orderId
userId
orderNum
Payment
totalAmount
isCod
orderStatus
具體請參見《大數據技術與應用》第12章第7節
?
總結
- 上一篇: 2019 wannafly winter
- 下一篇: 功率信号与能量信号的超棒理解!