簡體   English   中英

驗證 Hive 單查詢和多查詢並行性

[英]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.parallelhive.exec.parallel.thread.number允許為在 MR 上運行的單個查詢並行執行作業。

您可以在 Job Tracker 上查看作業,URL 在執行期間打印在日志中。 您可以在日志中看到一些作業已啟動以及它們的執行進度。

如果在 Tez 執行引擎( hive.execution.engine=Tez ) 上運行,Hive 將查詢表示為單個優化的 DAG,省略了不必要的步驟,例如將中間結果寫入持久存儲並使用映射器再次讀取它們。 DAG 中所有可以並行執行的頂點都在並行執行。 在 Tez 上運行時,相同的設置不起作用。 它總是在 Tez 上並行運行。 相同的查詢將表示為 2 個映射器頂點(並行運行)和最后運行的減速器。 最后一個 reducer 也可以在 mappers 幾乎完成時提前啟動。

設置hive.exec.parallelhive.exec.parallel.thread.number不影響 Tez 上查詢的並行性,它們也不適用於單個腳本中的兩個單獨查詢。

單個腳本中的兩個單獨的查詢一個接一個地運行,而不是並行的(每個都有自己的任務並行性)

兩個 hive 會話(如上一個示例)並行運行(取決於可用的集群資源)

時間差可以使用time Unix 命令測量。 Hive 報告的時間是集群時間。 如果集群沒有可用資源,並行任務可以等待資源。 使用 Job tracker 檢查執行期間究竟發生了什么。

所以,實際上有不同種類的並行。

MR 上的單查詢作業並行性- 您要求的參數適用於這種類型。

Hive 會話並行運行- 這些參數不影響它。

Tez 頂點並行度- 這些參數不影響它

並行執行同一個頂點實例(mapper或reducer,每個都可以啟動多個)——它們是並行運行的——這些參數不影響它

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM