- 1、集群配置
- (1)集群啟動/停止方式總結
- (2)編寫Hadoop集群常用腳本
- (3)常考面試題
- 【1】常用端口號
- 【2】常用配置-文件
- 2、HDFS概述
- (1)HDFS產出背景及定義
- (2)HDFS優缺點
- (3)HDFS的組成架構
- (4)HDFS文件塊大小(面試重點)
- 3、HDFS的Shell操作
- (1)準備工作
- (2)上傳命令
- (3)下載命令
- (4)HDFS直接操作命令
1、集群配置
(1)集群啟動/停止方式總結
1)各個模塊分開啟動/停止(配置ssh是前提)常用
(1)整體啟動/停止HDFS
start-dfs.sh/stop-dfs.sh
(2)整體啟動/停止YARN
start-yarn.sh/stop-yarn.sh
2)各個服務組件逐一啟動/停止
(1)分別啟動/停止HDFS組件
hdfs --daemon start/stop namenode/datanode/secondarynamenode
(2)啟動/停止YARN
yarn --daemon start/stop resourcemanager/nodemanager
一般都是按照集群來啟動,不然如果有100+臺服務器的話,就無法啟動了
(2)編寫Hadoop集群常用腳本
在寫腳本的時候,能寫絕對路徑就不要寫相對路徑。
1)Hadoop集群啟停腳本(包含HDFS,Yarn,Historyserver):myhadoop.sh
[root@hadoop102 ~]$ cd /home/wenxin/bin
[root@hadoop102 bin]$ vim myhadoop.sh
- 輸入如下內容
#!/bin/bashif [ $# -lt 1 ]
thenecho "No Args Input..."exit ;
ficase $1 in
"start")echo " =================== 啟動 hadoop集群 ==================="echo " --------------- 啟動 hdfs ---------------"ssh hadoop102 "/home/wenxin/module/hadoop-3.1.3/sbin/start-dfs.sh"echo " --------------- 啟動 yarn ---------------"ssh hadoop103 "/home/wenxin/module/hadoop-3.1.3/sbin/start-yarn.sh"echo " --------------- 啟動 historyserver ---------------"ssh hadoop102 "/home/wenxin/module/hadoop-3.1.3/bin/mapred --daemon start historyserver"
;;
"stop")echo " =================== 關閉 hadoop集群 ==================="echo " --------------- 關閉 historyserver ---------------"ssh hadoop102 "/home/wenxin/module/hadoop-3.1.3/bin/mapred --daemon stop historyserver"echo " --------------- 關閉 yarn ---------------"ssh hadoop103 "/home/wenxin/module/hadoop-3.1.3/sbin/stop-yarn.sh"echo " --------------- 關閉 hdfs ---------------"ssh hadoop102 "/home/wenxin/module/hadoop-3.1.3/sbin/stop-dfs.sh"
;;
*)echo "Input Args Error..."
;;
esac
目前還沒找到解決方法。
2)查看三臺服務器Java進程腳本:jpsall
[root@hadoop102 bin]$ vim jpsall
- 輸入如下內容
#!/bin/bashfor host in hadoop102 hadoop103 hadoop104
doecho =============== $host ===============ssh $host jps
done
- 保存后退出,然后賦予腳本執行權限
[root@hadoop102 bin]$ chmod +x jpsall
3)分發/bin目錄,保證自定義腳本在三臺機器上都可以使用
[root@hadoop102 ~]$ xsync /bin
(3)常考面試題
【1】常用端口號
-
hadoop3.x
HDFP NameNode 內部通訊端口:8020/9000/9820
HDFS NameNode 對用戶的查詢端口:9870
Yarn查看任務運行情況的:8088
歷史服務器:19888 -
hadoop2.x
HDFS NameNode 內部通訊端口:8020/9000
HDFS NameNode 對用戶的查詢端口:50070
Yarn查看任務運行情況的:8088
歷史服務器19888
【2】常用配置-文件
-
hadoop3.x :
core-site.xml、hdfs-site.xml、yarn-site.xml、mapred-site.xml workers -
hadoop2.x :
core-site.xml、hdfs-site.xml、yarn-site.xml、mapred-site.xml slaves
2、HDFS概述
(1)HDFS產出背景及定義
1)HDFS產生背景
隨著數據量越來越大,在一個操作系統存不下所有的數據,那么就分配到更多的操作系統管理的磁盤中,但是不方便管理和維護,迫切需要一種系統來管理多臺機器上的文件,這就是分布式文件管理系統。HDFS只是分布式文件管理系統中的一種。
分布式指的是多臺服務器解決同一件事情。
2)HDFS定義
HDFS(Hadoop Distributed File System),它是一個文件系統,用于存儲文件,通過目錄樹來定位文件;其次,它是分布式的,由很多服務器聯合起來實現其功能,集群中的服務器有各自的角色。
HDFS的使用場景:適合一次寫入,多次讀出的場景。一個文件經過創建、寫入和關閉之后就不需要改變。
已經寫入的就不適合修改了
(2)HDFS優缺點
優點:
缺點:
(3)HDFS的組成架構
(4)HDFS文件塊大小(面試重點)
塊太大不利于后期的并發運算,而且處理起來較慢。
3、HDFS的Shell操作
hadoop fs
具體命令 或者R hdfs dfs
具體命令
兩個是完全相同的。
命令大全:
[-appendToFile <localsrc> ... <dst>][-cat [-ignoreCrc] <src> ...][-chgrp [-R] GROUP PATH...][-chmod [-R] <MODE[,MODE]... | OCTALMODE> PATH...][-chown [-R] [OWNER][:[GROUP]] PATH...][-copyFromLocal [-f] [-p] <localsrc> ... <dst>][-copyToLocal [-p] [-ignoreCrc] [-crc] <src> ... <localdst>][-count [-q] <path> ...][-cp [-f] [-p] <src> ... <dst>][-df [-h] [<path> ...]][-du [-s] [-h] <path> ...][-get [-p] [-ignoreCrc] [-crc] <src> ... <localdst>][-getmerge [-nl] <src> <localdst>][-help [cmd ...]][-ls [-d] [-h] [-R] [<path> ...]][-mkdir [-p] <path> ...][-moveFromLocal <localsrc> ... <dst>][-moveToLocal <src> <localdst>][-mv <src> ... <dst>][-put [-f] [-p] <localsrc> ... <dst>][-rm [-f] [-r|-R] [-skipTrash] <src> ...][-rmdir [--ignore-fail-on-non-empty] <dir> ...]
<acl_spec> <path>]][-setrep [-R] [-w] <rep> <path> ...][-stat [format] <path> ...][-tail [-f] <file>][-test -[defsz] <path>][-text [-ignoreCrc] <src> ...]
(1)準備工作
- 啟動dfs服務
-help:輸出這個命令參數
hadoop fs -help rm
創建/sanguo文件夾
hadoop fs -mkdir /sanguo
在網址上輸入:hadoop102:9870
(2)上傳命令
1)-moveFromLocal:從本地剪切粘貼到HDFS
[root@hadoop102 hadoop-3.1.3]# hadoop fs -moveFromLocal ./shuguo.txt /sanguo
2)-copyFromLocal:從本地文件系統中拷貝文件到HDFS路徑去
[root@hadoop102 hadoop-3.1.3]# hadoop fs -copyFromLocal weiguo.txt /sanguo
3)-put:等同于copyFromLocal,生產環境更習慣用put
[root@hadoop102 hadoop-3.1.3]# hadoop fs -put wuguo.txt /sanguo
4)-appendToFile:追加一個文件到已經存在的文件末尾【HDFS只允許在文件的末尾進行追加,不允許修改】
[root@hadoop102 hadoop-3.1.3]# hadoop fs -appendToFile liubei.txt /sanguo/shuguo.txt
將liubei.txt文件追加到sanguo文件夾下的shuguo.txt文件的末尾
(3)下載命令
1)-copyToLocal:從HDFS拷貝到本地
hadoop fs -copyToLocal /sanguo/shuguo.txt ./
將hdfs中的sanguo文件夾下的shuguo.txt文件拷貝到本地的當前路徑下
2)-get:等同于copyToLocal,生產環境更習慣用get
hadoop fs -get /sanguo/shuguo.txt ./
(4)HDFS直接操作命令
1)-ls: 顯示目錄信息
[root@hadoop102 hadoop-3.1.3]$ hadoop fs -ls /sanguo
2)-cat:顯示文件內容
[root@hadoop102 hadoop-3.1.3]$ hadoop fs -cat /sanguo/shuguo.txt
3)-chgrp、-chmod、-chown:Linux文件系統中的用法一樣,修改文件所屬權限
[root@hadoop102 hadoop-3.1.3]$ hadoop fs -chmod 666 /sanguo/shuguo.txt
[root@hadoop102 hadoop-3.1.3]$ hadoop fs -chown root:root /sanguo/shuguo.txt
4)-mkdir:創建路徑
[root@hadoop102 hadoop-3.1.3]$ hadoop fs -mkdir /jinguo
5)-cp:從HDFS的一個路徑拷貝到HDFS的另一個路徑
[root@hadoop102 hadoop-3.1.3]$ hadoop fs -cp /sanguo/shuguo.txt /jinguo
6)-mv:在HDFS目錄中移動文件
[root@hadoop102 hadoop-3.1.3]$ hadoop fs -mv /sanguo/wuguo.txt /jinguo
[root@hadoop102 hadoop-3.1.3]$ hadoop fs -mv /sanguo/weiguo.txt /jinguo
7)-tail:顯示一個文件的末尾1kb的數據
因為在生產環境當中,往往最末尾的文件是最新的文件。文件都是從最末尾追加的。
[root@hadoop102 hadoop-3.1.3]$ hadoop fs -tail /jinguo/shuguo.txt
8)-rm:刪除文件或文件夾
[root@hadoop102 hadoop-3.1.3]$ hadoop fs -rm /sanguo/shuguo.txt
9)-rm -r:遞歸刪除目錄及目錄里面內容
[root@hadoop102 hadoop-3.1.3]$ hadoop fs -rm -r /sanguo
10)-du統計文件夾的大小信息
[root@hadoop102 hadoop-3.1.3]$ hadoop fs -du -s -h /jinguo
[root@hadoop102 hadoop-3.1.3]$ hadoop fs -du -h /jinguo
11)-setrep:設置HDFS中文件的副本數量
[root@hadoop102 hadoop-3.1.3]$ hadoop fs -setrep 10 /jinguo/shuguo.txt
這里設置的副本數只是記錄在NameNode的元數據中,是否真的會有這么多副本,還得看DataNode的數量。因為目前只有3臺設備,最多也就3個副本,只有節點數的增加到10臺時,副本數才能達到10。