
12
|
第二章:
HDFS
第二名稱節點可以說擁有運算史中最糟糕的名稱。它欺騙了許多
Hadoop
新手,
誤信縱使發生了邪惡機器人的啟示錄(
evil robot apocalypse
),讓名稱節點開
始有感情而走出資料中心(譯註:可能在講《機械公敵》的橋段),他們的叢集
也會繼續運作。很可惜,這不是真的。後面我們會解釋第二名稱節點的一些功能,
但現在請記得它不是備援,這跟瞭解它是什麼一樣重要。
讀取與寫入資料
用戶端能透過各種工具或
API
從
HDFS
讀取或寫入資料(詳第
21
頁「存取與整合」),
但這些工具都遵循著相同的流程。某種程度上,用戶端透過
Hadoop
函式庫來察覺到
HDFS
的存在跟語義。這個函式庫封藏了大部份
namenode
與
datanode
間的必要通訊細
節,同時也處理使用分散式檔案系統可能會發生的各種錯誤情境。
讀取流程
首先,讓我們看一下執行
HDFS
讀取操作的邏輯。為此,我們將假設在
HDFS
中已經
存在一個檔案
/user/esammer/foo.xt
。為了使用
Hadoop
的用戶端函式庫(通常是
Java
的
JAR
檔),每個用戶端都必須擁有跟叢集一樣的設定,標明
namenode
的位置(詳
第五章)。如圖
2-2
所示,用戶端首先詢問
namenode
,告知它想要讀取的是哪個檔案。
用戶端的身份必須先經過驗證──無論是透過設定信任的用戶端並允許指定某個用戶
名稱,或者透過像
Kerberos
(詳第六章)這種強大的認證機制──然後檢查該檔案的
擁有者與權限設定。如果該檔案存在,且該用戶具有存取的權限,