1. 程式人生 > >hive實現任務並行執行

hive實現任務並行執行

hive.exec.parallel引數控制在同一個sql中的不同的job是否可以同時執行,預設為false.
下面是對於該引數的測試過程:

測試sql:
select r1.a
from (select t.a from sunwg_10 t join sunwg_10000000 s on t.a=s.b) r1 join (select s.b from sunwg_100000 t join sunwg_10 s on t.a=s.b) r2 on (r1.a=r2.b);

1
Set hive.exec.parallel=false;
當引數為false的時候,三個job是順序的執行

[html]
 view plain copy  print?
  1. hive> set hive.exec.parallel=false;  
  2. hive> select r1.a  
  3.     > from (select t.a from sunwg_10 t join sunwg_10000000 s on t.a=s.b) r1 join (select s.b from sunwg_100000 t join sunwg_10 s on t.a=s.b) r2 on (r1.a=r2.b);  
  4. Total MapReduce jobs = 3
  5. Launching Job 1 out of 3  
  6. Number of reduce tasks not specified. Estimated from input data size: 1  
  7. In order to change the average load for a reducer (in bytes):  
  8.   set hive.exec.reducers.bytes.per.reducer=<number>
  9. In order to limit the maximum number of reducers:  
  10.   set hive.exec.reducers.max=<number>
  11. In order to set a constant number of reducers:  
  12.   set mapred.reduce.tasks=<number
    >
  13. Cannot run job locally: Input Size (= 397778060) is larger than hive.exec.mode.local.auto.inputbytes.max (= -1)  
  14. Starting Job = job_201208241319_2001905, Tracking URL = http://hdpjt:50030/jobdetails.jsp?jobid=job_201208241319_2001905
  15. Kill Command = /dhwdata/hadoop/bin/../bin/hadoop job  -Dmapred.job.tracker=hdpjt:9001 -kill job_201208241319_2001905  
  16. Hadoop job information for Stage-1: number of mappers: 7; number of reducers: 1  
  17. 2012-09-07 17:55:40,854 Stage-1 map = 0%,  reduce = 0%  
  18. 2012-09-07 17:55:55,663 Stage-1 map = 14%,  reduce = 0%  
  19. 2012-09-07 17:56:00,506 Stage-1 map = 56%,  reduce = 0%  
  20. 2012-09-07 17:56:10,254 Stage-1 map = 100%,  reduce = 0%  
  21. 2012-09-07 17:56:19,871 Stage-1 map = 100%,  reduce = 29%  
  22. 2012-09-07 17:56:30,000 Stage-1 map = 100%,  reduce = 75%  
  23. 2012-09-07 17:56:34,799 Stage-1 map = 100%,  reduce = 100%  
  24. Ended Job = job_201208241319_2001905
  25. Launching Job 2 out of 3  
  26. Number of reduce tasks not specified. Estimated from input data size: 1  
  27. In order to change the average load for a reducer (in bytes):  
  28.   set hive.exec.reducers.bytes.per.reducer=<number>
  29. In order to limit the maximum number of reducers:  
  30.   set hive.exec.reducers.max=<number>
  31. In order to set a constant number of reducers:  
  32.   set mapred.reduce.tasks=<number>
  33. Cannot run job locally: Input Size (= 3578060) is larger than hive.exec.mode.local.auto.inputbytes.max (= -1)  
  34. Starting Job = job_201208241319_2002054, Tracking URL = http://hdpjt:50030/jobdetails.jsp?jobid=job_201208241319_2002054
  35. Kill Command = /dhwdata/hadoop/bin/../bin/hadoop job  -Dmapred.job.tracker=hdpjt:9001 -kill job_201208241319_2002054  
  36. Hadoop job information for Stage-4: number of mappers: 2; number of reducers: 1  
  37. 2012-09-07 17:56:43,343 Stage-4 map = 0%,  reduce = 0%  
  38. 2012-09-07 17:56:48,124 Stage-4 map = 50%,  reduce = 0%  
  39. 2012-09-07 17:56:55,816 Stage-4 map = 100%,  reduce = 0%  
  40. Ended Job = job_201208241319_2002054
  41. Launching Job 3 out of 3  
  42. Number of reduce tasks not specified. Estimated from input data size: 1  
  43. In order to change the average load for a reducer (in bytes):  
  44.   set hive.exec.reducers.bytes.per.reducer=<number>
  45. In order to limit the maximum number of reducers:  
  46.   set hive.exec.reducers.max=<number>
  47. In order to set a constant number of reducers:  
  48.   set mapred.reduce.tasks=<number>
  49. Cannot run job locally: Input Size (= 596) is larger than hive.exec.mode.local.auto.inputbytes.max (= -1)  
  50. Starting Job = job_201208241319_2002120, Tracking URL = http://hdpjt:50030/jobdetails.jsp?jobid=job_201208241319_2002120
  51. Kill Command = /dhwdata/hadoop/bin/../bin/hadoop job  -Dmapred.job.tracker=hdpjt:9001 -kill job_201208241319_2002120  
  52. Hadoop job information for Stage-2: number of mappers: 2; number of reducers: 1  
  53. 2012-09-07 17:57:12,641 Stage-2 map = 0%,  reduce = 0%  
  54. 2012-09-07 17:57:19,571 Stage-2 map = 50%,  reduce = 0%  
  55. 2012-09-07 17:57:25,199 Stage-2 map = 100%,  reduce = 0%  
  56. 2012-09-07 17:57:29,210 Stage-2 map = 100%,  reduce = 100%  
  57. Ended Job = job_201208241319_2002120
  58. OK  
  59. abcdefghijk_0  
  60. abcdefghijk_1  
  61. abcdefghijk_2  
  62. abcdefghijk_3  
  63. abcdefghijk_4  
  64. abcdefghijk_5  
  65. abcdefghijk_6  
  66. abcdefghijk_7  
  67. abcdefghijk_8  
  68. abcdefghijk_9  
  69. Time taken: 135.944 seconds  


