1.hosts檔案
無論Linux還是window系統都有hosts檔案
Linux/mac配置hadoop網路:
區域網內網機器 /VM : 內網ip
雲伺服器: 內網ip + 外網ip(ssh連結、開啟服務web介面、對外提供服務,也就是
類似的堡壘機
)
雲伺服器的host檔案也是配置
內網IP
[root@hadoop001 ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
本地瀏覽器訪問hadoop的web管理介面問題?
在本地訪問hadoop web管理介面時,需配置網路
1.情況 本地-----------VM虛擬機器中hadoop
連結線路:本地瀏覽器外網----windows hosts-----本地VM-----hadoop
方法:配置C:\Windows\System32\drivers\etc\hosts
192.168.1.100 hadoop # IP為虛擬機器中的
內網
IP
2.情況 本地-------------雲服務中hadoop
連結線路 :本地瀏覽器外網----windows hosts-----雲伺服器外網-----雲伺服器內網-----hadoop
方法:配置C:\Windows\System32\drivers\etc\hosts
XXXXXXXXXX hadoop # IP為雲伺服器的
外網
IP
提醒:
在windows上進行apache hbase 開發時,windows配置hbase叢集的時候
hosts檔案 都要配置hbase叢集的節點的i “IP HOSTNAME”。
hadoop web介面介紹
1.透過hdfs上傳檔案
2.web界一覽表
首頁--Hadoop 顯示hdfs檔案資訊
找
到根目錄下
這個檔案。包括檔案的
詳細資訊
。
首頁--Overview 檢視節點資訊
SUMARY資訊,也是提供節點資訊,生產一般看DFS Remaining剩餘空間
首頁--Overview Startup Progress
yarn的web介面介紹
配置yarn的記憶體大小
預設是8G,如果yarn的作業無法提交,需要調大此記憶體。
HDFS架構設計:
塊block介紹
hdfs-default.xml 尋找blocksize,配置塊大小引數。
dfs.blocksize
#塊的大小預設128M
134217728
dfs.replication
#塊的副本數預設3份
3
生產HDFS儲存小檔案問題?
答:生產HDFS不適合存放小檔案,
HDFS將檔案以塊的方式儲存,塊預設128M。比如一個260M的檔案,實際存塊情況如下
實際儲存 規格
塊A: 128M 128M A0 A1 A2
塊B: 128M 128M B0 B1 B2
塊C: 4M 128M C0 C1 C2
(生產上 hdfs不適合儲存小檔案?為什麼不合適?如果真的有小檔案,該怎麼辦?該怎麼合併)
將檔案以塊的方式分割,去儲存
面試題:
一個檔案160m,塊大小128m,副本數2。
請問實際幾個塊,實際物理儲存多少?
塊1 128m
塊2 32m
各自備份:
-
塊3 128m
-
塊4 32m
-
所以4個塊,實際大小為160m *2 =320m
-
3.HDFS架構設計
程式介紹
namenode 簡稱nn 名稱節點
secondary namenode 簡稱snn 第二名稱節點
datanode 簡稱dn 資料節點
每個節點存放塊。相鄰節點中塊是互相備份關係,
主從架構
Rack : 機櫃 可以放多個主機 10個 GPU主機 5個
機櫃:
1.物理的 類似圖中的機櫃
2.虛擬的 類似虛擬機器劃分割槽域
namenode作用:
1.管理檔案系統的名稱空間,維護檔案系統(可理解成維護一些檔案的資料字典)
2.存放在【名稱空間映象檔案-fsimage】和【編輯日誌editlog】永久儲存在磁碟上。
資訊包括:
a.檔名稱
b.檔案目錄結構
c.檔案屬性 建立時間 許可權 副本數
d.檔案對應哪些資料塊
e.資料塊對應哪些datanode節點上。
每個節點的塊有損壞等因素,nn節點不會持久化儲存塊的對映關係,故需要namenode與datanode 之間有一個動態維 護關係,叫做blockmap。
blockmap
datanode定期向namenode傳送blockreport資訊。
以此namenode在【記憶體】中動態維護這種對映關係。
假設 nn 8G,爆了
關於生產上 hdfs不適合儲存小檔案的思考,
生產上 hdfs不適合儲存小檔案?為什麼不合適?如果真的有小檔案,該怎麼辦?該怎麼合併。
假設namenode有8G大小,nn節點需要250位元組,有1億個小檔案即1億*250位元組大小,是很佔空間的
因為解決方案是:將碎片檔案儘量合併為小於一個塊的大小 ,例如:120m <=128m
hdfs合併檔案有具體方法,百度搜尋。
尋找存放檔案資訊:
su - hadopp
ll
cd dfs/name/current
[root@hadoop001 current]# pwd
/tmp/hadoop-hadoop/dfs/name/current
[root@hadoop001 current]# ll
total 1040
-rw-r--r--. 1 root root 1048576 Feb 17 20:23 edits_inprogress_0000000000000000001 #存放檔案資訊位置,
記錄讀寫請求
-rw-r--r--. 1 root root 321 Feb 17 19:23 fsimage_0000000000000000000 #存放檔案資訊
-rw-r--r--. 1 root root 62 Feb 17 19:23 fsimage_0000000000000000000.md5
-rw-r--r--. 1 root root 2 Feb 17 19:23 seen_txid
-rw-r--r--. 1 root root 219 Feb 17 19:23 VERSION
提示:secoundarynode 程式就是透過備份edits_inprogress_0000000000000000001 和 fsimage_0000000000000000000來防止,檔案目錄樹字典的丟失
,
達到保護檔案資訊的目的。
datanode作用: 讀寫檔案的資料塊。
1.儲存【資料塊】和【資料塊的校驗和】
“資料塊的校驗和” 作用比如在上海寫入A塊和杭州寫入B塊。使用者在讀取資料先判斷 塊是否有損壞,再就近原則拿塊,高容錯的做法。
2.與namenode通訊:
a.每隔3秒傳送一個心跳,通知自己的連結狀態。
b.每10次心跳傳送一次當前節點的blockreport,以便namenode及時更新各節點塊資訊檔案。
snn作用:
1.讀取namenode日誌資訊,定時備份,將fsimage+editlog檔案合併為新的fsimage檔案,防止namenode掛掉。
2.將合併後的檔案推送給nn節點,簡稱為checkpoint
引數 :
dfs.namenode.checkpoint.period 3600s ,相當於1小時備份一次。
editlog與fsiamge的關係
editlog是小碎片檔案,fsiamge是一段時間內對editlog日誌檔案的歸併。
例如:editlog-001
editlog-002 統一合併為 fsiamge-001
editlog-003
editlog-004
editlog-001
editlog-002
editlog-003
editlog-004
統一合併為 fsiamge-002
editlog-005
editlog-006
editlog-007
editlog-008
這裡要注意: fsiamge檔案是對前面 editlog日誌檔案的全量歸併,而不是增量。