1.概述
hadoop集群中檔案的儲存都是以塊的形式儲存在hdfs中。
2.預設值
從2.7.3版本開始block size的預設大小為128m,之前版本的預設值是64m.
3.如何修改block塊的大小?
可以通過修改hdfs-site.xml檔案中的dfs.block.size對應的值。
dfs.block.size
512000
注意:在修改hdfs的資料塊大小時,首先停掉集群hadoop的執行程序,修改完畢後重新啟動。
注意:blocksize必須是io.bytes.per.checksum大小(512k)的整數倍,否則會報錯
「put: io.bytes.per.checksum(512) and blocksize(100000) do not match. blocksize should be a multiple of io.bytes.per.checksum」
4.block塊大小設定規則
在實際應用中,hdfs block塊的大小設定為多少合適呢?為什麼有的是64m,有的是128m、256m、512呢?
首先我們先來了解幾個概念:
2)原理:檔案塊越大,定址時間越短,但磁碟傳輸時間越長;檔案塊越小,定址時間越長,但磁碟傳輸時間越短。
5.block不能設定過大,也不要能設定過小
1)如果塊設定過大,一方面從磁碟傳輸資料的時間會明顯大於定址時間,導致程式在處理這塊資料時,變得非常慢;另一方面,mapreduce中的map任務通常一次只處理乙個塊中的資料,如果塊過大執行速度也會很慢。
2)如果設定過小,一方面存放大量小檔案會占用namenode中大量記憶體來儲存元資料,而namenode的記憶體是有限的,不可取;另一方面塊過小,定址時間增長,導致程式一直在找block的開始位置。因此,塊適當設定大一些,減少定址時間,那麼傳輸乙個有多個塊組成的檔案的時間主要取決於磁碟的傳輸速度。
6.多大合適呢?
1)hdfs中平均定址時間大概為10ms;
2)經過前任的大量測試發現,定址時間為傳輸時間的1%時,為最佳狀態,所以最佳傳輸時間為:
10ms/0.01=1000s=1s
3)目前磁碟的傳輸速度普遍為100mb/s,最佳block大小計算:
100mb/s*1s=100mb
所以我們設定block大小為128mb.
4)實際中,磁碟傳輸速率為200mb/s時,一般設定block大小為256mb;磁碟傳輸速率為400mb/s時,一般設定block大小為512mb.
HDFS資料塊大小設計策略
hdfs中的檔案在物理上是分塊儲存 block 預設大小在hadoop2.x版本中是128m,老版本中是64m。原因 檔案塊越大,分割數越少,定址時間越短,但磁碟傳輸時間越長 檔案塊越小,分割數越多,定址時間越長,但磁碟傳輸時間越短 目的 盡可能保持使定址時間僅佔傳輸時間的1 如果定址時間約為10m...
hadoop修改HDFS預設塊大小的配置
首先敘述一下 1.hadoop1.x的hdfs預設塊大小為64mb hadoop2.x的預設塊大小為128mb。如果進行資料塊的自定義需要修改hdfs site.xml檔案,例如 property name dfs.blocksize name value 30 mvalue property pr...
and 與 or的計算規則
1 a and b and c a如果為真就往b走,b如果為真就往c走,c如果為真,就為真,c如果為假,返回值就為假,結果是c。a如果為真就往b走,b如果為假,那麼如果為假,返回值就為假,結果是b。a如果為假,返回值就為假,結果就是a。總結 純and語句中,往右運算,如果都為真,返回值為真,返回最後...