轉自:
http://www.cnblogs.com/zhanghuijunjava/archive/2013/04/22/hadoop-block_hdfs.html?utm_source=tuicool
http://www.cnblogs.com/Richardzhu/p/3623323.html
Hadoop文件放置
HDFS適合做:
- 存儲大文件。上G、T甚至P。
- 一次寫入,多次讀取。並且每次作業都要讀取大部分的數據。
- 搭建在普通商業機羣上就可以了。雖然會經常宕機,但HDFS有良好的容錯機制。
HDFS不適合做:
- 實時數據獲取。如果有這個需求可以用HBase。
- 很多小文件。因爲namenode要存儲HDFS的metadata(比如目錄的樹狀結構,每個文件的文件名、ACL、長度、owner、文件內容存放的位置等等信息),所以HDFS上文件的數目受到namenode內存的限制。
- 併發環境下的寫入和修改。
hadoop中存儲文件以HDFS形式存儲,HDFS擁有自己的設計原則:
一、hadoop balance工具的用法:
啓動balance:
bin/start-balancer.sh -threshold 5
停止balance:
bin/stop-balancer.sh
二、影響hadoop balance工具的幾個參數:
-threshold默認設置:10,參數取值範圍:0-100,參數含義:判斷集羣是否平衡的目標參數,每一個datanode存儲使用率和集羣總存儲使用率的差值都應該小於這個閥值,理論上,該參數設置的越小,整個集羣就越平衡,但是線上環境中,hadoop集羣在進行balance時,還在併發的進行數據的吸入和刪除,所以有可能無法到達設定的平衡參數值。
dfs.balance.bandwidthPerSec默認設置:1048576(1M/S),參數含義:設置balance工具的運行中所能佔用的帶寬,設置的過大可能會造成mapred運行緩慢。
設置該參數需要修改hdfs-site.xml文件:
<property> <name>dfs.balance.bandwidthPerSec</name> <value>20971520</value> <description> Specifies the maximum bandwidth that each datanode can utilize for the balancing purpose in term of the number of bytes per second. </description> </property>
上面是設置傳輸速率爲20M/S。
三、hadoop balance工具其它特點:
balance工具的運行過程中,迭代的將文件塊從高使用率的datanode移動到低使用率的datanode上,每一個迭代過程中移動的數據量不超過下面兩個值的較小者:10G或者指定閥值*容量,且每次迭代不超過20分鐘。每次迭代結束後,balance工具將更新該datanode的文件塊分佈情況。