前提和設計目標
硬體錯誤
硬體錯誤是常態而不是異常。hdfs可能由成百上千的伺服器所構成,每個伺服器上儲存著檔案系統的部分資料。我們面對的現實是構成系統的元件數目是巨大的,而且任一元件都有可能失效,這意味著總是有一部分hdfs的元件是不工作的。因此錯誤檢測和快速、自動的恢復是hdfs最核心的架構目標。
流式資料訪問
執行在hdfs上的應用和普通的應用不同,需要流式訪問它們的資料集。hdfs的設計中更多的考慮到了資料批處理,而不是使用者互動處理。比之資料訪問的低延遲問題,更關鍵的在於資料訪問的高吞吐量。posix標準設定的很多硬性約束對hdfs應用系統不是必需的。為了提高資料的吞吐量,在一些關鍵方面對posix的語義做了一些修改。
大規模資料集
執行在hdfs上的應用具有很大的資料集。hdfs上的乙個典型檔案大小一般都在g位元組至t位元組。因此,hdfs被調節以支援大檔案儲存。它應該能提供整體上高的資料傳輸頻寬,能在乙個集群裡擴充套件到數百個節點。乙個單一的hdfs例項應該能支撐數以千萬計的檔案。
簡單的一致性模型
hdfs應用需要乙個「一次寫入多次讀取」的檔案訪問模型。乙個檔案經過建立、寫入和關閉之後就不需要改變。這一假設簡化了資料一致性問題,並且使高吞吐量的資料訪問成為可能。map/reduce應用或者網路爬蟲應用都非常適合這個模型。目前還有計畫在將來擴充這個模型,使之支援檔案的附加寫操作。
「移動計算比移動資料更划算」
乙個應用請求的計算,離它操作的資料越近就越高效,在資料達到海量級別的時候更是如此。因為這樣就能降低網路阻塞的影響,提高系統資料的吞吐量。將計算移動到資料附近,比之將資料移動到應用所在顯然更好。hdfs為應用提供了將它們自己移動到資料附近的介面。
異構軟硬體平台間的可移植性
hdfs在設計的時候就考慮到平台的可移植性。這種特性方便了hdfs作為大規模資料應用平台的推廣。
hdfs的結構
既然 hadoop 守護程序已經在執行了,現在看看每個守護程序在 hadoop 框架中的作用。namenode 是 hadoop 中的主伺服器,它管理檔案系統命名空間和對集群中儲存的檔案的訪問。還有乙個 secondary namenode,它不是 namenode 的冗餘守護程序,而是提供週期檢查點和清理任務。在每個 hadoop 集群中可以找到乙個 namenode 和乙個 secondary namenode。
datanode 管理連線到節點的儲存(乙個集群中可以有多個節點)。每個儲存資料的節點執行乙個 datanode 守護程序。
最後,每個集群有乙個 jobtracker,它負責排程 datanode 上的工作。每個 datanode 有乙個 tasktracker,它們執行實際工作。jobtracker 和 tasktracker 採用主-從形式,jobtracker 跨 datanode 分發工作,而 tasktracker 執行任務。jobtracker 還檢查請求的工作,如果乙個 datanode 由於某種原因失敗,jobtracker 會重新排程以前的任務。
使用jps檢視程序
要想檢查守護程序是否正在執行,可以使用 jps 命令(這是用於 jvm 程序的 ps 實用程式)。這個命令列出 5 個守護程序及其程序識別符號。
hdfs常用操作
hadoop dfs -ls 列出hdfs下的檔案
hadoop dfs -ls in 列出hdfs下某個文件中的檔案
hadoop dfs -put test1.txt test 上傳檔案到指定目錄並且重新命名,只有所有的datanode都接收完資料才算成功
hadoop dfs -get in getin 從hdfs獲取檔案並且重新命名為getin,同put一樣可操作檔案也可操作目錄
hadoop dfs -rmr out 刪除指定檔案從hdfs上
hadoop dfs -cat in/* 檢視hdfs上in目錄的內容
hadoop dfsadmin -report 檢視hdfs的基本統計資訊,結果如下
hadoop dfsadmin -safemode le**e 退出安全模式
hadoop dfsadmin -safemode enter 進入安全模式
新增節點
可擴充套件性是hdfs的乙個重要特性,首先在新加的節點上安裝hadoop,然後修改$hadoop_home/conf/master檔案,加入namenode主機名,然後在namenode節點上修改$hadoop_home/conf/sl**es檔案,加入新加節點主機名,再建立到新加節點無密碼的ssh連線
執行啟動命令:
start-all.sh
然後可以通過http://(master node的主機名):50070檢視新新增的datanode
負載均衡
start-balancer.sh,可以使datanode節點上選擇策略重新平衡datanode上的資料塊的分布
hadoop(包括hdfs)非常適合在商用硬體(commodity hardware)上做分布式儲存和計算,因為它不僅具有容錯性和可擴充套件性,而且非常易於擴充套件。map-reduce框架以其在大型分布式系統應用上的簡單性和可用性而著稱,這個框架已經被整合進hadoop中。
hdfs的可配置性極高,同時,它的預設配置能夠滿足很多的安裝環境。多數情況下,這些引數只在非常大規模的集群環境下才需要調整。
用j**a語言開發,支援所有的主流平台。
支援類shell命令,可直接和hdfs進行互動。
namenode和datanode有內建的web伺服器,方便使用者檢查集群的當前狀態。
新特性和改進會定期加入hdfs的實現中。下面列出的是hdfs中常用特性的一部分:
檔案許可權和授權。
機架感知(rack awareness):在排程任務和分配儲存空間時考慮節點的物理位置。
安全模式:一種維護需要的管理模式。
fsck:乙個診斷檔案系統健康狀況的工具,能夠發現丟失的檔案或資料塊。
rebalancer:當datanode之間資料不均衡時,平衡集群上的資料負載。
公升級和回滾:在軟體更新後有異常發生的情形下,能夠回滾到hdfs公升級之前的狀態。
secondary namenode:對檔案系統名字空間執行週期性的檢查點,將namenode上hdfs改動日誌檔案的大小控制在某個特定的限度下。
今日學習總計
1.1 numpy numpy常用資料結構 numpy中常用的資料結構是ndarray格式 使用array函式建立,語法格式為array 列表或元組 可以使用其他函式例如arange linspace zeros等建立 numpy常用方法 ndim 返回int,表示ndarray的維度 shape ...
今日學習總計
有以下兩個重要的步驟來使系統的廣播意圖配合廣播接收器工作。建立廣播接收器 註冊廣播接收器 還有乙個附加的步驟,要實現自定義的意圖,你必須建立並廣播這些意圖。建立廣播接收器 廣播接收器需要實現為broadcastreceiver類的子類,並重寫onreceive 方法來接收以intent物件為引數的訊...
今日學習總計
bean 的裝配可以理解為依賴關係注入,bean 的裝配方式也就是 bean 的依賴注入方式。spring 容器支援多種形式的 bean 的裝配方式,如基於 xml 的 bean 裝配 基於 annotation 的 bean 裝配和自動裝配等。spring 基於 xml 的裝配通常採用兩種實現方式...