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






