為什麼會存在這篇文章,是因為我產生了以下問題,為了理清關係並解決疑惑。
什麼是hdfs?
需要搭建什麼樣的環境?
hdfs只是乙個名詞,還是需要人為的去搭建環境?
很多文章都在說hdfs的原理,我就想知道需不需要我去搭建?
來自hadoop官網的截圖:
簡單點,hadoop處理大資料,那麼必然面對資料的儲存問題,所以有了hdfs(分布式檔案儲存系統)。
hdfs是hadoop的重點元件之一,提供對資料儲存的介面訪問。
須知:a.
分布式。
如果乙個檔案非常大,單台伺服器無法處理
第一步,分割成小檔案
第二步,將小檔案分散到多台伺服器之上。伺服器平行計算,提高效率。
這就是乙個分布式的儲存。
b.副本。
為防止因為各種原因造成的檔案丟失(比如,由某台機器損壞而導致的檔案丟失),對乙個檔案,我們應該儲存幾個副本,備份。
c.hdfs的原理與hdfs的實現
(1)先解釋namenode與datenode:什麼是?&&存在的原因
由一台伺服器到多台伺服器
伺服器集群:將很多伺服器集中起來一起進行同一種服務,集群可以利用多個計算機進行平行計算從而獲得很高的計算速度。
hdfs部署在乙個比較大的伺服器集群上。
為了可以更好的提高效率,我們從眾多的伺服器中選擇一台,讓她作為乙個中心伺服器,負責排程 、對其他伺服器是否正常工作以及儲存了哪些資料進行乙個記錄。
想想,當你要查詢乙個檔案時,通過在中心伺服器中的相應記錄中查詢確定檔案位置快,還是在海量的資料中逐一對比查詢快,必然是前者效率更高。
這台中心伺服器,我們稱她為namenode。其他伺服器,稱之為datenode。
namenode:乙個中心伺服器。主節點 ,管理結點 , 知道datenode的存活狀態 儲存資料的元資料資訊。
datenode:從節點 ,要告訴namenode她上塊的位置 ,利用系統本身的檔案系統儲存真實的檔案塊。
namenodedatenode
儲存基於記憶體儲存(不會和磁碟發生交換)
本地磁碟目錄儲存資料,檔案形式
主要功能
(1)接受客戶端的讀寫服務
(2)知道datenode的存活狀態
(3)儲存資料的元資料資訊
(2)收集datenode匯報的block列表資訊
(1)啟動datenode時會向namenode匯報block資訊
(2)通過向namenode傳送心跳保持與其聯絡(3秒一次),如果namenode10分鐘沒有收到datenode的心跳,則認為其已經lost,並copy其上的block到其他的datenode
(2)以上傳a.txt為例。
當客戶端上傳儲存檔案a.txt時, 如預設以128m大小分割檔案,200m的a.txt檔案分割成兩個資料塊進行儲存,128m與72m。
1.客戶端向namenode傳送上傳檔案a.txt的請求
2.namenode返回客戶端允許上傳的資訊
3.客戶端將資料塊上傳到元資料中
4.namenode根據請求,並結合datenode的資訊,返回datenode的ip
5.客戶端與datenode1建立連線。與此同時,datenode1與datenode3之間也建立傳輸資料的通道,直到最後乙個為止。依次返回傳輸資料通道建立完畢資訊 , 直到響應給客戶端。dn*把接收到的packet儲存到指定的目錄中 , 並且把packet繼續往後發 , 直到最後乙個。傳送完畢後反方向追個返回ack應答 , 保證packet的安全穩定 , 直到返回給客戶端。
待第一塊上傳完畢 , 客戶端按照上述流程走一遍 , 上傳第二個塊 , 從第3步開始 , 重新發起請求 , 尋找可用的dn位置
待所有塊上傳完畢 , 客戶端把資訊告知namenode , namenode把資訊同步到檔案系統的元資料中。
在說hdfs的原理時,只談namenode與datenode是淺嘗輒止的,還可以深入的談一談namenode持久化(fsimage、edits、redis)、secondary namenode、副本放置策略、hdfs讀取或寫入檔案的過程詳解等。
(1)hadoop多節點集群安裝配置,環境配置成功。
可以參考一步步教你hadoop多節點集群安裝配置
(2)修改配置檔案。(這一步,指定namenode與datenode)
(3)啟動hdfs。
(2)(3)可以參考hdfs環境搭建及命令演示
JSON快速入手
慢慢看不要急 假如這是返回的json串 1 建立乙個jsonobject物件 實體類 public class bean s 格式的生成 我這裡是通過實體類去操作的 如果不需要可以通過jsonobject中的put方法去實現 bean bean new bean 1 建立乙個實體類物件 listca...
爬蟲套路,快速入手
這裡不講知識點,直接把爬蟲套路寫出來,可以直接上手 第一步引入要使用的庫函式 import requests 這個庫引入用於請求,很常用 from lxml import etree xpath解析要引用的庫 假如引入庫後報錯,開啟終端 pip install 缺少的庫函式 pip install ...
HDFS快速入門
hdfs hadoop distributed file system 是hadoop元件中的分布式儲存系統,提供高可靠性 高擴充套件性和高吞吐率的資料儲存服務。1.檔案線性切割成塊 block 塊分散儲存在集群的各個節點中。2.單一檔案block大小一致,不同的檔案可以設定的不一樣。3.block...