1.Hadoop分布式集群與偽分布式集群的區(qū)別
分布式集群需要多臺(tái)電腦,,一臺(tái)為奴隸主機(jī),其他的為奴隸機(jī)用來存儲(chǔ)數(shù)據(jù)。
偽分布式集群可以使用一臺(tái)電腦搭建,也可以使用多臺(tái)電腦,只需要在slaves中添加自己的主機(jī)名就可以了,其他的與分布式一樣。
2.Hadoop分為三個(gè)核心部分,每個(gè)部分是什么,有什么功能?
三個(gè)核心:hdfs,mapreduce和yarn
Hadfs:分布式文件系統(tǒng),mapreduce:分布式計(jì)算框架,yarn:資源調(diào)度器
功能:hdfs:由很多服務(wù)器聯(lián)合起來實(shí)現(xiàn)其功能,集群中的服務(wù)器有各自的角色。用于存儲(chǔ)文件,通過目錄樹來定位文件
Mapreduce:采用“分而治之”的思想,來處理大規(guī)模的數(shù)據(jù)。將數(shù)據(jù)拆解成多個(gè)部分,并利用集群的多個(gè)節(jié)點(diǎn)同時(shí)進(jìn)行數(shù)據(jù)處理,然后將各個(gè)節(jié)點(diǎn)得到的中間結(jié)果進(jìn)行匯總,經(jīng)過進(jìn)一步的計(jì)算(該計(jì)算也是并行進(jìn)行的),得到最終結(jié)果
3.Hadoop分布式集群,默認(rèn)備份數(shù)為多少,每個(gè)數(shù)據(jù)塊大小是多少?在哪個(gè)配置文件中可以修改備份數(shù)與每個(gè)數(shù)據(jù)塊大小?
默認(rèn)備份為3份,每塊數(shù)據(jù)大小128M, 在hdfs-site.xml配置文件中可以修改備份數(shù)和數(shù)據(jù)塊大小。
<property> <name>dfs.block.size</name> <value>128</value> </property> <property> <name>dfs.replication</name> <value>3</value> </property>
4.Hadoop分布式集群中NN和DN、SN,指得是什么?他們分別有什么作用?
NN:Name Node 管理HDFS的命名空間,配置副本策略,管理數(shù)據(jù)塊(Block)映射信息,處理客戶端讀寫請(qǐng)求
DN:DataNode 存儲(chǔ)實(shí)際的數(shù)據(jù)塊,執(zhí)行數(shù)據(jù)塊的讀/寫操作
SN:SecondaryNameNode 輔助NameNode,分擔(dān)其工作量,比如定期合并Fsimage和Edits,并推送給NameNode ,在緊急情況下,可輔助恢復(fù)NameNode
5.Hadoop分布式集群中,如果NN掛掉,會(huì)出現(xiàn)什么情況?如果DN掛掉,會(huì)出現(xiàn)什么情況?如果SN掛掉,會(huì)出現(xiàn)什么情況?數(shù)據(jù)會(huì)丟失嗎?
NN掛掉,數(shù)據(jù)丟失,分布式集群崩潰,DN掛掉,由于其他機(jī)器中存有備份,數(shù)據(jù)不會(huì)丟失,正常情況下對(duì)分布式集群不會(huì)出現(xiàn)大問題,SN掛掉,數(shù)據(jù)不會(huì)丟失,只是失去了對(duì)NameNode中映射的備份,為了防止意外(NN掛掉),需要盡快恢復(fù)SN。
6.Hadoop集群中yarn模式,是什么?在分布式計(jì)算中有什么作用?
Yarn模式是資源調(diào)度器,
yarn在管理者機(jī)器中是ResourceManager,負(fù)責(zé) 協(xié)調(diào)和管理整個(gè)集群(所有 NodeManager)的資源,響應(yīng)用戶提交的不同類型應(yīng)用程序的 解析,調(diào)度,監(jiān)控等工作。
在奴隸機(jī)中是NodeManager,是真正執(zhí)行應(yīng)用程序的容器的提供者, 監(jiān)控應(yīng)用程序的資源使用情況(CPU,內(nèi)存,硬盤,網(wǎng)絡(luò)),并通過心跳向集群資源調(diào)度器 ResourceManager 進(jìn)行匯報(bào)以更新自己的健康狀態(tài)。同時(shí)其也會(huì)監(jiān)督 Container 的生命周期 管理,監(jiān)控每個(gè) Container 的資源使用(內(nèi)存、CPU 等)情況,追蹤節(jié)點(diǎn)健康狀況,管理日 志和不同應(yīng)用程序用到的附屬服務(wù)(auxiliary service)。
7.請(qǐng)描述對(duì)文本單詞統(tǒng)計(jì)中mapreduce的過程。(文字和流程圖描述)
過程分為4個(gè)階段:spilt,map,shuffle,reduce
MapReduce過程
8、Split階段(分片輸入)
有兩份文件,經(jīng)過分片處理之后,會(huì)被分成三個(gè)分片(split1,split2,split3)。依次作為map階段的輸入。
經(jīng)過分片處理之后,產(chǎn)生了三個(gè)分片,每個(gè)分片就是一行的三個(gè)單詞,分別作為 map 階段的輸入。
9、Map階段
Split 階段的輸出作為 Map 階段的輸入,一個(gè)分片對(duì)應(yīng)一個(gè) Map 任務(wù)。在 Map 階段中,讀取 value 值,將 value 值拆分為的形式。key 為 每個(gè)單詞,value 為 1。
Map 階段需要考慮 key 是什么,value 是什么。特別是 key ,他將作為后面 reduce 的依據(jù)。輸出結(jié)果例如:<Deer, 1>,<River, 1>,<Bear, 1>,<Bear, 1>。
Map 階段的輸出會(huì)作為 Shuffle 階段的輸入。
10、Shuffle階段
理解為從 Map 輸出到 Reduce 輸入的過程,而且涉及到網(wǎng)絡(luò)傳輸。
將 Map 中 key 相同的都?xì)w置到一起,作為一個(gè) Reduce 的輸入
11、Reduce階段
將 key 相同的數(shù)據(jù)進(jìn)行累計(jì)。輸出結(jié)果例如:<Beer, 3>。
12.Hadoop集群中請(qǐng)描述RM,NM是什么?有什么作用?
RM和NM都是屬于hadoop yarn資源調(diào)度器:
RM:資源管理者:1、處理客戶端請(qǐng)求2、啟動(dòng)或監(jiān)控 MRAppMaster3、監(jiān)控 NodeManager4、資源的分配與調(diào)度
NM:節(jié)點(diǎn)管理者:1、管理單個(gè)節(jié)點(diǎn)上的資源2、處理來自 ResourceManager 的命令3、處理來自 MRAppMaster 的命令
13.Hadoop集群中RM中分為幾大模塊,每個(gè)模塊有什么作用?
RM分為:兩個(gè)模塊:ApplicationMaster (AM)和Containe。
ApplicationMaster (AM):
用戶提交的應(yīng)用程序均包含一個(gè)AM,負(fù)責(zé)應(yīng)用的監(jiān)控,跟蹤應(yīng)用執(zhí)行狀態(tài),重啟失敗任務(wù)等。ApplicationMaster是應(yīng)用框架,它負(fù)責(zé)向ResourceManager協(xié)調(diào)資源,并且與NodeManager協(xié)同工作完成Task的執(zhí)行和監(jiān)控。
Container:
Container是YARN中的資源抽象,它封裝了某個(gè)節(jié)點(diǎn)上的多維度資源,如內(nèi)存、CPU、磁盤、網(wǎng)絡(luò)等,當(dāng)AM向RM申請(qǐng)資源時(shí),RM為AM返回的資源便是用Container 表示的。 YARN會(huì)為每個(gè)任務(wù)分配一個(gè)Container且該任務(wù)只能使用該Container中描述的資源。
14.ETL是什么?kettle有什么作用?你常用使用的核心對(duì)象有哪些?分別有什么作用?
ETL是:用來描述將數(shù)據(jù)從來源端經(jīng)過抽取、轉(zhuǎn)換、加載至目的端的過程。ETL一詞較常用在數(shù)據(jù)倉(cāng)庫(kù),但其對(duì)象并不限于數(shù)據(jù)倉(cāng)庫(kù)。
核心對(duì)象:BI和數(shù)據(jù)倉(cāng)庫(kù)
作用:BI:用來將企業(yè)中現(xiàn)有的數(shù)據(jù)(原始數(shù)據(jù)或商業(yè)數(shù)據(jù)或業(yè)務(wù)數(shù)據(jù)等)進(jìn)行有效的整合,快速準(zhǔn)確地提供報(bào)表并提出決策依據(jù),幫助企業(yè)做出明智的業(yè)務(wù)經(jīng)營(yíng)決策。
數(shù)據(jù)倉(cāng)庫(kù):它為企業(yè)提供一定的BI(商業(yè)智能)能力,指導(dǎo)業(yè)務(wù)流程改進(jìn)、監(jiān)視時(shí)間、成本、質(zhì)量以及控制。數(shù)據(jù)倉(cāng)庫(kù)的輸入方是各種各樣的數(shù)據(jù)源,最終的輸出用于企業(yè)的數(shù)據(jù)分析、數(shù)據(jù)挖掘、數(shù)據(jù)報(bào)表等方向。
15.hadoop集群中50070端口和8088端口,分別指的什么?
50070:奴隸主機(jī)的namenode;
8088:yarn資源調(diào)度器中的RM;里面有所有的進(jìn)程完成情況
數(shù)據(jù)倉(cāng)庫(kù)hive中,啟動(dòng)hive服務(wù)器的命令有哪些?分別代表什么意思??jī)?nèi)部表與外部表有啥區(qū)別?分區(qū)與分桶,指的是什么?
命令:hive --service metastore 啟動(dòng)元數(shù)據(jù)
hive:本地運(yùn)行hive命令
hiveserver2:遠(yuǎn)程服務(wù),開放默認(rèn)端口 10000
內(nèi)部表:內(nèi)部表刪除表時(shí),數(shù)據(jù)也會(huì)被刪除,
外部表:外部表在創(chuàng)建時(shí)需要加external,刪除表時(shí),表中的數(shù)據(jù)仍然會(huì)存儲(chǔ)在hadoop中,不會(huì)丟失
分區(qū):分文件夾:分目錄,把一個(gè)大的數(shù)據(jù)集根據(jù)業(yè)務(wù)需要分割成小的數(shù)據(jù)集
分桶:分?jǐn)?shù)據(jù):分桶是將數(shù)據(jù)集分解成更容易管理的若干部分
16.什么是BI,什么是數(shù)據(jù)倉(cāng)庫(kù)?為什么需要用數(shù)據(jù)倉(cāng)庫(kù)hive?
BI:即商務(wù)智能,它是一套完整的解決方案,用來將企業(yè)中現(xiàn)有的數(shù)據(jù)(原始數(shù)據(jù)或商業(yè)數(shù)據(jù)或業(yè)務(wù)數(shù)據(jù)等)進(jìn)行有效的整合,快速準(zhǔn)確地提供報(bào)表并提出決策依據(jù),幫助企業(yè)做出明智的業(yè)務(wù)經(jīng)營(yíng)決策。
數(shù)據(jù)倉(cāng)庫(kù):是一個(gè)很大的數(shù)據(jù)存儲(chǔ)集合,出于企業(yè)的分析性報(bào)告和決策支持目的而創(chuàng)建,對(duì)多樣的業(yè)務(wù)數(shù)據(jù)進(jìn)行篩選與整合。
為什么:hive為企業(yè)提供一定的BI(商業(yè)智能)能力,指導(dǎo)業(yè)務(wù)流程改進(jìn)、監(jiān)視時(shí)間、成本、質(zhì)量以及控制。數(shù)據(jù)倉(cāng)庫(kù)的輸入方是各種各樣的數(shù)據(jù)源,最終的輸出用于企業(yè)的數(shù)據(jù)分析、數(shù)據(jù)挖掘、數(shù)據(jù)報(bào)表等方向。
17.數(shù)據(jù)倉(cāng)庫(kù)Hive跟hadoop集群,有什么關(guān)系?使用hive的好處是什么?
關(guān)系:Hive是基于Hadoop的一個(gè)數(shù)據(jù)倉(cāng)庫(kù)工具,可以將結(jié)構(gòu)化的數(shù)據(jù)文件映射為一張表,并提供類SQL查詢功能,hadoop是用來存儲(chǔ)數(shù)據(jù)的,hive是用來操作數(shù)據(jù)的。hive的數(shù)據(jù)文件存儲(chǔ)在hdfs上,至于hdfs文件位置是由hadoop管理的。
好處:1)操作接口采用類SQL語法,提供快速開發(fā)的能力(簡(jiǎn)單、容易上手)
2)避免了去寫MapReduce,減少開發(fā)人員的學(xué)習(xí)成本
3)Hive的執(zhí)行延遲比較高,因此Hive常用于數(shù)據(jù)分析,對(duì)實(shí)時(shí)性要求不高的場(chǎng)合
4)Hive優(yōu)勢(shì)在于處理大數(shù)據(jù),對(duì)于處理小數(shù)據(jù)沒有優(yōu)勢(shì),因?yàn)镠ive的執(zhí)行延遲比較高
5)Hive支持用戶自定義函數(shù),用戶可以根據(jù)自己的需求來實(shí)現(xiàn)自己的函數(shù)
18.Hadoop集群中hadoop namenode –format ,可否在任意節(jié)點(diǎn)出,多次執(zhí)行這條語句?如果執(zhí)行多次語句后,會(huì)出現(xiàn)什么樣的結(jié)果?如果在節(jié)點(diǎn)中執(zhí)行語句,怎么修改?
不能,將hadoop格式化,將集群中所有的電腦name下的文件全部刪除,重新啟動(dòng)hadoop
19.如何創(chuàng)建hive的外部表(包含分區(qū)與分桶)?在創(chuàng)建表時(shí)候和后期導(dǎo)入數(shù)據(jù)中,需要注意哪些問題?如何向hive的外部表中導(dǎo)入本地?cái)?shù)據(jù)文件data.csv和外部hdfs上的/data.txt文件?
創(chuàng)建表的時(shí)候加入關(guān)鍵字:external,數(shù)據(jù)字段數(shù)量,類型要一致,分隔符要相同,導(dǎo)入數(shù)據(jù)時(shí)要不要覆蓋,不覆蓋的情況下不能用overwrite。
本地?cái)?shù)據(jù):load data local inpath '/home/user/data.csv' into table 導(dǎo)入的表名;
Hdfs:load data inpath '/home/user/data.txt' into table 導(dǎo)入的表名;
20.hive中集合數(shù)據(jù)類型什么?有什么作用?什么情況下,hive需要使用集合類型?
數(shù)據(jù)類型:包括6個(gè)基本類型:整數(shù),布爾類型,浮點(diǎn)數(shù),字符,時(shí)間類型。字節(jié)數(shù)組
2個(gè)集合數(shù)據(jù)類型: struct,map,array
基本數(shù)據(jù)類型表達(dá)不了的情況下使用集合類型