大數(shù)據(jù)學(xué)習(xí)筆記

姓名:王咫毅

學(xué)號(hào):19021211150

【嵌牛導(dǎo)讀】在如今時(shí)代,使用大數(shù)據(jù)進(jìn)行分析、創(chuàng)作、預(yù)測(cè)等等應(yīng)用方面越來越廣泛,可以說掌握了大數(shù)據(jù)便可以掌握世界發(fā)展的動(dòng)向。初入大數(shù)據(jù)門戶,如何對(duì)大數(shù)據(jù)進(jìn)行分析和使用?如何獲得所需方面的大數(shù)據(jù)變成了一大熱門問題。

【嵌牛鼻子】大數(shù)據(jù)? 指令

【嵌牛提問】初入大數(shù)據(jù)門,什么需要注意?

【嵌牛正文】

轉(zhuǎn)載自:http://www.itdecent.cn/p/3410c0f0ee3e


1、Zookeeper用于集群主備切換。

2、YARN讓集群具備更好的擴(kuò)展性。

3、Spark沒有存儲(chǔ)能力。

4、Spark的Master負(fù)責(zé)集群的資源管理,Slave用于執(zhí)行計(jì)算任務(wù)。

5、Hadoop從2.x開始,把存儲(chǔ)和計(jì)算分離開來,形成兩個(gè)相對(duì)獨(dú)立的子集群:HDFS和YARN,MapReduce依附于YARN來運(yùn)行。

6、YARN可以為符合YARN編程接口需求的集群提供調(diào)度服務(wù)。

7、YARN:

很多初學(xué)者,對(duì)大數(shù)據(jù)的概念都是模糊不清的,大數(shù)據(jù)是什么,能做什么,學(xué)的時(shí)候,該按照什么線路去學(xué)習(xí),學(xué)完往哪方面發(fā)展,想深入了解,想學(xué)習(xí)的同學(xué)歡迎加入大數(shù)據(jù)學(xué)習(xí)qq群:458345782,有大量干貨(零基礎(chǔ)以及進(jìn)階的經(jīng)典實(shí)戰(zhàn))分享給大家,并且有清華大學(xué)畢業(yè)的資深大數(shù)據(jù)講師給大家免費(fèi)授課,給大家分享目前國內(nèi)最完整的大數(shù)據(jù)高端實(shí)戰(zhàn)實(shí)用學(xué)習(xí)流程體系

ResourceManager 一主多備

NodeManager ? ?一般與DataNode部署在一起。

8、單機(jī)硬件配置會(huì)嚴(yán)重影響集群的性能。

9、初始化集群機(jī)器環(huán)境:創(chuàng)建賬號(hào)、安裝JDK、設(shè)置時(shí)間同步。

10、Zookeeper的部署最簡(jiǎn)單,其節(jié)點(diǎn)數(shù)必為奇數(shù)。

11、ZK兩個(gè)端口,前者是鏈接Leader后者是用于競(jìng)選。

12、部署Spark StandLone集群:

1、SSH無密碼登錄

2、復(fù)制解壓Spark

3、編寫配置文件分發(fā)到所有節(jié)點(diǎn)

13、Hadoop2.x以上支持雙機(jī)熱備。

14、Standlone模式只支持簡(jiǎn)單的固定資源分配策略。

15、YARN統(tǒng)一為集群上的所有計(jì)算負(fù)載分配資源,可以避免資源分配的混亂無序。

16、Spark程序由Master還是YARN來調(diào)度執(zhí)行,是由Spark程序在提交時(shí)決定的。

17、YARN兩種調(diào)度模式:

Yarn-cluster 模式,用于生產(chǎn)

Yarn-client ?模式,用于交互

18、Spark計(jì)算都是圍繞RDD進(jìn)行的。

19、Spark在運(yùn)行時(shí),一般RDD操作會(huì)為每個(gè)RDD分區(qū)運(yùn)行一個(gè)job。

20、Job最簡(jiǎn)單的理解,它對(duì)應(yīng)一個(gè)java線程。

21、Spark所有基于文件的生產(chǎn)RDD方法,都支持目錄、壓縮文件和通配符。

22、RDD是Spark的核心抽象,所有計(jì)算都圍繞RDD進(jìn)行。

23、RDD操作分為兩類:

Transformation 轉(zhuǎn)換

Action ? ? ? ?動(dòng)作

24、所有Transformation都是Lazy模式,先記錄計(jì)算方式,Driver返回結(jié)果時(shí)開始計(jì)算。

25、RDD的Transformation實(shí)際計(jì)算只在Action返回結(jié)果時(shí)才進(jìn)行,或者持久化。

26、Spark嚴(yán)重依賴傳遞函數(shù)類型的參數(shù)。

27、從Driver分發(fā)各個(gè)節(jié)點(diǎn)過程:

Job執(zhí)行:

1、在Driver節(jié)點(diǎn)上序列化代碼

2、傳送至各個(gè)計(jì)算節(jié)點(diǎn)

3、在計(jì)算節(jié)點(diǎn)上反序列化

4、執(zhí)行

28、Scala function支持序列化。

29、Spark的核心是RDD,而RDD是分布式計(jì)算的。

30、Spark會(huì)將Job運(yùn)行所有依賴的變量、方法、(閉包)全部打包在一起序列化。

31、RDD操作的禁忌,不能嵌套調(diào)用。

32、Action操作輸出不再是RDD,返回值Driver程序。

33、Spark集群上的資源主要是CPU core數(shù)量和物理內(nèi)存。

34、在程序運(yùn)行時(shí),每個(gè)core對(duì)應(yīng)一個(gè)線程。

35、Standlone模式下由Spark集群中的master節(jié)點(diǎn)進(jìn)行資源調(diào)度。

36、Spark調(diào)度兩類:

1、spark程序見的調(diào)度(主)

2、spark程序內(nèi)部的調(diào)度

37、用戶編寫的spark程序稱為Driver程序。

38、每個(gè)驅(qū)動(dòng)程序都有一個(gè)SparkContext對(duì)象,擔(dān)負(fù)著與集群溝通的職責(zé)。

39、集群管理器負(fù)責(zé)集群的資源調(diào)度。

40、執(zhí)行器,每個(gè)spark程序在每個(gè)節(jié)點(diǎn)上啟動(dòng)的一個(gè)進(jìn)程。

41、一次RDD Action對(duì)應(yīng)一次job。

42、Stage,job在執(zhí)行過程中被分為多個(gè)階段。

43、Task,在執(zhí)行器上執(zhí)行的最小單位。

44、Spark程序間的調(diào)度:

靜態(tài)分配 (主)

動(dòng)態(tài)分配

45、所有集群管理器都支持靜態(tài)資源分配。

