2017-07-21 27 views
0

在所有的HBase的文章和書籍也提到了以下有關HFiles的元和的FileInfo塊: -HBase的FileInfo的阻止

「元塊的設計,保持了大量的數據,其作爲一個String鍵,而FileInfo是一個簡單的Map首選,用於輸入字節數組的鍵和值的小信息。「 或 」元數據塊很昂貴,用一堆序列化數據填充一個元素,而不是爲每個元數據實例創建一個元數據塊。如果元數據很小,請考慮添加到文件信息「

我想明白它爲什麼這麼說。什麼是設計邏輯,因爲大數據應該保留在Meta中,而在FileInfo中很小。

我想知道這個的原因是我們在我們的項目的FileInfo中存儲了一些信息。然而,隨着時間的推移,我們存儲的信息開始增長,現在我們在FileInfo中擁有高達15-20MB的數據。從上面的文字看來,我們似乎不應該這樣做。但我們甚至不知道它對我們的系統造成什麼影響,如果有的話。

有人可以請說明這一點。我查看了HFileFileInfo的代碼,找不到任何明顯的原因。

回答

0

似乎這畢竟是一個愚蠢的問題,但其原因是FileInfo塊是所謂的「加載打開」,顧名思義,它被加載到文件打開本身。所以,如果你在FileInfo中有大量數據,那麼即使你不需要它,它仍然會被加載到內存中。另一方面,元塊可以按需加載。因此,如果你有大量數據,你應該考慮把它放在Meta中而不是FileInfo中。