- 相關(guān)推薦
大數(shù)據(jù)知識(shí)點(diǎn)總結(jié)
總結(jié)就是把一個(gè)時(shí)段的學(xué)習(xí)、工作或其完成情況進(jìn)行一次全面系統(tǒng)的總結(jié),通過(guò)它可以正確認(rèn)識(shí)以往學(xué)習(xí)和工作中的優(yōu)缺點(diǎn),讓我們來(lái)為自己寫一份總結(jié)吧。總結(jié)一般是怎么寫的呢?以下是小編收集整理的大數(shù)據(jù)知識(shí)點(diǎn)總結(jié),希望對(duì)大家有所幫助。
1、Hadoop是一個(gè)由Apache基金會(huì)所開發(fā)的分布式系統(tǒng)基礎(chǔ)架構(gòu)。
用戶可以在不了解分布式底層細(xì)節(jié)的情況下,開發(fā)分布式程序。充分利用集群的威力進(jìn)行高速運(yùn)算和存儲(chǔ)。
2、Hadoop實(shí)現(xiàn)了一個(gè)分布式文件系統(tǒng)(Hadoop Distributed File System),簡(jiǎn)稱HDFS。HDFS有高容錯(cuò)性的特點(diǎn),并且設(shè)計(jì)用來(lái)部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)來(lái)訪問(wèn)應(yīng)用程序的數(shù)據(jù),適合那些有著超大數(shù)據(jù)集(large data set)的應(yīng)用程序。HDFS放寬了(relax)POSIX的要求,可以以流的形式訪問(wèn)(streaming access)文件系統(tǒng)中的數(shù)據(jù)。
3、Hadoop的框架最核心的設(shè)計(jì)就是:HDFS和MapReduce。HDFS為海量的數(shù)據(jù)提供了存儲(chǔ),則MapReduce為海量的數(shù)據(jù)提供了計(jì)算。
4、Hadoop它主要有以下幾個(gè)優(yōu)點(diǎn):
(a)高可靠性。Hadoop按位存儲(chǔ)和處理數(shù)據(jù)的能力值得人們信賴。
(b)高擴(kuò)展性。Hadoop是在可用的計(jì)算機(jī)集簇間分配數(shù)據(jù)并完成計(jì)算任務(wù)的,這些集簇可以方便地?cái)U(kuò)展到數(shù)以千計(jì)的節(jié)點(diǎn)中。
(c)高效性。Hadoop能夠在節(jié)點(diǎn)之間動(dòng)態(tài)地移動(dòng)數(shù)據(jù),并保證各個(gè)節(jié)點(diǎn)的動(dòng)態(tài)平衡,因此處理速度非常快。
(d)高容錯(cuò)性。Hadoop能夠自動(dòng)保存數(shù)據(jù)的多個(gè)副本,并且能夠自動(dòng)將失敗的任務(wù)重新分配。
(e)低成本。與一體機(jī)、商用數(shù)據(jù)倉(cāng)庫(kù)以及QlikView、Yonghong Z-Suite等數(shù)據(jù)集市相比,hadoop是開源的,項(xiàng)目的軟件成本因此會(huì)大大降低。
5、HDFS
對(duì)外部客戶機(jī)而言,HDFS就像一個(gè)傳統(tǒng)的分級(jí)文件系統(tǒng)?梢詣(chuàng)建、刪除、移動(dòng)或重命名文件,等等。但是HDFS的架構(gòu)是基于一組特定的節(jié)點(diǎn)構(gòu)建的,這是由它自身的特點(diǎn)決定的。這些節(jié)點(diǎn)包括NameNode(僅一個(gè)),它在HDFS內(nèi)部提供元數(shù)據(jù)服務(wù);DataNode,它為HDFS 提供存儲(chǔ)塊。由于僅存在一個(gè)NameNode,因此這是HDFS的一個(gè)缺點(diǎn)(單點(diǎn)失。。
存儲(chǔ)在HDFS中的文件被分成塊,然后將這些塊復(fù)制到多個(gè)計(jì)算機(jī)中(DataNode)。這與傳統(tǒng)的RAID架構(gòu)大不相同。塊的大。ㄍǔ64MB)和復(fù)制的塊數(shù)量在創(chuàng)建文件時(shí)由客戶機(jī)決定。NameNode可以控制所有文件操作。HDFS內(nèi)部的所有通信都基于標(biāo)準(zhǔn)的TCP/IP協(xié)議。
6、NameNode
NameNode是一個(gè)通常在HDFS實(shí)例中的單獨(dú)機(jī)器上運(yùn)行的軟件。它負(fù)責(zé)管理文件系統(tǒng)名稱空間和控制外部客戶機(jī)的訪問(wèn)。NameNode決定是否將文件映射到DataNode上的復(fù)制塊上。對(duì)于最常見的3個(gè)復(fù)制塊,第一個(gè)復(fù)制塊存儲(chǔ)在同一機(jī)架的不同節(jié)點(diǎn)上,最后一個(gè)復(fù)制塊存儲(chǔ)在不同機(jī)架的某個(gè)節(jié)點(diǎn)上。
NameNode本身不可避免地具有SPOF(Single Point Of Failure)單點(diǎn)失效的風(fēng)險(xiǎn),主備模式并不能解決這個(gè)問(wèn)題,通過(guò)Hadoop Non-stop namenode才能實(shí)現(xiàn)100% uptime可用時(shí)間。
7、DataNode
DataNode也是一個(gè)通常在HDFS實(shí)例中的單獨(dú)機(jī)器上運(yùn)行的軟件。Hadoop集群包含一個(gè)NameNode和大量DataNode。DataNode通常以機(jī)架的形式組織,機(jī)架通過(guò)一個(gè)交換機(jī)將所有系統(tǒng)連接起來(lái)。Hadoop的一個(gè)假設(shè)是:機(jī)架內(nèi)部節(jié)點(diǎn)之間的傳輸速度快于機(jī)架間節(jié)點(diǎn)的傳輸速度。
DataNode響應(yīng)來(lái)自HDFS客戶機(jī)的讀寫請(qǐng)求。它們還響應(yīng)來(lái)自NameNode的創(chuàng)建、刪除和復(fù)制塊的命令。NameNode依賴來(lái)自每個(gè)DataNode的定期心跳(heartbeat)消息。每條消息都包含一個(gè)塊報(bào)告,NameNode可以根據(jù)這個(gè)報(bào)告驗(yàn)證塊映射和其他文件系統(tǒng)元數(shù)據(jù)。如果DataNode不能發(fā)送心跳消息,NameNode將采取修復(fù)措施,重新復(fù)制在該節(jié)點(diǎn)上丟失的塊。
8、集群系統(tǒng)
Google的數(shù)據(jù)中心使用廉價(jià)的Linux PC機(jī)組成集群,在上面運(yùn)行各種應(yīng)用。核心組件是3個(gè):
(a)GFS(Google File System)。一個(gè)分布式文件系統(tǒng),隱藏下層負(fù)載均衡,冗余復(fù)制等細(xì)節(jié),對(duì)上層程序提供一個(gè)統(tǒng)一的文件系統(tǒng)API接口。Google根據(jù)自己的需求對(duì)它進(jìn)行了特別優(yōu)化,包括:超大文件的訪問(wèn),讀操作比例遠(yuǎn)超過(guò)寫操作,PC機(jī)極易發(fā)生故障造成節(jié)點(diǎn)失效等。GFS把文件分成64MB的塊,分布在集群的機(jī)器上,使用Linux的文件系統(tǒng)存放。同時(shí)每塊文件至少有3份以上的冗余。中心是一個(gè)Master節(jié)點(diǎn),根據(jù)文件索引,找尋文件塊。詳見Google的工程師發(fā)布的GFS論文。
(b)MapReduce。Google發(fā)現(xiàn)大多數(shù)分布式運(yùn)算可以抽象為MapReduce操作。Map是把輸入Input分解成中間的Key/Value對(duì),Reduce把Key/Value合成最終輸出Output。這兩個(gè)函數(shù)由程序員提供給系統(tǒng),下層設(shè)施把Map和Reduce操作分布在集群上運(yùn)行,并把結(jié)果存儲(chǔ)在GFS上。
(c)BigTable。一個(gè)大型的分布式數(shù)據(jù)庫(kù),這個(gè)數(shù)據(jù)庫(kù)不是關(guān)系式的數(shù)據(jù)庫(kù)。像它的名字一樣,就是一個(gè)巨大的表格,用來(lái)存儲(chǔ)結(jié)構(gòu)化的數(shù)據(jù)。
9、子項(xiàng)目
(a)HDFS: Hadoop分布式文件系統(tǒng)(Distributed File System)
(b)MapReduce:MapReduce是處理大量半結(jié)構(gòu)化數(shù)據(jù)集合的編程模型
(c)HBase:類似Google BigTable的分布式NoSQL列數(shù)據(jù)庫(kù)。
HBase是一個(gè)分布式的,面向列的數(shù)據(jù)庫(kù)。它基于Hadoop之上提供了類似BigTable的功能。
(d)Hive:數(shù)據(jù)倉(cāng)庫(kù)工具。
Hive是一個(gè)數(shù)據(jù)倉(cāng)庫(kù)工具,可以將結(jié)構(gòu)化的數(shù)據(jù)文件映射為一張數(shù)據(jù)庫(kù)表,并提供類似SQL一樣的查詢語(yǔ)言HiveQL來(lái)管理這些數(shù)據(jù)。
(e)Zookeeper:分布式鎖設(shè)施,提供類似Google Chubby的功能。
ZooKeeper是一個(gè)針對(duì)大型分布式系統(tǒng)的可靠協(xié)調(diào)系統(tǒng),提供包括配置維護(hù),名字服務(wù),分布式同步和組服務(wù)等功能。 Hadoop的管理就是用的ZooKeeper。
(f)Avro:新的數(shù)據(jù)序列化格式與傳輸工具,將逐步取代Hadoop原有的IPC機(jī)制。
(g)Pig:大數(shù)據(jù)分析平臺(tái),為用戶提供多種接口。
Pig是一個(gè)基于Hadoop的大數(shù)據(jù)分析平臺(tái),它提供了一個(gè)叫PigLatin的高級(jí)語(yǔ)言來(lái)表達(dá)大數(shù)據(jù)分析程序。
(h)Ambari:Hadoop管理工具,可以快捷的監(jiān)控、部署、管理集群。
對(duì)Hadoop集群進(jìn)行監(jiān)控和管理的基于Web的系統(tǒng)。目前已經(jīng)支持HDFS,MapReduce,Hive,HCatalog,HBase,ZooKeeper,Oozie,Pig和Sqoop等組件。
(i)Sqoop:在HADOOP與傳統(tǒng)的數(shù)據(jù)庫(kù)間進(jìn)行數(shù)據(jù)的傳遞。
Sqoop是一個(gè)Hadoop和關(guān)系型數(shù)據(jù)庫(kù)之間的數(shù)據(jù)轉(zhuǎn)移工具?蓪㈥P(guān)系型數(shù)據(jù)庫(kù)中的數(shù)據(jù)導(dǎo)入到Hadoop的HDFS中,也可將HDFS中的數(shù)據(jù)導(dǎo)進(jìn)到關(guān)系型數(shù)據(jù)庫(kù)中。
10、Hadoop1.x與Hadoop2.x的區(qū)別:
Hadoop2.x中有兩個(gè)重要的變更:
(a)HDFS的NameNode可以以集群的方式部署,增強(qiáng)了NameNode的水平擴(kuò)展能力和可用性
(b)MapReduce將JobTrack中的資源管理及任務(wù)生命周期管理(包括定時(shí)觸發(fā)及監(jiān)控),拆分成兩個(gè)獨(dú)立的組件,并更名為YARN
11、Hadoop2.x解決了Hadoop1.x中的哪些問(wèn)題
(a)2.x解決了1.x中的namenode單點(diǎn)故障問(wèn)題
(b)解決了namenode內(nèi)存壓力過(guò)大難以擴(kuò)展問(wèn)題
(c)解決了JobTrack單點(diǎn)故障問(wèn)題
(d)解決了JobTrack訪問(wèn)壓力過(guò)大問(wèn)題
(e)解決了對(duì)MapReduce之外的框架支持問(wèn)題
12、Zeppelin是一個(gè)基于web的可視化的大數(shù)據(jù)分析工具。主要用來(lái)進(jìn)行交互式的數(shù)據(jù)分析,它可以跟多種大數(shù)據(jù)分析組件集成在一起,為這些大數(shù)據(jù)分析組件提供基于瀏覽器頁(yè)面的交互式訪問(wèn)功能。
13、Zeppelin的主要用途
1、Data Ingestion(數(shù)據(jù)攝取)
2、Data Discovery(數(shù)據(jù)發(fā)現(xiàn))
3、Data analytics(數(shù)據(jù)分析)
4、Data Visualization & Collaboration(數(shù)據(jù)可視化和協(xié)同開發(fā))
14、Zeppelin的主要特點(diǎn)
a、支持多種編程語(yǔ)言
b、Zeppelin支持的語(yǔ)言取決于跟Zeppelin集成的interpreter.比如Zeppelin跟Hive集成后,就可以支持HQL。
c、Zeppelin默認(rèn)跟Spark,Spark shell支持的語(yǔ)法在Zeppelin都默認(rèn)支持,并且ZeppelinNotebook對(duì)Scala,Python和Spark SQL還實(shí)現(xiàn)了語(yǔ)言高亮。
d、默認(rèn)支持Spark
e、通過(guò)多種圖表的方式,對(duì)數(shù)據(jù)分析提供數(shù)據(jù)可視化的支持
f、通過(guò)簡(jiǎn)單的拖拽操作,可以對(duì)圖表中展示的數(shù)據(jù)進(jìn)行多種方式的聚合操作,如sum, count, average, min, max。
g、支持動(dòng)態(tài)表單,可以在交互中動(dòng)態(tài)修改過(guò)濾條件。
h、使用簡(jiǎn)單的模板語(yǔ)言來(lái)創(chuàng)建form表單,適用于Markdown, Shell, SparkSQL后臺(tái)。
i、通過(guò)編程的方式創(chuàng)建form表單,適用于Scala,Python等,調(diào)用z(ZeppelinContext)來(lái)創(chuàng)建和訪問(wèn)表單。
j、支持協(xié)同開發(fā),Zeppelin的notebook,可以被多人同時(shí)使用,任何一個(gè)人的改動(dòng)都會(huì)被實(shí)時(shí)的同步到其他協(xié)作者的頁(yè)面上。
k、Zeppelin notebook上產(chǎn)生的圖表,可以被獨(dú)立發(fā)布,通過(guò)iframe,可以嵌入到別的網(wǎng)頁(yè)上。
l、100%開源的Apache項(xiàng)目。
15、Ambari是一個(gè)開源的分布式Hadoop集群安裝,部署,監(jiān)控和管理的平臺(tái)。
16、Ambari主要由三個(gè)部分組成,Ambari Server,Ambari Web和Ambari Agent。
Ambari Server:AmbariServer是整個(gè)Ambari的統(tǒng)一入口,只能運(yùn)行在集群中的一臺(tái)機(jī)器上。負(fù)責(zé)管理所有的Ambari Agent。
Ambari Web:AmbariWeb和Ambari Server運(yùn)行在同一臺(tái)機(jī)器上,作為Ambari Server的一部分功能存在,提供Web和RestAPI的方式訪問(wèn)AmbariServer。
AmbariAgent:AmbariAgent需要在集群中的每個(gè)節(jié)點(diǎn)上都運(yùn)行一個(gè),負(fù)責(zé)監(jiān)控宿主機(jī)器的狀態(tài)信息,執(zhí)行從Ambari Server上發(fā)送過(guò)來(lái)的操作指令。
17、Spark是UCBerkeleyAMPlab所開源的類HadoopMapReduce的通用的并行計(jì)算框架,Spark基于mapreduce算法實(shí)現(xiàn)的分布式計(jì)算,擁有HadoopMapReduce所具有的優(yōu)點(diǎn);但不同于MapReduce的是Job中間輸出和結(jié)果可以保存在內(nèi)存中,從而不再需要讀寫HDFS,因此Spark能更好地適用于數(shù)據(jù)挖掘與機(jī)器學(xué)習(xí)等需要迭代的map reduce的算法。
18、Spark與Hadoop的對(duì)比(Spark的優(yōu)勢(shì))
1、Spark的中間數(shù)據(jù)放到內(nèi)存中,對(duì)于迭代運(yùn)算效率更高
2、Spark比Hadoop更通用
3、Spark提供了統(tǒng)一的編程接口
4、容錯(cuò)性–在分布式數(shù)據(jù)集計(jì)算時(shí)通過(guò)checkpoint來(lái)實(shí)現(xiàn)容錯(cuò)
5、可用性– Spark通過(guò)提供豐富的Scala, Java,Python API及交互式Shell來(lái)提高可用性
19、Spark的組件
1、Spark Streaming:支持高吞吐量、支持容錯(cuò)的實(shí)時(shí)流數(shù)據(jù)處理
2、Spark SQL,Data frames:結(jié)構(gòu)化數(shù)據(jù)查詢
3、MLLib:Spark生態(tài)系統(tǒng)里用來(lái)解決大數(shù)據(jù)機(jī)器學(xué)習(xí)問(wèn)題的模塊
4、GraphX:是構(gòu)建于Spark上的圖計(jì)算模型
5、SparkR:是一個(gè)R語(yǔ)言包,它提供了輕量級(jí)的方式使得可以在R語(yǔ)言中使用Spark
20、DataFrame是一種以RDD為基礎(chǔ)的分布式數(shù)據(jù)集,類似于傳統(tǒng)數(shù)據(jù)庫(kù)中的二維表格。
21、DataFrame與RDD的主要區(qū)別在于:
前者帶有schema元信息,即DataFrame所表示的二維表數(shù)據(jù)集的每一列都帶有名稱和類型。這使得SparkSQL得以洞察更多的結(jié)構(gòu)信息,從而對(duì)藏于DataFrame背后的數(shù)據(jù)源以及作用于DataFrame之上的變換進(jìn)行了針對(duì)性的優(yōu)化,最終達(dá)到大幅提升運(yùn)行時(shí)效率的目標(biāo)。反觀RDD,由于無(wú)從得知所存數(shù)據(jù)元素的具體內(nèi)部結(jié)構(gòu),Spark Core只能在stage層面進(jìn)行簡(jiǎn)單、通用的流水線優(yōu)化。
22、MLlib是spark的可以擴(kuò)展的機(jī)器學(xué)習(xí)庫(kù),由以下部分組成:通用的學(xué)習(xí)算法和工具類,包括分類,回歸,聚類,協(xié)同過(guò)濾,降維
23、SparkR實(shí)現(xiàn)了分布式的data frame,支持類似查詢、過(guò)濾以及聚合的操作
24、RDD,全稱為Resilient Distributed Datasets,是個(gè)容錯(cuò)的、并行的數(shù)據(jù)結(jié)構(gòu),可以讓用戶顯式地將數(shù)據(jù)存儲(chǔ)到磁盤和內(nèi)存中,并能控制數(shù)據(jù)的分區(qū)。同時(shí),RDD還提供了一組豐富的操作來(lái)操作這些數(shù)據(jù)。
25、RDD的特點(diǎn):
1.它是在集群節(jié)點(diǎn)上的不可變的、已分區(qū)的集合對(duì)象。
2.通過(guò)并行轉(zhuǎn)換的方式來(lái)創(chuàng)建如(map, filter, join, etc )。
3.失敗自動(dòng)重建。
4.可以控制存儲(chǔ)級(jí)別(內(nèi)存、磁盤等)來(lái)進(jìn)行重用。
5.必須是可序列化的。
6.是靜態(tài)類型的。
26、RDD核心概念
Client:客戶端進(jìn)程,負(fù)責(zé)提交作業(yè)到Master。
Master:Standalone模式中主控節(jié)點(diǎn),負(fù)責(zé)接收Client提交的作業(yè),管理Worker,并命令Worker啟動(dòng)分配Driver的資源和啟動(dòng)Executor的資源。
Worker:Standalone模式中slave節(jié)點(diǎn)上的守護(hù)進(jìn)程,負(fù)責(zé)管理本節(jié)點(diǎn)的資源,定期向Master匯報(bào)心跳,接收Master的命令,啟動(dòng)Driver和Executor。
Driver:一個(gè)Spark作業(yè)運(yùn)行時(shí)包括一個(gè)Driver進(jìn)程,也是作業(yè)的主進(jìn)程,負(fù)責(zé)作業(yè)的解析、生成Stage并調(diào)度Task到Executor上。包括DAGScheduler,TaskScheduler。
Executor:即真正執(zhí)行作業(yè)的地方,一個(gè)集群一般包含多個(gè)Executor,每個(gè)Executor接收Driver的命令Launch Task,一個(gè)Executor可以執(zhí)行一到多個(gè)Task。
27、RDD常見術(shù)語(yǔ)
DAGScheduler:實(shí)現(xiàn)將Spark作業(yè)分解成一到多個(gè)Stage,每個(gè)Stage根據(jù)RDD的Partition個(gè)數(shù)決定Task的個(gè)數(shù),然后生成相應(yīng)的Task set放到TaskScheduler中。
TaskScheduler:實(shí)現(xiàn)Task分配到Executor上執(zhí)行。
Task:運(yùn)行在Executor上的工作單元
Job:SparkContext提交的具體Action操作,常和Action對(duì)應(yīng)
Stage:每個(gè)Job會(huì)被拆分很多組任務(wù)(task),每組任務(wù)被稱為Stage,也稱TaskSet
RDD:Resilient Distributed Datasets的簡(jiǎn)稱,彈性分布式數(shù)據(jù)集,是Spark最核心的模塊和類
Transformation/Action:SparkAPI的兩種類型;Transformation返回值還是一個(gè)RDD,Action返回值不少一個(gè)RDD,而是一個(gè)Scala的集合;所有的Transformation都是采用的懶策略,如果只是將Transformation提交是不會(huì)執(zhí)行計(jì)算的,計(jì)算只有在Action被提交時(shí)才會(huì)被觸發(fā)。
DataFrame:帶有Schema信息的RDD,主要是對(duì)結(jié)構(gòu)化數(shù)據(jù)的高度抽象。
DataSet:結(jié)合了DataFrame和RDD兩者的優(yōu)勢(shì),既允許用戶很方便的操作領(lǐng)域?qū)ο,又具有SQL執(zhí)行引擎的高效表現(xiàn)。
28、RDD提供了兩種類型的操作:transformation和action
1,transformation是得到一個(gè)新的RDD,方式很多,比如從數(shù)據(jù)源生成一個(gè)新的RDD,從RDD生成一個(gè)新的RDD
2,action是得到一個(gè)值,或者一個(gè)結(jié)果(直接將RDD cache到內(nèi)存中)
3,所有的transformation都是采用的懶策略,就是如果只是將transformation提交是不會(huì)執(zhí)行計(jì)算的,計(jì)算只有在action被提交的時(shí)候才被觸發(fā)
29、RDD中關(guān)于轉(zhuǎn)換(transformation)與動(dòng)作(action)的區(qū)別
前者會(huì)生成新的RDD,而后者只是將RDD上某項(xiàng)操作的結(jié)果返回給程序,而不會(huì)生成新的RDD;無(wú)論執(zhí)行了多少次transformation操作,RDD都不會(huì)真正執(zhí)行運(yùn)算(記錄lineage),只有當(dāng)action操作被執(zhí)行時(shí),運(yùn)算才會(huì)觸發(fā)。
30、RDD與DSM(distributed shared memory)的最大不同是:
RDD只能通過(guò)粗粒度轉(zhuǎn)換來(lái)創(chuàng)建,而DSM則允許對(duì)每個(gè)內(nèi)存位置上數(shù)據(jù)的讀和寫。在這種定義下,DSM不僅包括了傳統(tǒng)的共享內(nèi)存系統(tǒng),也包括了像提供了共享DHT(distributed hash table)的Piccolo以及分布式數(shù)據(jù)庫(kù)等。
31、RDD的優(yōu)勢(shì)
1、高效的容錯(cuò)機(jī)制
2、結(jié)點(diǎn)落后問(wèn)題的緩和(mitigate straggler):
3、批量操作:
4、優(yōu)雅降級(jí)(degrade gracefully)
32、如何獲取RDD
1、從共享的文件系統(tǒng)獲取,(如:HDFS)
2、通過(guò)已存在的RDD轉(zhuǎn)換
3、將已存在scala集合(只要是Seq對(duì)象)并行化,通過(guò)調(diào)用SparkContext的parallelize方法實(shí)現(xiàn)
4、改變現(xiàn)有RDD的之久性;RDD是懶散,短暫的。
33、RDD都需要包含以下四個(gè)部分
a.源數(shù)據(jù)分割后的數(shù)據(jù)塊,源代碼中的splits變量
b.關(guān)于“血統(tǒng)”的信息,源碼中的dependencies變量
c.一個(gè)計(jì)算函數(shù)(該RDD如何通過(guò)父RDD計(jì)算得到),源碼中的iterator(split)和compute函數(shù)
d.一些關(guān)于如何分塊和數(shù)據(jù)存放位置的元信息,如源碼中的partitioner和preferredLocations
34、在RDD中將依賴劃分成了兩種類型:
窄依賴(narrowdependencies)和寬依賴(widedependencies)。窄依賴是指父RDD的每個(gè)分區(qū)都只被子RDD的一個(gè)分區(qū)所使用。相應(yīng)的,那么寬依賴就是指父RDD的分區(qū)被多個(gè)子RDD的分區(qū)所依賴。例如,map就是一種窄依賴,而join則會(huì)導(dǎo)致寬依賴
依賴關(guān)系分類的特性:
第一,窄依賴可以在某個(gè)計(jì)算節(jié)點(diǎn)上直接通過(guò)計(jì)算父RDD的某塊數(shù)據(jù)計(jì)算得到子RDD對(duì)應(yīng)的某塊數(shù)據(jù);
第二,數(shù)據(jù)丟失時(shí),對(duì)于窄依賴只需要重新計(jì)算丟失的那一塊數(shù)據(jù)來(lái)恢復(fù);
35、數(shù)據(jù)分析常見模式:
1、Iterative Algorithms,
2、Relational Queries,
3、MapReduce,
4、Stream Processing,
36、Spark Streaming的基本原理是將輸入數(shù)據(jù)流以時(shí)間片(秒級(jí))為單位進(jìn)行拆分,然后以類似批處理的方式處理每個(gè)時(shí)間片數(shù)據(jù)
37、Spark Streaming優(yōu)劣
優(yōu)勢(shì):
1、統(tǒng)一的開發(fā)接口
2、吞吐和容錯(cuò)
3、多種開發(fā)范式混用,Streaming + SQL, Streaming +MLlib
4、利用Spark內(nèi)存pipeline計(jì)算
劣勢(shì):
微批處理模式,準(zhǔn)實(shí)時(shí)
38、Flume是一個(gè)分布式的日志收集系統(tǒng),具有高可靠、高可用、事務(wù)管理、失敗重啟等功能。數(shù)據(jù)處理速度快,完全可以用于生產(chǎn)環(huán)境。
39、Flume的核心是agent。Agent是一個(gè)java進(jìn)程,運(yùn)行在日志收集端,通過(guò)agent接收日志,然后暫存起來(lái),再發(fā)送到目的地。
Agent里面包含3個(gè)核心組件:source、channel、sink。
Source組件是專用于收集日志的,可以處理各種類型各種格式的日志數(shù)據(jù),包括avro、thrift、exec、jms、spoolingdirectory、netcat、sequencegenerator、syslog、http、legacy、自定義。source組件把數(shù)據(jù)收集來(lái)以后,臨時(shí)存放在channel中。
Channel組件是在agent中專用于臨時(shí)存儲(chǔ)數(shù)據(jù)的,可以存放在memory、jdbc、file、自定義。channel中的數(shù)據(jù)只有在sink發(fā)送成功之后才會(huì)被刪除。
Sink組件是用于把數(shù)據(jù)發(fā)送到目的地的組件,目的地包括hdfs、logger、avro、thrift、ipc、file、null、hbase、solr、自定義。
40、ApacheKafka是分布式發(fā)布-訂閱消息系統(tǒng)。它最初由LinkedIn公司開發(fā),之后成為Apache項(xiàng)目的一部分。Kafka是一種快速、可擴(kuò)展的、設(shè)計(jì)內(nèi)在就是分布式的,分區(qū)的和可復(fù)制的提交日志服務(wù)。
41、Apache Kafka與傳統(tǒng)消息系統(tǒng)相比,有以下不同:
1、它被設(shè)計(jì)為一個(gè)分布式系統(tǒng),易于向外擴(kuò)展;
2、它同時(shí)為發(fā)布和訂閱提供高吞吐量;
3、它支持多訂閱者,當(dāng)失敗時(shí)能自動(dòng)平衡消費(fèi)者;
4、它將消息持久化到磁盤,因此可用于批量消費(fèi)
42、DataFrame特性
1、支持從KB到PB級(jí)的數(shù)據(jù)量
2、支持多種數(shù)據(jù)格式和多種存儲(chǔ)系統(tǒng)
3、通過(guò)Catalyst優(yōu)化器進(jìn)行先進(jìn)的優(yōu)化生成代碼
4、通過(guò)Spark無(wú)縫集成主流大數(shù)據(jù)工具與基礎(chǔ)設(shè)施
5、API支持Python、Java、Scala和R語(yǔ)言
43、Scala的好處:
1、面向?qū)ο蠛秃瘮?shù)式編程理念加入到靜態(tài)類型語(yǔ)言中的混合體
2、Scala的兼容性----能夠與Java庫(kù)無(wú)縫的交互
3、Scala的簡(jiǎn)潔性----高效,更不容易犯錯(cuò)
4、Scala的高級(jí)抽象
5、Scala是靜態(tài)類型----類型推斷
6、Scala是可擴(kuò)展的語(yǔ)言
44、搜索引擎是指根據(jù)一定的策略、運(yùn)用特定的計(jì)算機(jī)程序從互聯(lián)網(wǎng)上搜集信息,在對(duì)信息進(jìn)行組織和處理后,為用戶提供檢索服務(wù),將用戶檢索相關(guān)的信息展示給用戶的系統(tǒng)。搜索引擎包括全文索引、目錄索引、元搜索引擎、垂直搜索引擎、集合式搜索引擎、門戶搜索引擎與免費(fèi)鏈接列表等。
45、Lucene是一個(gè)高性能、可伸縮的信息搜索庫(kù),即它不是一個(gè)完整的全文檢索引擎,而是一個(gè)全檢索引擎的架構(gòu),提供了完整的查詢引擎和索引引擎,部分文本分析引擎。
46、Elasticsearch是一個(gè)高可擴(kuò)展的、開源的全文本搜索和分析工具。它允許你以近實(shí)時(shí)的方式快速存儲(chǔ)、搜索、分析大容量的數(shù)據(jù)。
Elasticsearch是一個(gè)基于ApacheLucene(TM)的開源搜索引擎。無(wú)論在開源還是專有領(lǐng)域,Lucene可以被認(rèn)為是迄今為止最先進(jìn)、性能最好的、功能最全的搜索引擎庫(kù)。
47、ElasticSearch有4種方式來(lái)構(gòu)建數(shù)據(jù)庫(kù),
最簡(jiǎn)單的方法是使用indexAPI,將一個(gè)Document發(fā)送到特定的index,一般通過(guò)curltools實(shí)現(xiàn)。
第二第三種方法是通過(guò)bulkAPI和UDPbulkAPI。兩者的區(qū)別僅在于連接方式。
第四種方式是通過(guò)一個(gè)插件——river。river運(yùn)行在ElasticSearch上,并且可以從外部數(shù)據(jù)庫(kù)導(dǎo)入數(shù)據(jù)到ES中。需要注意的是,數(shù)據(jù)構(gòu)建僅在分片上進(jìn)行,而不能在副本上進(jìn)行。
48、ELK是一套常用的開源日志監(jiān)控和分析系統(tǒng),包括一個(gè)分布式索引與搜索服務(wù)Elasticsearch,一個(gè)管理日志和事件的工具logstash,和一個(gè)數(shù)據(jù)可視化服務(wù)Kibana
logstash 負(fù)責(zé)日志的收集,處理和儲(chǔ)存
elasticsearch 負(fù)責(zé)日志檢索和分析
Kibana 負(fù)責(zé)日志的可視化
49、Hive是什么?
Hive是基于Hadoop的一個(gè)數(shù)據(jù)倉(cāng)庫(kù)工具,可以將結(jié)構(gòu)化的數(shù)據(jù)文件映射為一張數(shù)據(jù)庫(kù)表,并提供類SQL查詢功能。本質(zhì)是將HQL轉(zhuǎn)換為MapReduce程序
50、Hive的設(shè)計(jì)目標(biāo)?
1、Hive的設(shè)計(jì)目標(biāo)是使Hadoop上的數(shù)據(jù)操作與傳統(tǒng)SQL相結(jié)合,讓熟悉SQL編程開發(fā)人員能夠輕松向Hadoop平臺(tái)遷移
2、Hive提供類似SQL的查詢語(yǔ)言HQL,HQL在底層被轉(zhuǎn)換為相應(yīng)的MapReduce操作
3、Hive在HDFS上構(gòu)建數(shù)據(jù)倉(cāng)庫(kù)來(lái)存儲(chǔ)結(jié)構(gòu)化的數(shù)據(jù),這些數(shù)據(jù)一般來(lái)源與HDFS上的原始數(shù)據(jù),使用Hive可以對(duì)這些數(shù)據(jù)執(zhí)行查詢、分析等操作。
51、Hive的數(shù)據(jù)模型
1、Hive數(shù)據(jù)庫(kù)2、內(nèi)部表3、外部表4、分區(qū)5、桶6、Hive的視圖
52、Hive的調(diào)用方式
1、Hive Shell 2、Thrift 3、JDBC 4、ODBC
53、Hive的運(yùn)行機(jī)制
1、將sql轉(zhuǎn)換成抽象語(yǔ)法樹
2、將抽象語(yǔ)法樹轉(zhuǎn)化成查詢塊
3、將查詢塊轉(zhuǎn)換成邏輯查詢計(jì)劃(操作符樹)
4、將邏輯計(jì)劃轉(zhuǎn)換成物理計(jì)劃(MRjobs)
54、Hive的優(yōu)勢(shì)
1、并行計(jì)算
2、充分利用集群的CPU計(jì)算資源、存儲(chǔ)資源
3、處理大規(guī)模數(shù)據(jù)集
4、使用SQL,學(xué)習(xí)成本低
55、Hive應(yīng)用場(chǎng)景
1、海量數(shù)據(jù)處理2、數(shù)據(jù)挖掘3、數(shù)據(jù)分析4、SQL是商務(wù)智能工具的通用語(yǔ)言,Hive有條件和這些BI產(chǎn)品進(jìn)行集成
56、Hive不適用場(chǎng)景
1、復(fù)雜的科學(xué)計(jì)算2、不能做到交互式的實(shí)時(shí)查詢
57、Hive和數(shù)據(jù)庫(kù)(RDBMS)的區(qū)別
1、數(shù)據(jù)存儲(chǔ)位置。Hive是建立在Hadoop之上的,所有的Hive的數(shù)據(jù)都是存儲(chǔ)在HDFS中的。而數(shù)據(jù)庫(kù)則可以將數(shù)據(jù)保存在塊設(shè)備或本地文件系統(tǒng)中。
2、數(shù)據(jù)格式。Hive中沒(méi)有定義專門的數(shù)據(jù)格式,由用戶指定三個(gè)屬性:列分隔符,行分隔符,以及讀取文件數(shù)據(jù)的方法。數(shù)據(jù)庫(kù)中,存儲(chǔ)引擎定義了自己的數(shù)據(jù)格式。所有數(shù)據(jù)都會(huì)按照一定的組織存儲(chǔ)。
3、數(shù)據(jù)更新。Hive的內(nèi)容是讀多寫少的,因此,不支持對(duì)數(shù)據(jù)的改寫和刪除,數(shù)據(jù)都在加載的時(shí)候中確定好的。數(shù)據(jù)庫(kù)中的數(shù)據(jù)通常是需要經(jīng)常進(jìn)行修改。
4、執(zhí)行延遲。Hive在查詢數(shù)據(jù)的時(shí)候,需要掃描整個(gè)表(或分區(qū)),因此延遲較高,只有在處理大數(shù)據(jù)是才有優(yōu)勢(shì)。數(shù)據(jù)庫(kù)在處理小數(shù)據(jù)是執(zhí)行延遲較低。
5、索引。Hive沒(méi)有,數(shù)據(jù)庫(kù)有
6、執(zhí)行。Hive是MapReduce,數(shù)據(jù)庫(kù)是Executor
7、可擴(kuò)展性。Hive高,數(shù)據(jù)庫(kù)低
8、數(shù)據(jù)規(guī)模。Hive大,數(shù)據(jù)庫(kù)小
58、Hbase的模塊:
Region
- Region用于存放表中的行數(shù)據(jù)
-當(dāng)一個(gè)表格很大的時(shí)候,數(shù)據(jù)會(huì)存放并共享在多個(gè)Region中
-每一個(gè)Region只存放一個(gè)單一的Column Family
Region Server
-一個(gè)Region Server包含多個(gè)Region
-管理表格,以及實(shí)現(xiàn)讀寫操作
- Client會(huì)直接和Region Server通信獲取數(shù)據(jù)
Master
-協(xié)調(diào)多個(gè)Region Server
-偵測(cè)各個(gè)Region Server的狀態(tài)并平衡它們之間的workload
-分配Region給Region Serer
-允許多個(gè)Master節(jié)點(diǎn),但是只有一個(gè)服務(wù),其他是backup
-和Zookeeper一起工作實(shí)現(xiàn)HA
Zookeeper
- Hbase中至關(guān)重要的模塊
-確保有一個(gè)Master處于Running的狀態(tài)
-注冊(cè)Region和Region Server
-屬于Hbase容錯(cuò)性的一部分
HDFS
- Hadoop的分布式文件系統(tǒng)(Hadoop Distributed File System)
API
- Hbase提供Java的Client API
【大數(shù)據(jù)知識(shí)點(diǎn)總結(jié)】相關(guān)文章:
高二物理知識(shí)點(diǎn)大總結(jié)09-15
語(yǔ)文知識(shí)點(diǎn)總結(jié)12-23
數(shù)據(jù)庫(kù)實(shí)訓(xùn)個(gè)人總結(jié)09-08
店長(zhǎng)數(shù)據(jù)分析總結(jié)(精選6篇)07-08