46、當(dāng)spark為多用戶服務(wù)時(shí),需要配置spark程序內(nèi)部的調(diào)度。

47、不同線程提交的job可以并行執(zhí)行。

48、默認(rèn)spark的調(diào)度器以FIFO方式運(yùn)行Job。

49、公平調(diào)度還支持對(duì)多個(gè)Job進(jìn)行分組,分組稱為調(diào)度池。

50、Spark性能優(yōu)勢(shì),很大一部分原因是內(nèi)存和緩存。

51、RDD持久化可以多次利用,性能提高10倍以上。

52、Spark提供兩類共享變量——廣播變量和計(jì)數(shù)器。

53、廣播變量是一個(gè)只讀變量,在所有節(jié)點(diǎn)上都是一份緩存。

54、計(jì)數(shù)器只能增加,用于技術(shù)和求和。

55、容錯(cuò)機(jī)制是分布式系統(tǒng)的一個(gè)重要能力。

56、DAG:有向無環(huán)圖的計(jì)算任務(wù)集合。

57、分布式系統(tǒng)經(jīng)常需要做檢查點(diǎn)。

58、RDD也是一個(gè)DAG,每一個(gè)RDD都會(huì)記住創(chuàng)建該數(shù)據(jù)需要哪些操作——血統(tǒng)。

59、RDD依賴:

窄依賴 —— 父分區(qū)對(duì)應(yīng)一個(gè)子分區(qū)

寬依賴 —— 父分區(qū)對(duì)應(yīng)多個(gè)子分區(qū)

60、Spark提供了預(yù)寫日志(journal),先將數(shù)據(jù)寫入支持容錯(cuò)的文件系統(tǒng)中。

61、Spark master容錯(cuò):

Standalone ——Zookeeper

單點(diǎn) ? ? ?——本地重啟

62、Slave節(jié)點(diǎn)失效:

1、Work異常停止

2、執(zhí)行器異常停止

3、Driver異常退出

63、監(jiān)控管理:

1、Web界面

2、Metrics

3、外部系統(tǒng)

64、Web界面:

1、調(diào)度器stage,Task列表

2、RDD大小和內(nèi)存文件統(tǒng)計(jì)情況

3、環(huán)境信息

4、正在執(zhí)行的執(zhí)行器信息

65、Standlone模式的集群管理器有自己的web界面。

66、Web界面表格的頭部都支持點(diǎn)擊排序。

67、Spark程序一般都是由腳本bin/spark-submit來提交的。

68、RDD特點(diǎn):

1、RDD是只讀的

2、RDD可指定緩存在內(nèi)存中

3、RDD可以通過重新計(jì)算得到

69、RDD核心屬性:

1、一個(gè)分區(qū)列表

2、一個(gè)依賴列表

3、一個(gè)名為compute的計(jì)算函數(shù)

4、分區(qū)器

5、計(jì)算各分區(qū)是優(yōu)先的位置列表

70、Action不可以在RDD Tranformation內(nèi)部調(diào)用。

71、Transformation只是建立在計(jì)算關(guān)系,而action才是實(shí)際的執(zhí)行者——觸發(fā)者

72、Spark.local.dir用于shuffle。

73、SparkContext是spark程序最主要的入口。

74、每個(gè)jvm只允許啟動(dòng)一個(gè)sparkContext。

75、DAG是最高層級(jí)的調(diào)度,每個(gè)job對(duì)應(yīng)一個(gè)DAG。

76、RunJob,提交RDD Action 操作,是所有調(diào)度執(zhí)行的入口。

77、sparkContext在初始化時(shí),創(chuàng)建了DAG調(diào)度與task調(diào)度來負(fù)責(zé)RDD Action操作的調(diào)度執(zhí)行。

78、任務(wù)提交時(shí),不是按Job的先后順序提交的,而是倒序的。

79、僅對(duì)依賴類型是shuffle Dependency的RDD操作創(chuàng)建Stage。

80、DAG在調(diào)度室,對(duì)于在相同節(jié)點(diǎn)上進(jìn)行的Task計(jì)算會(huì)合并為一個(gè)Stage。

81、各stage之間以shuffle為分界線。

82、Spark SQL是spark的一個(gè)子模塊,專門用于處理結(jié)構(gòu)化數(shù)據(jù)。

83、Spark SQL的最大優(yōu)勢(shì)是性能非常高。

84、Spark SQL與Apache Hive基本完全兼容。

85、Spark SQL提供領(lǐng)域API,并且提供專門的數(shù)據(jù)結(jié)構(gòu)抽象DataFrame。

86、Spark SQL支持非常多的數(shù)據(jù)源:Hive、Avro、Jdbc、Json等,而且統(tǒng)一訪問。

87、Spark SQL兩種使用:

1、SQL引擎

2、API 操作

88、分布式SQL引擎,兩種運(yùn)行方式:

1、JDBC/ODBC Server

2、Spark SQL 命令行

89、Spark SQL相關(guān)的所有函數(shù),都在SqlContext或它子類中。

90、DataFrame創(chuàng)建:

1、使用反射的方法從RDD創(chuàng)建DataFrame

2、使用程序動(dòng)態(tài)從RDD創(chuàng)建DataFrame

3、從其他數(shù)據(jù)源生產(chǎn)DataFrame

91、DataFrame支持許多特殊的操作,稱為領(lǐng)域編程語言或領(lǐng)域API。

92、DataFrame注冊(cè)成表,然后使用純SQL來訪問。

93、Parquet是一種大數(shù)據(jù)計(jì)算中最常用的列式存儲(chǔ)格式。

94、數(shù)據(jù)源類型的名稱一般是全稱。

95、優(yōu)化是非常重要的環(huán)節(jié),需要不斷積累經(jīng)驗(yàn)。

96、Catalyst(催化劑)是Spark SQL執(zhí)行有限優(yōu)化器的代號(hào),最核心部分。

97、Catalyst最主要的數(shù)據(jù)結(jié)構(gòu)是樹。

98、所有優(yōu)化都是基于規(guī)則的。

99、Catalyst優(yōu)化:

1、分析階段

2、邏輯優(yōu)化階段

3、物理優(yōu)化階段

4、代碼優(yōu)化階段

100、Spark的性能基本上與數(shù)量大小保持線性關(guān)系。

101、Spark Streaming接收實(shí)時(shí)數(shù)據(jù),按日期將數(shù)據(jù)劃分為成多批次(Batch),按批次提交個(gè)核心計(jì)算。

102、Spark Streaming使用的數(shù)據(jù)抽象是DStream。

103、DStream內(nèi)部是連續(xù)的RDD序列。

104、Sprak Streaming 3種輸入DStream:

1、基本型

2、高級(jí)型

3、自定義

