姓名:王咫毅
學(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)注明出處。