2
但是可以看出來其實兩個子查詢中的sql並無關係,可以並行的跑

[html] view plain copy  print?
  1. hive> set hive.exec.parallel=true;  
  2. hive> select r1.a  
  3.     > from (select t.a from sunwg_10 t join sunwg_10000000 s on t.a=s.b) r1 join (select s.b from sunwg_100000 t join sunwg_10 s on t.a=s.b) r2 on (r1.a=r2.b);  
  4. Total MapReduce jobs = 3
  5. Launching Job 1 out of 3  
  6. Launching Job 2 out of 3  
  7. Number of reduce tasks not specified. Estimated from input data size: 1  
  8. In order to change the average load for a reducer (in bytes):  
  9.   set hive.exec.reducers.bytes.per.reducer=<number>
  10. In order to limit the maximum number of reducers:  
  11.   set hive.exec.reducers.max=<number>
  12. In order to set a constant number of reducers:  
  13.   set mapred.reduce.tasks=<number>
  14. Cannot run job locally: Input Size (= 397778060) is larger than hive.exec.mode.local.auto.inputbytes.max (= -1)  
  15. Number of reduce tasks not specified. Estimated from input data size: 1  
  16. In order to change the average load for a reducer (in bytes):  
  17.   set hive.exec.reducers.bytes.per.reducer=<number>
  18. In order to limit the maximum number of reducers:  
  19.   set hive.exec.reducers.max=<number>
  20. In order to set a constant number of reducers:  
  21.   set mapred.reduce.tasks=<number>
  22. Cannot run job locally: Input Size (= 3578060) is larger than hive.exec.mode.local.auto.inputbytes.max (= -1)  
  23. Starting Job = job_201208241319_2001452, Tracking URL = http://hdpjt:50030/jobdetails.jsp?jobid=job_201208241319_2001452
  24. Kill Command = /dhwdata/hadoop/bin/../bin/hadoop job  -Dmapred.job.tracker=hdpjt:9001 -kill job_201208241319_2001452  
  25. Starting Job = job_201208241319_2001453, Tracking URL = http://hdpjt:50030/jobdetails.jsp?jobid=job_201208241319_2001453
  26. Kill Command = /dhwdata/hadoop/bin/../bin/hadoop job  -Dmapred.job.tracker=hdpjt:9001 -kill job_201208241319_2001453  
  27. Hadoop job information for Stage-4: number of mappers: 2; number of reducers: 1  
  28. Hadoop job information for Stage-1: number of mappers: 7; number of reducers: 1  
  29. 2012-09-07 17:52:10,558 Stage-4 map = 0%,  reduce = 0%  
  30. 2012-09-07 17:52:10,588 Stage-1 map = 0%,  reduce = 0%  
  31. 2012-09-07 17:52:22,827 Stage-1 map = 14%,  reduce = 0%  
  32. 2012-09-07 17:52:22,8