105、高級(jí)類型的輸入DStream并不是由Spark提供。

106、使用數(shù)據(jù)源時(shí),要注意可靠性。

107、DStream操作:

1、Transformation操作

2、Output操作類似RDD Action

108、Transform提供直接操作DStream內(nèi)部RDD的方法。

109、Spark Streaming提供專門的狀態(tài)更新方法。

110、設(shè)置數(shù)據(jù)的滑動(dòng)窗口,將數(shù)個(gè)原始DStream合并成一個(gè)窗口DStream。

111、窗口(Window)通過連個(gè)參數(shù)確定:1)窗口長度、2)滑動(dòng)區(qū)間。

112、Output操作將DStream結(jié)果輸出到外部系統(tǒng)。

113、DStream可以序列化到內(nèi)存。

114、窗口函數(shù)和updateStateBykey默認(rèn)會(huì)自動(dòng)持久化。

115、網(wǎng)絡(luò)按收數(shù)據(jù),默認(rèn)持久化兩個(gè)節(jié)點(diǎn)上,保證容錯(cuò)。

116、DStream基礎(chǔ)屬性:

1、依賴的在DStream列表

2、生產(chǎn)RDD的時(shí)間

3、Complete計(jì)算函數(shù)

117、RDD是只讀的,可重復(fù)計(jì)算的分布式數(shù)據(jù)集。

118、SparkStreaming大部分?jǐn)?shù)據(jù)來自網(wǎng)絡(luò)。

119、流式計(jì)算過程:

輸入數(shù)據(jù)流>>數(shù)據(jù)接收>>數(shù)據(jù)計(jì)算>>結(jié)果輸出。

120、結(jié)果輸出操作本身提供至少一次級(jí)別的容錯(cuò)性能。

121、Spark提供了檢查點(diǎn)功能,用戶定期記錄中間狀態(tài)。

122、檢查點(diǎn)是有代價(jià)的,需要存儲(chǔ)數(shù)據(jù)至存儲(chǔ)系統(tǒng)。

123、Spark性能調(diào)優(yōu)兩個(gè)方向:

1、每個(gè)批次的處理時(shí)間盡可能短

2、收到數(shù)據(jù)后,盡可能快地處理

124、Storm是開源免費(fèi)的分布式實(shí)時(shí)計(jì)算系統(tǒng)。

125、Storm的核心數(shù)據(jù)抽象是tuple,是命名的值列表。

126、Spark Streaming粗粒度,storm更細(xì)粒度些。

127、核心數(shù)據(jù)抽象的不同導(dǎo)致計(jì)算模式上的本質(zhì)卻別。

128、Weblog分析的典型的流式實(shí)時(shí)應(yīng)用場(chǎng)景。

129、ZK以Fast Paxos算法為基礎(chǔ)。

130、ZK在分布式系統(tǒng)中協(xié)作多任務(wù)。

131、Hbase是一個(gè)通常與Hadoop一起使用的數(shù)據(jù)庫。

132、Kafka是一個(gè)基于發(fā)布-訂閱模型的消息系統(tǒng)。

133、Solr是一個(gè)企業(yè)級(jí)的搜索平臺(tái)。

134、ZK不適合用作海量數(shù)據(jù)存儲(chǔ)。

135、分布式系統(tǒng)中的進(jìn)程通信有兩種選擇:直接通過網(wǎng)絡(luò)進(jìn)行信息交換,或讀寫某些共享存儲(chǔ)。

136、ZK使用共享存儲(chǔ)模型來實(shí)現(xiàn)應(yīng)用間的協(xié)作和同步原語。

137、網(wǎng)絡(luò)通信是分布式系統(tǒng)中并發(fā)設(shè)計(jì)的基礎(chǔ)。

138、分布式系統(tǒng)需注意:

1、消息延遲 ?——傳輸

2、處理器性能——計(jì)算

3、時(shí)鐘偏移 ?——時(shí)鐘

139、數(shù)據(jù)中心通常使用大量統(tǒng)一的硬件。

140、主-從架構(gòu):主節(jié)點(diǎn)負(fù)責(zé)跟蹤從節(jié)點(diǎn)狀態(tài)和任務(wù)的有效性,并分配任務(wù)到節(jié)點(diǎn)。

141、主-從模式必解決三個(gè)關(guān)鍵問題:

很多初學(xué)者,對(duì)大數(shù)據(jù)的概念都是模糊不清的,大數(shù)據(jù)是什么,能做什么,學(xué)的時(shí)候,該按照什么線路去學(xué)習(xí),學(xué)完往哪方面發(fā)展,想深入了解,想學(xué)習(xí)的同學(xué)歡迎加入大數(shù)據(jù)學(xué)習(xí)qq群:458345782,有大量干貨(零基礎(chǔ)以及進(jìn)階的經(jīng)典實(shí)戰(zhàn))分享給大家,并且有清華大學(xué)畢業(yè)的資深大數(shù)據(jù)講師給大家免費(fèi)授課,給大家分享目前國內(nèi)最完整的大數(shù)據(jù)高端實(shí)戰(zhàn)實(shí)用學(xué)習(xí)流程體系

1、主節(jié)點(diǎn)崩潰

2、從節(jié)點(diǎn)崩潰

3、通信故障

142、ZK因故障出現(xiàn)連個(gè)及以上主節(jié)點(diǎn)稱為腦裂(split-brain)。

143、主-從架構(gòu)的需求:

1、主節(jié)點(diǎn)選舉

2、崩潰檢測(cè)

3、組成員關(guān)系管理

4、元數(shù)據(jù)管理

144、ZK:Paxos算法和虛擬同步技術(shù)。

145、Znode Zookeeper 操作和維護(hù)一個(gè)小型的數(shù)據(jù)節(jié)點(diǎn)。

146、Znode類型決定了znode節(jié)點(diǎn)的行為方式。

147、Znode節(jié)點(diǎn)分持久節(jié)點(diǎn)和臨時(shí)節(jié)點(diǎn)。

148、Znode4中類型:

1、持久化(persist)

2、臨時(shí)的

3、持久有序的

4、臨時(shí)有序的

149、通知機(jī)制是單次觸發(fā)的操作。

150、每一個(gè)znode都有一個(gè)版本號(hào),它隨著每次數(shù)據(jù)變化而自增。

151、ZK服務(wù)器端兩種模式:1)獨(dú)立模式、2)仲裁模式。

152、對(duì)ZK集合執(zhí)行請(qǐng)求需要建立會(huì)話。

153、會(huì)話請(qǐng)求以FIFO順序執(zhí)行。

154、會(huì)話狀態(tài):

1、Connecting

2、Connected

3、Closed

4、Not connected

155、Server兩個(gè)端口,第一個(gè)用作通訊,第二個(gè)用于選舉。

