namenode磁盤: sas帶RAID,多磁盤存儲文件系統元信息.
datanode配置: 不帶RAID, 雙網卡: 一個用於內部數據傳輸,一個用於外部數據傳輸.
hadoop各節點的分布:namenode和jobtracker部署:namenode與jobtracker分離.tasktracker與datanode配對.
Trash: hadoop回收站功能默認是禁止的,刪除文件,就是直接刪除了,所以要記得配置好trash。trash功能還是不錯的,當rm后,它會move到當前文件夾下的.Trash目錄下,誤刪文件后,可以到對應的.Trash目錄下恢復文件,參考配置屬性fs.trash.interval。
備份:namendoe的元數據切記做好多處備份,包括熱備和冷備,否則元數據一丟,整個集群的數據都無法恢復了。熱備:namenode的元數據配置寫兩份,一分寫本地,另一份寫遠程nfs。冷備:定時拷貝namenode的元數據到遠程的nfs,保留十天甚至更長。
Datanode的數據目錄:如果datanode對應的機器上有多塊磁盤,例如/disk1-/disk3,dfs.data.dir可以配置為”/disk1/data,/disk2/data,/disk3/data”,datanode會在寫數據時,以輪詢的方式選擇一個目錄寫入數據,一般這些目錄是不同的塊設備,不存在的目錄會被忽略掉,參考配置屬性dfs.data.dir.datanode如果有多個磁盤不建議做raid,因為做raid會有性能損失,還會導致一個磁盤壞了,整個硬盤也不能用了,而hadoop可以規避這個問題。
Tasktracker的中間輸出目錄: MapReduce產生的中間數據會特別多,為了減少磁盤壓力,如果機器有多個磁盤,也可以像datanode的數據目錄設為”/disk1/local,/disk2/local,/disk3/local”,參考配置屬性mapred.local.dir。
map和reduce任務的JVM選項:mapred.child.java.opts配置map和reduce子進程的JVM屬性,如果內存充裕,可以改為 -Xmx2400m.
Tasktracker的map和reducer數量配置: 屬性mapred.tasktracker.map.tasks.maximum配置這個tasktracker同時可以最多跑多少個map task,要根據tracker的內存和磁盤情況規划。還有屬性mapred.tasktracker.reduce.tasks.maximum配置這個tasktracker同時可以最多跑多少個reduce task.同理也是要根據tracker的內存和磁盤情況規划。例如8核的機器,8個map和8個reducer。map中間結果開啟壓縮操作(尤其是snappy和LZO)的時候,cpu的負載會比較高,map和reducer的數量可以根據自己的業務情況靈活調節。
緩沖區大小:io.file.buffer.size默認是4KB,作為hadoop緩沖區,用於hadoop讀hdfs的文件和寫hdfs的文件,還有map的輸出都用到了這個緩沖區容量,對於現在的硬件很保守,可以設置為128k(131072),甚至是1M(太大了map和reduce任務可能會內存溢出)。
noatime的設置:為了充分發揮性能,需要使用noatime選項掛載磁盤,表示執行讀操作時,不更新文件的訪問時間,可以顯著提供性能。
CRC32 Intrinsic加速CRC校驗:參考http://rdc.taobao.com/blog/cs/?p=1220