共用方式為


在 Azure HDInsight 中使用 Apache Ambari 優化 Apache Pig

Apache Ambari 是用來管理和監視 HDInsight 叢集的 Web 介面。 如需Ambari Web UI的簡介,請參閱 使用Apache Ambari Web UI管理 HDInsight 叢集。

Apache Pig 屬性可以從 Ambari Web UI 修改為微調 Pig 查詢。 從Ambari修改 Pig 屬性會直接修改檔案中的 /etc/pig/2.4.2.0-258.0/pig.properties Pig 屬性。

  1. 若要修改 Pig 屬性,請流覽至 [Pig 設定 ] 索引卷標,然後展開 [ 進階 pig 屬性 ] 窗格。

  2. 尋找、取消批注及變更您想要修改之屬性的值。

  3. 選取 視窗右上方的 [儲存 ],以儲存新的值。 某些屬性可能需要重新啟動服務。

    Advanced Apache pig properties.

注意

任何工作階段層級設定會覆寫檔案中的 pig.properties 屬性值。

微調執行引擎

有兩個執行引擎可用來執行 Pig 腳本:MapReduce 和 Tez。 Tez 是優化的引擎,比 MapReduce 快得多。

  1. 若要修改執行引擎,請在 [ 進階 pig 屬性 ] 窗格中尋找 屬性 exectype

  2. 預設值為 MapReduce。 將它變更為 Tez

啟用本機模式

類似於Hive,本機模式是用來加速具有相對較少數據量的工作。

  1. 若要啟用本機模式,請將 設定 pig.auto.local.enabledtrue。 預設值為 false。

  2. 輸入數據大小小於 屬性值的 pig.auto.local.input.maxbytes 作業會被視為小型作業。 預設值為 1 GB。

複製使用者 jar 快取

Pig 會將 UDF 所需的 JAR 檔案複製到分散式快取,使其可供工作節點使用。 這些 jar 不會經常變更。 如果啟用,此 pig.user.cache.enabled 設定可讓 jar 放在快取中,以便針對相同使用者執行的作業重複使用它們。 此設定會導致作業效能稍微增加。

  1. 若要啟用,請將 設定 pig.user.cache.enabled 為 true。 預設值為 false。

  2. 若要設定快取 jar 的基底路徑,請將 設定 pig.user.cache.location 為基底路徑。 預設值為 /tmp

使用記憶體設定優化效能

下列記憶體設定可協助優化 Pig 腳本效能。

  • pig.cachedbag.memusage:提供給包的記憶體數量。 包是 Tuple 的集合。 Tuple 是一組已排序的欄位,而欄位則是數據片段。 如果包中的數據超出指定的記憶體,則會溢出到磁碟。 默認值為 0.2,代表可用記憶體的 20%。 此記憶體會在應用程式中的所有包間共用。

  • pig.spill.size.threshold:大於此溢出大小臨界值(以位元組為單位)的包會溢出到磁碟。 預設值為 5 MB。

壓縮暫存盤

Pig 會在作業執行期間產生暫存盤。 壓縮暫存盤會導致讀取或寫入檔案至磁碟時,效能增加。 下列設定可用來壓縮暫存盤。

  • pig.tmpfilecompression:若為 true,請啟用暫存盤壓縮。 預設值為 false。

  • pig.tmpfilecompression.codec:用於壓縮暫存盤的壓縮編解碼器。 建議的壓縮編解碼器為 LZO 和 Snappy,以降低 CPU 使用量。

啟用分割合併

啟用時,會將小型檔案合併為較少的對應工作。 此設定可改善具有許多小型檔案的工作效率。 若要啟用,請將 設定 pig.noSplitCombination 為 true。 預設值為 false。

調整對應程式

對應程式的數目是藉由修改 屬性 pig.maxCombinedSplitSize來控制。 這個屬性會指定要由單一對應工作處理的數據大小。 預設值是檔案系統的預設區塊大小。 增加此值會導致對應程式工作數目較低。

微調歸納器

歸納器的數目是根據 參數 pig.exec.reducers.bytes.per.reducer計算。 參數預設會指定每個歸納器所處理的位元組數目 1 GB。 若要限制歸納器數目上限,請預設設定 pig.exec.reducers.max 屬性 999。

下一步