156、ZK的API圍繞ZK的句柄(handle)而構(gòu)建。

157、為了從ZK接收通知,我們需要實(shí)現(xiàn)監(jiān)視點(diǎn)(watcher)。

158、監(jiān)視點(diǎn)和通知形成了一個(gè)通用機(jī)制。

159、當(dāng)一個(gè)監(jiān)視點(diǎn)被一個(gè)事件觸發(fā)時(shí),就會(huì)產(chǎn)生一個(gè)通知。

160、Redis是一個(gè)內(nèi)存數(shù)據(jù)庫,基于鍵值對(duì)存儲(chǔ)。

161、Redis是REmoteDictionaryServer(遠(yuǎn)程字典服務(wù)器)簡(jiǎn)寫。

162、 Redis支持鍵值數(shù)據(jù)類型:

1、字符串類型

2、散列類型

3、列表類型

4、集合類型

5、有序集合類型

163、數(shù)據(jù)在Redis和程序中存儲(chǔ)類似。

164、Redis數(shù)據(jù)庫中的所有數(shù)據(jù)都存儲(chǔ)在內(nèi)存中。

165、Redis可以在一秒中讀寫上十萬個(gè)鍵值(普通自己本)。

166、Redis提供數(shù)據(jù)持久化到硬盤。

167、Redis可用做緩存、隊(duì)列系統(tǒng)。

168、Redis可以為每個(gè)鍵設(shè)置生存時(shí)間,過時(shí)自動(dòng)刪除。

169、Redis可以限定數(shù)據(jù)占用的最大內(nèi)存空間。

170、Redis還支持“發(fā)布/訂閱”的消息模式。

171、Redis支持阻塞式讀取。

172、Kill Redis 進(jìn)程的PID也可正常退出,Redis有處理。

173、每個(gè)數(shù)據(jù)類型Redis-cli的展現(xiàn)結(jié)果都不同。

174、Redis默認(rèn)支持16個(gè)數(shù)據(jù)庫,以數(shù)字命令。

175、Redis不支持自定義數(shù)據(jù)庫的名字,每個(gè)數(shù)據(jù)庫以編號(hào)命名。

176、Redis密碼只有一個(gè)。

177、FLUSH ALL 命令清空Redis所有數(shù)據(jù)。

178、一個(gè)Redis最好對(duì)應(yīng)一個(gè)程序。

179、Redis 0號(hào)數(shù)據(jù)庫用于生產(chǎn),1號(hào)數(shù)據(jù)庫用于測(cè)試。

180、Select n 切換數(shù)據(jù)庫。

181、Keys命令需要遍歷Redis中的所有鍵,不建議生產(chǎn)用。

182、Exict key 返回 1/0。

183、Del key返回鍵值個(gè)數(shù),不支持通配符。

184、Type命名用來獲取鍵值的數(shù)據(jù)類型。

185、LPOSH命令的作用是指定列表型鍵中增加一個(gè)元素。

186、Redis能存儲(chǔ)任何形式的字符串。

187、Redis INCR命令讓當(dāng)前鍵值遞增。

188、原子操作取“原子”的“不可拆分”的意思,最下執(zhí)行單元。

189、Redis數(shù)據(jù)類型不支持?jǐn)?shù)據(jù)類型嵌套。

190、散列類型適合存儲(chǔ):使用對(duì)象類別和ID構(gòu)成鍵名,使用字段表示對(duì)象屬性。

191、Redis不要求每個(gè)鍵都依據(jù)此結(jié)構(gòu)存儲(chǔ)。

192、Hset命令用來賦值,Hget用于取值。

193、Hset插入返回1,更新返回0。

194、Hset命令用于散列類型,set用于字符串類型。

195、Hmset處理多個(gè)字段。

196、HgetAll所有字段和字段值。

197、Hexists用于判斷一字段是否存在。

198、HsetNX key field value 當(dāng)字段不存在時(shí)賦值。

199、Hinrby key field increment 增加數(shù)字。

200、Hdel key field 刪除字段。

201、列表類型(List)可以存儲(chǔ)一個(gè)有序的字符串列表。

202、列表類型內(nèi)部是使用雙向鏈表實(shí)現(xiàn)的。

203、借助列表類型,Redis還可以作為隊(duì)列使用。

204、向列表兩端增加元素:

LPUSHKEYVALUE[、、.]

PPUSHKEYVALUE[、、.]

返回長度

205、從列表兩端彈出元素:

LPOPKEY

RPOPKEY

206、獲取列表中元素的個(gè)數(shù) llen key。

207、獲取列表中指定值:LREM KEY count value。

208、Redis集合類型內(nèi)部使用散列表實(shí)現(xiàn)的。

209、增加和刪除元素:

Saddkey?member?[、、.]]

Sremkey?member?[、、.]]

210、Smembers命令返回集合中所有元素。

211、集合間運(yùn)算:

1、Sdiff key [key 、、.] ——差集

2、Sinter key [、、、] ?——交集

3、Sunion 、、、 ? ? ——并集

212、有序集合是Redis最高級(jí)的類型。

213、Redis中的事務(wù)是一組命令的集合。

214、事務(wù):要么全執(zhí)行,要么全不執(zhí)行。

215、Redis不支持回滾功能。

216、Watch命令可以監(jiān)控一個(gè)或多個(gè)鍵。

217、Redis可以用expire命令設(shè)置一個(gè)鍵的過期時(shí)間。

218、TTL命令查看剩余時(shí)間-2刪除,-1永久。

219、Persist取消過期。

220、Redis可限制最大內(nèi)存。

221、LRU算法即“最近最少使用”。

222、有序集合常見的使用場(chǎng)景是大數(shù)據(jù)排序。

223、對(duì)有序集合類型排序是會(huì)忽略元素的分類。

224、Sort默認(rèn)按照從下到大排序,用desc逆序。

225、Sort通過alpha參數(shù)實(shí)現(xiàn)按照字典,順序排序非數(shù)字元素。

226、Sort支持limit返回指定參數(shù)。

227、參考鍵值相同時(shí),Redis會(huì)按照元素本身大小排序。

228、有個(gè)N個(gè)Get參數(shù),每個(gè)元素返回的結(jié)果就有N行。

229、Get會(huì)返回元素本身的值。

230、Store參數(shù)常用來結(jié)合expire緩存排序結(jié)果。

231、Sort是Redis中最強(qiáng)大最復(fù)雜的命令之一。

232、通知的過程可以借助任務(wù)隊(duì)列來實(shí)現(xiàn)。

233、任務(wù)隊(duì)列好處:1)松耦合,2)易于擴(kuò)展。

234、當(dāng)列表中沒有元素BRPOP會(huì)一直阻塞住連接。

