[英]Validate Hive Single and Multi Query Parallelism
我用下面的 hive-site.xml 屬性配置了 Hive 並行性並重新啟動了集群
物業 1
Name: hive.exec.parallel
Value: true
Description: Run hive jobs in parallel
屬性 2
Name: hive.exec.parallel.thread.number
Value: 8 (default)
Description: Maximum number of hive jobs to run in parallel
為了測試並行性,我創建了以下 2 個條件:
1 . 在 file.hql 中單查詢並以hive -f file.hql
運行
SELECT COL1, COL2 FROM TABLE1
UNION ALL
SELECT COL3, COL4 FROM TABLE2
結果:
當 hive.exec.parallel = true 時,耗時:28.015 秒,總 MapReduce CPU 耗時:3 秒 10 毫秒
當 hive.exec.parallel = false 時,耗時:24.778 秒,總 MapReduce CPU 耗時:3 秒 90 毫秒。
2 . 在以下 2 個不同文件中進行獨立查詢,並將其作為nohup hive -f file1.hql & nohup hive -f file2.hql
select count(1) from t1 -> file1.sql
select count(1) from t2 -> file2.sql
結果:
當 hive.exec.parallel = false 時,耗時:29.391 秒,總 MapReduce CPU 耗時:1 秒 890 毫秒
問題:
如何檢查上述 2 個條件是否確實並行運行? 在控制台中,我看到的結果好像查詢是按順序運行的。
為什么當 hive.exec.parallel = true 時所用的時間更多? 我怎樣才能看到 hive 多級被利用?
謝謝,
When Hive execution engine is MR ( hive.execution.engine=mr
), Hive represents query as one or more Map-Reduce jobs, these jobs (each containing Map and reduce) can be executed in parallel if possible. 例如這個查詢:
SELECT COL1, COL2 FROM TABLE1
UNION
SELECT COL3, COL4 FROM TABLE2
可以作為 3 個作業執行:1 - select from table1, 2-select table2, 3-UNION (distinct)
前兩個作業可以並行執行,第三個作業可以在第一個和第二個完成后執行。
更復雜的查詢可以執行許多 MR 作業和這些參數:
hive.exec.parallel
和hive.exec.parallel.thread.number
允許為在 MR 上運行的單個查詢並行執行作業。
您可以在 Job Tracker 上查看作業,URL 在執行期間打印在日志中。 您可以在日志中看到一些作業已啟動以及它們的執行進度。
如果在 Tez 執行引擎( hive.execution.engine=Tez
) 上運行,Hive 將查詢表示為單個優化的 DAG,省略了不必要的步驟,例如將中間結果寫入持久存儲並使用映射器再次讀取它們。 DAG 中所有可以並行執行的頂點都在並行執行。 在 Tez 上運行時,相同的設置不起作用。 它總是在 Tez 上並行運行。 相同的查詢將表示為 2 個映射器頂點(並行運行)和最后運行的減速器。 最后一個 reducer 也可以在 mappers 幾乎完成時提前啟動。
設置hive.exec.parallel
和hive.exec.parallel.thread.number
不影響 Tez 上查詢的並行性,它們也不適用於單個腳本中的兩個單獨查詢。
單個腳本中的兩個單獨的查詢一個接一個地運行,而不是並行的(每個都有自己的任務並行性)
兩個 hive 會話(如上一個示例)並行運行(取決於可用的集群資源)
時間差可以使用time
Unix 命令測量。 Hive 報告的時間是集群時間。 如果集群沒有可用資源,並行任務可以等待資源。 使用 Job tracker 檢查執行期間究竟發生了什么。
所以,實際上有不同種類的並行。
MR 上的單查詢作業並行性- 您要求的參數適用於這種類型。
Hive 會話並行運行- 這些參數不影響它。
Tez 頂點並行度- 這些參數不影響它
並行執行同一個頂點實例(mapper或reducer,每個都可以啟動多個)——它們是並行運行的——這些參數不影響它
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.