hadoop實戰4--(hdfs讀流程,hdfs寫流程,副本放置策略)
hadoop實戰4--(hdfs讀流程,hdfs寫流程,副本放置策略)
su - hadoop
jps
cd app/hadoop-2.6.0-cdh5.7.0
bin/hdfs dfs -ls
一、本機被挖礦程式入侵處理?
1.top檢視佔用的程式
2. ps -ef | grep 7509 #檢視埠對應的指令碼
3.檢視是否有定時任務,並編輯檢視內容
可以看到定時任務中的內容,將其註釋掉
#wget -q -o
4.善後處理
因為是雲主機,開放了8088埠,故容易別侵入,因為程式使用了wget程式,故我們把雲主機上的wget程式解除安裝掉,防止再次發生。
yum remove wget
5. 殺掉埠
kill -9 7095
二、dfs寫流程:
1 .例如執行命令hdfs dfs -put LICENSE.TXT /
對我們操作者而言是無感知的。並不知道上傳到哪個節點。
2.在執行命令的瞬間,呼叫了dfs命令,dfs根據hdfs 幫助命令可以看到,是執行了一個hadoop所支援的操作檔案系統的命令。
圖解說明:
寫流程對於我們操作者而言,是無感知的
1.Client呼叫FileSystem.create(filePath)方法,
去與NN進行【RPC】通訊,check該路徑的檔案是否存在
以及有沒有許可權建立該檔案。 假如OK,就建立一個新檔案,
但是不關聯任何的block,nn根據上傳的檔案大小且塊大小且副本數,
計算多少塊,以及塊存放的dn,最終將這些資訊返回給客戶端
則為【FSDataOutputStream】。
2.Client呼叫FSDataOutputStream.write方法,將第一個塊的
第一個副本寫到第一個DN,寫完寫第二個副本,寫完寫第三個副本;
當第三個副本寫完,返回給ack packet給第二個副本的DN,然後第二個DN返回ack packet給第一個DN;
第一個DN返回ack packet給FSDataOutputStream物件,標識第一個塊,3副本寫完!
然後依次寫剩餘的塊!
(對操作者來說是透明的)
3.當向檔案寫入資料完成後,Client呼叫FSDataOutputStream.close()方法。關閉輸出流,flush換成區的資料包。
4.再呼叫FileSystem.complete(),通知NN節點寫入成功。
思考1:
當一個檔案有三個副本,三個節點,某刻損壞一個節點,此時檔案還能寫麼?
答:不能。副本數=節點數,故我們在部署的時候:副本資料<DN。
總結: 存活的DN滿足我們的副本數 就能寫
類比只有一個節點的時候,該節點掛掉,是不能寫的。
實驗: 類同當只有一個節點的時候,該節點掛掉,還可以寫麼?
1.jps
2.kill -9 datanode程式
3. hdfs dfs - put LICENSE.txt /ruozedata
結論:是不能寫的
思考2:
一個檔案有三個備份,放在三個節點 ,此時損壞一個幾點,該檔案是否還能讀?
答:是可以讀的,寫不是不能寫的
此時該怎麼辦?
1.手動修復
hdfs debug recoverlease / a.txt 手工恢復這些壞塊(依據其他副本來修復)
2.自動修復
配置兩個引數
dfs.datanode.
實驗:
模擬塊損壞:
1.可以刪除目錄下的塊(mv 到其他位置。模擬損壞)
2.hdfs fsck / #檢測塊
3.修復塊
三、hdfs讀流程
圖解說明:
FSDataIutputStream
1.Client透過FileSystem.open(filePath),
去與NN進行【RPC】通訊,返回該檔案的部分
或全部的block列表,也就是返回FSDataInputStream物件。
2.Client呼叫【FSDataInputStream】物件的read()方法,
a. 去與第一個塊的最近的DN進行read,讀取完後,會check,
假如success,會關閉與當前DN通訊。假如fail 會記錄失敗的DN+block資訊,下次就不會讀取。
那麼會去該塊的第二個DN的地址讀取。
b.然後去第二個塊的最近的DN上讀取,會check,success,會關閉與當前DN通訊。
c.假如當前block列表全部讀取完成,檔案還沒結束,那麼FileSystem會從NN獲取下一批的block列表。
(對於操作者,是透明的,感覺就是連續的資料流)
3.Client呼叫FSDataInputStream.close() 關閉輸入流
四、副本放置策略:
思考:為何一個機櫃放5個伺服器?
答:機櫃總電流大小/每個伺服器電流大小=伺服器個數
總結:client橘黃色部分是命令列,提交應該響應速度快,故第一個副本放置在“本地”,其他副本放置在別的機櫃。2,3個副本不應該放置在同一伺服器中, 叢集環境隨機放置副本。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28339956/viewspace-2636696/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- HDFS的讀寫流程
- Hadoop之HDFS檔案讀寫流程說明Hadoop
- HDFS讀寫流程(重點)
- hadoop原始碼_hdfs啟動流程_2_DataNodeHadoop原始碼
- hadoop原始碼_hdfs啟動流程_3_心跳機制Hadoop原始碼
- Hadoop–HDFSHadoop
- Hadoop框架:HDFS讀寫機制與API詳解Hadoop框架API
- Hadoop HDFS(一)Hadoop
- Hadoop HDFS(二)Hadoop
- HDFS讀寫兩步教程
- 好程式設計師大資料培訓分享HDFS讀流程程式設計師大資料
- Hdfs儲存策略
- 【HDFS】HADOOP DISTRIBUTED FILE SYSTEMHadoop
- Hadoop(十)HDFS API操作HadoopAPI
- Hadoop原理之——HDFS原理Hadoop
- HDFS 命令:用於管理HDFS的Hadoop Shell命令大全Hadoop
- Hadoop大資料實戰系列文章之HDFS檔案系統Hadoop大資料
- HDFS balance策略詳解
- Hadoop HDFS 設計隨想Hadoop
- hadoop hdfs 常用命令Hadoop
- Hadoop KMS配置(HDFS透明加密)Hadoop加密
- Hadoop面試題之HDFSHadoop面試題
- Hadoop學習筆記—HDFSHadoop筆記
- hadoop-HDFS優缺點Hadoop
- 好程式設計師大資料學習路線分享HDFS讀流程程式設計師大資料
- HDFS 03 - 你能說說 HDFS 的寫入和讀取過程嗎?
- Hadoop hdfs完全分散式搭建教程Hadoop分散式
- hadoop之上傳資料到hdfs模式Hadoop模式
- Hadoop 基礎之 HDFS 入門Hadoop
- Hadoop的HDFS架構入門Hadoop架構
- Hadoop系列之HDFS 資料塊Hadoop
- 建立HDFS,匯入HADOOP jar包HadoopJAR
- HDFS的機架感知策略
- 大資料系列2:Hdfs的讀寫操作大資料
- 小白學習大資料測試之hadoop hdfs和MapReduce小實戰大資料Hadoop
- HDFS寫過程分析
- HDFS短路讀詳解
- Hadoop學習之路(六)HDFS基礎Hadoop