235、BRPOP命令按收兩個(gè)參數(shù)鍵名,超時(shí)時(shí)間,單位秒。

236、如果多個(gè)鍵都有元素則從左向右順序取實(shí)現(xiàn)優(yōu)先。

237、發(fā)布者發(fā)布消息的命令是PUBLISH。

238、訂閱頻道的命令是SUBSCRIBE,可用的多個(gè)訂閱。

239、進(jìn)入訂閱狀態(tài)后客戶端可能收到了3種類型的恢復(fù)。

240、PUSH SCRIBE命令訂閱指定的規(guī)則。

241、客戶端和Redis使用TCP協(xié)議連接。

242、Redis的底層通信協(xié)議對(duì)管道提供了支持。

243、精簡(jiǎn)鍵名和鍵值是最直觀的減少內(nèi)存暫用的方式。

244、允許開發(fā)者使用LUA語言編寫腳本傳到Redis中執(zhí)行。

245、LUA腳本好處:1)減少網(wǎng)絡(luò)開銷、2)原子操作、3)復(fù)用。

246、——eval參數(shù)是告訴Redis-clli讀取并運(yùn)行后面的LUA腳本。

247、LUA號(hào)稱性能最高的腳本。

248、LUA腳本很容易和C/C++交互。

249、LUA是一個(gè)動(dòng)態(tài)類型語言。

250、表類型是LUA語言中唯一的數(shù)據(jù)結(jié)構(gòu)。

251、函數(shù)在LUA中是一等值。

252、全局變量只有Nil和非Nil的區(qū)別。

253、在Redis腳本中不能使用全局變量。

254、聲明局部變量的方法為local變量。

255、多行注釋:——[[ ]]。

256、LUA支持多重賦值。

257、LUA有5類操作符:

1、數(shù)學(xué)操作符

2、比較操作符

3、邏輯操作符

4、鏈接操作符

5、取長度操作符

258、LUA if 語句 if .、then .、elseif ..then..else..end。

259、LUA支持while,repeat和for循環(huán)語句。

260、For語句中的循環(huán)變量是局部變量。

261、LUA約定數(shù)組的索引從1開始。

262、Paris是LUA內(nèi)置的函數(shù),實(shí)現(xiàn)類似迭代器的功能。

263、Pairs用來遍歷非數(shù)組的表。

264、函數(shù)的定義為:function(參數(shù)列表) 函數(shù)體 end。

265、…實(shí)現(xiàn)可變參數(shù)。

266、LUA中return和break用于跳出循環(huán)。

267、編寫Redis腳本的目的就是讀寫Redis的數(shù)據(jù)。

268、LUA腳本使用Redis,call函數(shù)調(diào)用Redis命令。

269、EVALHA命令允許開發(fā)者通過腳本。

270、Script kill命令可以終止當(dāng)前腳本的運(yùn)行。

271、Redis支持兩種方式的持久化,一種是RDB方式,另一種是AOF方式。

272、Redis提供了復(fù)制(replication)功能,自動(dòng)同步數(shù)據(jù)庫。

273、在復(fù)制概念中,數(shù)據(jù)庫分為兩類:master/slave。

274、Slave of 參數(shù)指向主數(shù)據(jù)庫,進(jìn)行同步數(shù)據(jù)。

275、通過復(fù)制可以實(shí)現(xiàn)讀寫分離,以提高服務(wù)器的負(fù)載能力。

276、Master用于寫,slave用于讀,適合讀多寫收的場(chǎng)景。

277、哨兵的作用就是監(jiān)控Redis系統(tǒng)的運(yùn)行狀態(tài):

1、監(jiān)控主/從是否正常

2、當(dāng)出現(xiàn)故障時(shí),從升為主

278、哨兵是一個(gè)獨(dú)立的進(jìn)程。

279、哨兵從獨(dú)立進(jìn)程的方式對(duì)一個(gè)主從系統(tǒng)進(jìn)行監(jiān)控。

280、Redis 3.0版本支持集群。

281、生產(chǎn)環(huán)境運(yùn)行時(shí)不能運(yùn)行外界直連Redis。

282、Bing 127.0.0.1只運(yùn)行本機(jī)訪問。

283、Redis支持在配置文件中獎(jiǎng)命令重命名。

284、如果希望直接禁用某個(gè)命令可以將命令重命名成XXX。

285、Redis通信協(xié)議是Redis客戶端與Redis間交流的語言。

286、Redis兩種通信協(xié)議:

1、二進(jìn)制安全的統(tǒng)一請(qǐng)求協(xié)議

2、telnet程序中輸入的簡(jiǎn)單協(xié)議

287、哨兵提供了命令可以通過主數(shù)據(jù)庫的名字獲取當(dāng)前系統(tǒng)的主數(shù)據(jù)庫的地址和端口號(hào)。

288、一個(gè)哨兵可以同時(shí)監(jiān)控多個(gè)Redis主從系統(tǒng)。

289、多個(gè)哨兵也可以同時(shí)監(jiān)控同一個(gè)Redis主從系統(tǒng)。

290、MapReduce兩階段:Map階段和Reduce階段。

291、每個(gè)階段都以鍵值對(duì)作為輸入和輸出。

292、Map階段的輸入時(shí)NCDN原始數(shù)據(jù)。

293、鍵是相對(duì)穩(wěn)健起始位置的偏移量。

294、Mapper類是一個(gè)泛型,四個(gè)參數(shù):

1、輸入鍵

2、輸入值

3、輸出鍵

4、輸出值

295、Hadoop本身提供了一套可優(yōu)化網(wǎng)絡(luò)序列化傳輸?shù)幕绢愋停?/p>

LongWritable 相對(duì)于 Java 的Long

Text 相對(duì)于String

IntWritable相對(duì)于Integer

296、Map()方法提供了context實(shí)例用于輸出內(nèi)容的寫入。

297、Job對(duì)象指定作業(yè)執(zhí)行規(guī)范。

298、構(gòu)造Job對(duì)象后,需要指定輸入和輸出數(shù)據(jù)的路徑。

299、在調(diào)試MapReduce作業(yè)時(shí),知道作業(yè)ID和任務(wù)ID是非常有用的。

300、虛類相對(duì)接口更有利于擴(kuò)展。

301、MapReduce作業(yè)(Job)是客戶端要執(zhí)行的一個(gè)工作單元:它包括輸入數(shù)據(jù),MapReduce程序和配置信息。

302、Hadoop將作業(yè)分成若干個(gè)小任務(wù)(Task)來執(zhí)行,器中包括兩類任務(wù):Map和Reduce。

303、作業(yè)(Job)由一個(gè)Jobtracker及一系列tasktracker控制執(zhí)行過程。

