2014-02-15 26 views
2

我想避免在表創建時理想數據位置或佈局已知時,Impala節點不必要地通過網絡向其他節點請求數據。這對'非加法'操作很有幫助,無論如何,分區中的所有記錄都需要在同一個地方(節點)(例如百分位數)。通過分區控制Impala中的數據位置

是否有可能告訴Impala分區中的所有數據應始終共同位於任何HDFS副本的單個節點上?

在帕拉-SQL,我不知道,如果「分區BY」子句中提供此功能。在我的理解中,Impala將其分區分塊爲HDFS上的單獨文件,但HDFS不保證相關文件的共位或默認塊(而是試圖實現相反)。

發現了大約因帕拉對HDFS發展影響的一些信息,但尚不清楚,如果這些都已經在計劃實施或靜止:

http://www.slideshare.net/deview/aaron-myers-hdfs-impala (幻燈片23-24)

預先感謝您所有。

回答

0

關於你提到的(「協同定位塊副本」)的幻燈片 - 這是關於在Hadoop的2.1實現的HDFS功能(HDFS-2576)。它提供了一個Java API來向HDFS提供關於應該放置塊的位置的提示。

它不是在因帕拉作爲的2014年,但它肯定好像建立了一些基礎工作 - 正如它會給黑斑羚性能相當於傳統的MPP數據庫中指定的分配密鑰。

0

否,即完全違背了分佈式文件系統和MPP計算的目的。它還會創建單點故障和瓶頸,特別是如果您正在討論一個加入自身的250GB表。這正是Hadoop設計要解決的問題。對數據進行分區將在名稱節點上的HDFS中創建子目錄,然後將數據複製到羣集中的所有數據節點上。

+1

我認爲你錯過了這裏的觀點。有Impala分區(HDFS文件),這些文件的HDFS塊和這些塊的HDFS副本。目的是將與分區和**單個副本**相關的所有塊保存在同一個節點上。副本仍將放置在不同的節點上,但任何分區的所有數據都將位於節點的本地,這對於避免在網絡上進行某些操作的複製非常重要。 有關更多詳細信息,請參閱Aaron Myers(Cloudera的軟件工程師和Apache Hadoop提交者)上面提到的**幻燈片**。 – iSi

+0

編輯該問題以使其更清晰。 – iSi