304、Hadoop將MapReduce的輸入數(shù)據(jù)劃分成等長的小數(shù)據(jù)塊稱為“切片”。

305、Hadoop為每一個(gè)切片構(gòu)建一個(gè)map任務(wù)。

306、切片越細(xì),負(fù)載平衡越好。

307、HDFS的塊大小默認(rèn)是64MB。

308、數(shù)據(jù)本地化優(yōu)化——輸入數(shù)據(jù)在本地節(jié)點(diǎn)運(yùn)行map。

309、數(shù)據(jù)通過網(wǎng)絡(luò)傳輸?shù)絤ap任務(wù)節(jié)點(diǎn),效率明顯降低。

310、Map任務(wù)將其輸出寫入本地硬盤,而非HDFS,因?yàn)閙ap的輸出是中間結(jié)果,Job完成自動(dòng)刪除。

311、單個(gè)reduce任務(wù)的輸入通常來自于所有map的輸出。

312、每個(gè)reduce任務(wù)的輸入來自多個(gè)mao任務(wù),所以中間過程稱為shuffle(混洗)。

313、Shuffle對(duì)總執(zhí)行時(shí)間的影響非常大。

314、集群上的可用帶寬限制了MapReduce作業(yè)的數(shù)量。

315、Hadoop允許用戶針對(duì)map任務(wù)的輸出指定一個(gè)combiner。

316、Combiner的規(guī)則制約值可用的函數(shù)類型。

317、Combiner是通過Reducer類來定義的。

318、Hadoop Streaming 使用Unix標(biāo)準(zhǔn)流作為Hadoop和應(yīng)用程序之間的接口。

319、Streaming天生適合用于文件處理。

320、HDFS以流式數(shù)據(jù)訪問模式來存儲(chǔ)超大文件。

321、一次寫入,多次讀取是高效的訪問模式。

322、HDFS中的文件可能只有一個(gè)writer。

323、HDFS的塊大,目的為最小化尋址開銷。

324、HDFS集群有兩類節(jié)點(diǎn):管理者-工作者模式運(yùn)行。

325、Namenode管理文件系統(tǒng)的命名空間。

326、客戶端代表用戶通過與namenode和datanode交互。

327、Datanode是文件系統(tǒng)的工作節(jié)點(diǎn)。

328、在聯(lián)邦環(huán)境下每個(gè)namenode維護(hù)一個(gè)命名空間卷。

329、HDFS的權(quán)限模式與POSIX非常相似。

330、用戶空間文件系統(tǒng)允許整合式一個(gè)Unix系統(tǒng)。

331、從Hadoop文件系統(tǒng)讀取文件,最簡(jiǎn)單使用Java.net.url。

332、Filesystem是一個(gè)通用的文件系統(tǒng)API。

333、Seek()方法是一個(gè)相對(duì)高開銷的操作,需要慎重使用。

334、Filestatus封裝了文件系統(tǒng)中文件和目錄的元數(shù)據(jù)。

335、Hadoop通配符與Unix bach的相同。

336、Hadoop無法自行定義網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)。

337、文件系統(tǒng)的一致模型描述了文件讀/寫的數(shù)據(jù)可見性。

338、HDFS提供了一個(gè)方法來使所有緩存與數(shù)據(jù)節(jié)點(diǎn)強(qiáng)行同步。

339、HDFS中關(guān)閉文件其實(shí)還隱含執(zhí)行syn()方法。

340、Flume是一個(gè)將大規(guī)模數(shù)據(jù)導(dǎo)入HDFS的工具——典型應(yīng)用從另外一個(gè)系統(tǒng)收集日志數(shù)據(jù)。

341、Flume提供了不同數(shù)據(jù)級(jí)別的數(shù)據(jù)投遞可靠性。

342、Sqoop是將數(shù)據(jù)從結(jié)構(gòu)化存儲(chǔ)批量導(dǎo)入HDFS?!獢?shù)據(jù)庫。

343、Distcp是作為一個(gè)MapReduce作業(yè)來實(shí)現(xiàn)的。

344、每個(gè)文件均按塊方式存儲(chǔ),每個(gè)塊的元數(shù)據(jù)存儲(chǔ)在namenode的內(nèi)存中。

345、Hadoop存儲(chǔ)小文件效率非常低。

346、Hadoop存檔文件可以使用MapReduce的輸入。

347、Hadoop自帶一套原子操作用于數(shù)據(jù)I/O操作。

348、HDFS會(huì)對(duì)寫入的存儲(chǔ)數(shù)據(jù)計(jì)算校驗(yàn)和,并在讀取數(shù)據(jù)時(shí)驗(yàn)證校驗(yàn)和。

349、Datanode負(fù)責(zé)在收到數(shù)據(jù)后存儲(chǔ)該數(shù)據(jù)及其驗(yàn)證校驗(yàn)和。

350、客戶端成功驗(yàn)證一個(gè)數(shù)據(jù)塊后,datanode更新日志。

351、Datanode定期驗(yàn)證所有數(shù)據(jù)塊。

352、Hadoop的LocalFile Systen執(zhí)行客戶端的校驗(yàn)和驗(yàn)證。

353、校驗(yàn)的計(jì)算代價(jià)是相當(dāng)?shù)偷摹?/p>

354、LocalFileSystem通過checksumFileSystem來完成自己的任務(wù)。

355、文件壓縮兩大好處:存儲(chǔ)和傳輸。

356、序列化兩大領(lǐng)域常見:進(jìn)程間通信和存儲(chǔ)。

357、Writable兩個(gè)方法:dataoutput/datainput。

358、RawComParator允許其實(shí)現(xiàn)直接比較數(shù)據(jù)流中的記錄。

359、Writable類對(duì)java基本類型提供封裝。

360、Text是針對(duì)URT-8序列的writable類。

361、Text類的find()方法返回字節(jié)偏移量。

362、多數(shù)情況下需要將Text對(duì)象換成String對(duì)象。

363、BytesWritable是對(duì)二進(jìn)制數(shù)據(jù)數(shù)組的封裝。

364、NullWritable是writable的特殊類型,序列化長度為0.

365、Nulwritable不讀也不寫,只當(dāng)占位符。

366、NullWritable可以用作在SequenceFile中的鍵。

367、ObjectWritable是對(duì)Java基本類型的一個(gè)通用封裝。

368、由于writable是MapReduce數(shù)據(jù)路徑的核心,所有調(diào)整二進(jìn)制表示對(duì)性能產(chǎn)生顯著效果。

369、適當(dāng)重寫一個(gè)類,會(huì)更加適應(yīng)我們的需求。

370、IDL——接口定義語言。

371、Avro是一個(gè)獨(dú)立于編程語言的數(shù)據(jù)序列化系統(tǒng)。

372、Avro模式通常用于Json來寫,數(shù)據(jù)通常采用二進(jìn)制格式來編碼。

373、Avro為序列化和反序列化提供了API。

374、Avro數(shù)據(jù)文件時(shí)可切分的,適合MapReduce快速處理。

375、Avro語言互相操作性。

376、Avro定義了對(duì)象的排列順序。

377、Hadoop配置后添加的資源文件屬性會(huì)覆蓋之前定義的屬性。

378、MRUnit是一個(gè)測(cè)試庫。

379、測(cè)試驅(qū)動(dòng)程序:

1、使用本地作業(yè)運(yùn)行器

2、使用一個(gè)mini集群來運(yùn)行它

380、Mini集群廣泛應(yīng)用于Hadoop自帶的自動(dòng)測(cè)試包中。

381、Hadoop_CLASSPATH是一項(xiàng)客戶端的設(shè)置。

382、為了啟動(dòng)作業(yè),我們需要運(yùn)行驅(qū)動(dòng)程序。

383、Job上的waitforCompletion()方法啟動(dòng)作業(yè)并檢查進(jìn)展情況。

384、作業(yè)ID的格式包含兩部分:

1、Jobtracker開始時(shí)間

2、唯一標(biāo)識(shí)增量計(jì)數(shù)器

385、任務(wù)屬于作業(yè),任務(wù)ID通過替換作業(yè)ID的作業(yè)前綴為任務(wù)前綴,然后加上一個(gè)后綴表示哪個(gè)作業(yè)類的任務(wù)。

386、Hadoop的web界面用來瀏覽作業(yè)信息。

387、作業(yè)歷史包括已完成作業(yè)的時(shí)間和配置信息。

388、每個(gè)reducer產(chǎn)生一個(gè)輸出文件。

389、最經(jīng)典的調(diào)試方法,打印語句來調(diào)試程序。

390、任務(wù)頁面包括一些看作業(yè)總?cè)蝿?wù)細(xì)節(jié)的鏈接。

391、針對(duì)不同用戶,Hadoop在不同的地方生產(chǎn)日志。

392、Hadoop允許分析作業(yè)中的一部分任務(wù)。

393、Jobcontrol的實(shí)例表示一個(gè)作業(yè)的運(yùn)行圖。

394、Ooize中,工作流是一個(gè)有動(dòng)作節(jié)點(diǎn)和控制節(jié)點(diǎn)組成的DAG。

395、每個(gè)工作都必須有一個(gè)start節(jié)點(diǎn)和一個(gè)end節(jié)點(diǎn)。

396、Oozie提供了一組與工作流交互的函數(shù)。

397、工作流應(yīng)用由工作流定義和所有運(yùn)行所需的資源。

398、運(yùn)行MapReduce作業(yè):

1、Job對(duì)象上的submit()

2、Waitforcompletion()

399、客戶端,提交MapReduce作業(yè)。

400、Jobtracker,運(yùn)行作業(yè)劃分后的任務(wù)。

401、Jobsummiter作業(yè)提交過程:

1、箱Jobtracker請(qǐng)求一個(gè)新的作業(yè)ID

2、檢查作業(yè)的輸出說明

3、計(jì)算作業(yè)的輸入分片

4、將運(yùn)行作業(yè)所需的資源復(fù)制到Jobtracker文件系統(tǒng)中。

5、告知Jobtracker作業(yè),準(zhǔn)備執(zhí)行。

402、心跳 向Jobtracker表明tasktracker是否還存活。

403、MapReduce 1 :

1、作業(yè)的提交

2、作業(yè)的初始化

3、任務(wù)的分配

4、任務(wù)的執(zhí)行

5、進(jìn)度和狀態(tài)的更新

6、作業(yè)完成

404、YARN (Yet Another Resource Negotiator)。

405、YARN將Jobtracker的職能劃分為多個(gè)獨(dú)立的實(shí)體。

406、YARN將兩種角色劃分為兩個(gè)獨(dú)立的守護(hù)進(jìn)程:

1、資源管理器

2、應(yīng)用管理器

407、YARN設(shè)計(jì)的精妙之處在于不同的YARN應(yīng)用可以在同一個(gè)集群共存。

408、MapReduce確保每個(gè)reducer的輸入都是按鍵排序的。

409、系統(tǒng)執(zhí)行排序的過程稱為shuffle。

410、Shuffle屬于不斷被優(yōu)化和改進(jìn)的代碼的一部分。

411、Shuffle是MapReduce的“心臟”是奇跡發(fā)生的地方。

412、每個(gè)map任務(wù)都有一個(gè)環(huán)形內(nèi)存緩沖區(qū)用于存儲(chǔ)任務(wù)的輸出。

413、Hadoop設(shè)置作業(yè)配置參數(shù)作為streaming程序的環(huán)境變量。

414、MapReduce模型將作業(yè)分解成任務(wù),然而并行地運(yùn)行任務(wù)。

415、Hadoop MapReduce 使用一個(gè)提交協(xié)議來確保作業(yè)和任務(wù)都完成功或失敗。

416、Hadoop在他們自己的Java虛擬機(jī)上運(yùn)行任務(wù),以區(qū)別其他正在運(yùn)行的任務(wù)。

417、計(jì)數(shù)器是收集作業(yè)統(tǒng)計(jì)信息的有效手段之一。

418、Hadoop為每個(gè)作業(yè)維護(hù)若干內(nèi)置計(jì)數(shù)器,以描述多項(xiàng)指標(biāo)。

419、任務(wù)計(jì)數(shù)器由其任務(wù)維護(hù),并定期發(fā)送給tasktracker再有tasktracker發(fā)送給Jobtracker。

420、作業(yè)計(jì)數(shù)器由Jobtracker維護(hù)。

421、計(jì)數(shù)器由一個(gè)java枚舉(enum)類型來定義。

422、計(jì)數(shù)器是全局的。

423、排序是MapReduce的核心技術(shù)。

424、MapReduce能夠執(zhí)行大型數(shù)據(jù)集鍵的“鏈接”操作。

425、“邊數(shù)據(jù)”是作業(yè)所需的額外的只讀數(shù)據(jù)。

426、RAID —— 磁盤陣列

427、HDFS無需使用RAID的冗余機(jī)制。

428、Hadoop部分代碼需在Unix環(huán)境下執(zhí)行。

429、Namenode和Jobtracker最好分別放在不同機(jī)器中。

430、Hadoop集群架構(gòu)通常包含兩級(jí)網(wǎng)絡(luò)拓?fù)洹?/p>

431、為了達(dá)到Hadoop的最佳性能,配置Hadoop系統(tǒng)以讓其了解網(wǎng)絡(luò)拓?fù)錉顩r舊極為關(guān)鍵。

432、HDFS和MapReduce可安裝同一系統(tǒng)的不同位置。

433、Hadoop控制腳本依賴SSH來執(zhí)行針對(duì)整個(gè)集群的操作。

434、集群的每個(gè)Hadoop節(jié)點(diǎn)都各自保存一系列配置文件。

435、Hadoop也支持為所有master和worker機(jī)器采用同一套配置文件。

436、為每一機(jī)器類維護(hù)單獨(dú)的配置文件。

437、同步所有機(jī)器上的配置文件極具挑戰(zhàn)性。

438、Hadoop內(nèi)置一些腳本來運(yùn)行指令,在集群內(nèi)啟動(dòng)和終止守護(hù)進(jìn)程。

439、MapReduce控制腳本不使用masters文件。

440、Namenode在內(nèi)存中保存整個(gè)命名空間中的所有文件元數(shù)據(jù)和塊元數(shù)據(jù)。

441、Hadoop為各個(gè)守護(hù)進(jìn)程分配1GB內(nèi)存。

442、在一個(gè)tasktracker上能夠同時(shí)運(yùn)行的任務(wù)數(shù)取決于一臺(tái)機(jī)器有多少個(gè)處理器。

443、Hadoop守護(hù)進(jìn)程一般同時(shí)運(yùn)行RPC和HTTP兩個(gè)服務(wù)器。

444、各個(gè)datanode運(yùn)行TCP/IP服務(wù)器以支持塊傳輸。

445、YARN是運(yùn)行MapReduce的下一代架構(gòu)。

446、YARN有一個(gè)作業(yè)歷史服務(wù)器和一個(gè)web應(yīng)用程序代理服務(wù)器。

447、YARN更加精細(xì)化管理內(nèi)存。

448、YARN守護(hù)進(jìn)程運(yùn)行一個(gè)或多個(gè)RPC和HTTP服務(wù)。

449、Kerberos獲取服務(wù):

1、認(rèn)證

2、授權(quán)

3、服務(wù)請(qǐng)求

450、Hadoop使用委托令牌來支持后續(xù)認(rèn)證訪問。

451、Whirr使用SSH與云端的機(jī)器通信。

452、Pig為大型數(shù)據(jù)集的處理提供了更高層的抽象。

453、Pig提供了一套更強(qiáng)大的數(shù)據(jù)變換操作。

454、Pig Latin程序由一系列的操作式變換組成。

455、Pig是一種探索大規(guī)模數(shù)據(jù)集的腳本語言。

456、MapReduce的一個(gè)缺點(diǎn)是開發(fā)周期太長。

457、Pig提供了多個(gè)命令來檢查和處理程序中已有的數(shù)據(jù)結(jié)構(gòu)。

458、Pig被設(shè)計(jì)為可擴(kuò)展的,處理路徑中幾乎每個(gè)部分都可以定制。

459、Pig是作為一個(gè)客戶端應(yīng)用程序運(yùn)行的。

460、Pig兩種模式:本地和MapReduce。

461、Grunt是與Pig進(jìn)行交互的外殼程序(shell)。

462、在MapReduce模式下,Pig翻譯成MapReduce作業(yè)。

463、Pig發(fā)布版本只和特定的Hadoop版本對(duì)應(yīng)。

464、三種執(zhí)行Pig程序方法:

1、腳本

2、Grunt

3、嵌入式方法

465、創(chuàng)建一個(gè)精簡(jiǎn)的數(shù)據(jù)集是一門藝術(shù)。

466、Pig Latin是一種數(shù)據(jù)流編程語言,而SQL是一種聲明式編程語言。

467、一個(gè)Pig Latin程序由一組語句構(gòu)成。

468、Pig Latin并美歐正式的語言定義。

469、在Pig Latin程序執(zhí)行時(shí),每個(gè)命令按次序進(jìn)行解析。

470、Hive是一個(gè)構(gòu)建在Hadoop上的數(shù)據(jù)倉庫框架。

471、Hive一般在工作站上運(yùn)行。

472、Hive把數(shù)據(jù)組織為表。

473、元數(shù)據(jù)(如表模式)存儲(chǔ)在metastore數(shù)據(jù)庫中。

474、Hive外殼環(huán)境是我們交互的主要方式。

475、HiveQL是Hive的查詢語言。

476、Hive操作表而Pig直接操作數(shù)據(jù)集。

477、HiveQL大小寫不敏感。

478、用-e選項(xiàng)在行嵌入命令,不用加分號(hào)。

479、在Hive的倉庫目錄中,表存儲(chǔ)為目錄。

480、Metastore包含兩部分:服務(wù)和后臺(tái)數(shù)據(jù)的存儲(chǔ)。

481、對(duì)于獨(dú)立的metastore,mysql是一種很受歡迎的選擇。

482、Hive把表組織成“分區(qū)”。

483、桶為表加上了額外的結(jié)構(gòu)。

484、每個(gè)桶就是表(分式)目錄里的一個(gè)文件。

485、Hive從兩個(gè)維度對(duì)表的存儲(chǔ)進(jìn)行管理:行格式和文件格式。

486、視圖是一種用select語句定義的“虛表”。

487、Hbase是一個(gè)在HDFS上開發(fā)的面向列的分布式數(shù)據(jù)庫。

488、數(shù)據(jù)模型:

1、應(yīng)用把數(shù)據(jù)存放在帶標(biāo)簽的表中

2、表中行的鍵也是字節(jié)數(shù)組

3、行中的列被分成“列族”

4、一個(gè)表的列族必須預(yù)先給出

5、所有列族成員都一起存放在文件系統(tǒng)中。

489、HBase自動(dòng)把表水平分成“區(qū)域”,每個(gè)區(qū)域由表中行的子集構(gòu)成。

490、HBase依賴于Zookeeper。

491、HBase通過Hadoop文件系統(tǒng)API來持久化存儲(chǔ)數(shù)據(jù)。

492、HBase有Java開發(fā)。

493、Hbase是一個(gè)分布式的,面向列的數(shù)據(jù)存儲(chǔ)系統(tǒng)。

494、HBase有一個(gè)高效的批量加載工具。

495、Sqoop將結(jié)構(gòu)化存儲(chǔ)器抽取到Hadoop中。

496、Sqoop有java開發(fā)。

497、Hive不支持事務(wù)。

498、Hive是最適合數(shù)據(jù)倉庫應(yīng)用程序的。

499、Hive和Mysql提供的SQL方言最接近。

500、Map操作會(huì)將集合中的元素從一種形式轉(zhuǎn)換成另一種形式。

作者:正在簡(jiǎn)書上學(xué)習(xí)

鏈接:http://www.itdecent.cn/p/3410c0f0ee3e

來源:簡(jiǎn)書

著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。

?著作權(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)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

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