单个hive应用程序(作业)是否会派生多个应用程序?

sycxhyv7  于 2021-06-02  发布在  Hadoop
关注(0)|答案(1)|浏览(345)

提交给yarn的单个配置单元查询是否会创建多个作业(即多个yarn应用程序)?在这里,我把工作和申请看成是同一种思维方式。
据我所知,Yarn为每个“应用程序”创建一个应用程序主控(am)。因此,这里可以将单个配置单元查询视为“应用程序”。因此,资源管理器将在某个节点上创建容器,并在该容器中启动am。该容器反过来可能会创建多个“任务”(而不是应用程序),即在为该am保留的其他容器中创建Map器和还原器(在相同或不同的节点上——这在这里无关紧要)。现在,所有这些应用程序主程序的集合都致力于解决提交给yarn的单一配置单元查询。事实上,这就是为什么我们说am是每个应用程序。因为我们只提交了一个配置单元查询,所以从yarn的Angular 来看,只有一个应用程序。所以当我启动下面的命令时,它应该只显示一个应用程序running:-

yarn application -list

这种理解正确吗?或者,如果我们为一个配置单元查询生成了多个Map器和还原器,那么会调用多个yarn应用程序?

wi3ka0sx

wi3ka0sx1#

你一开始是对的:
mapreduce创建的应用程序称为作业。所以申请=工作。对的。
每个工作有一个am。对的。
从那以后,你说的话有点搞混了。配置单元查询不是应用程序。配置单元查询由配置单元转换为链接的mapreduce作业。因此,当您执行一个复杂的配置单元查询时,配置单元将提交必要的mapreduce作业(这是应用程序),一个接一个地运行以获得最终结果。
例如,我们使用以下sql查询:

SELECT SUM(total) as sumtotal, city
FROM donations
GROUP BY city
ORDER BY sumtotal;

如果要使用mapreduce手动解决此问题,则需要创建2个作业:
作业1-聚合:将输入Map到(city,total)对,并减少每个城市的和值
作业2-排序:将作业1的结果Map到反向对(total,city),并让shuffle/reduce对它们进行排序
详细解释和说明如何解决这个问题与乔布斯先生在这里。
如果在配置单元中运行该查询,则输出如下所示:

INFO  : number of splits:3
INFO  : Submitting tokens for job: job_1454508485700_0039
INFO  : The url to track the job: http://ubuntu0:8088/proxy/application_1454508485700_0039/
INFO  : Starting Job = job_1454508485700_0039, Tracking URL = http://ubuntu0:8088/proxy/application_1454508485700_0039/
INFO  : Kill Command = /home/hduser/hadoop/bin/hadoop job  -kill job_1454508485700_0039
INFO  : Hadoop job information for Stage-1: number of mappers: 3; number of reducers: 3
INFO  : 2016-02-10 22:21:15,773 Stage-1 map = 0%,  reduce = 0%
INFO  : 2016-02-10 22:22:08,421 Stage-1 map = 11%,  reduce = 0%, Cumulative CPU 99.2 sec
INFO  : 2016-02-10 22:22:17,019 Stage-1 map = 44%,  reduce = 0%, Cumulative CPU 127.32 sec
INFO  : 2016-02-10 22:22:20,694 Stage-1 map = 67%,  reduce = 0%, Cumulative CPU 134.32 sec
INFO  : 2016-02-10 22:22:21,906 Stage-1 map = 78%,  reduce = 0%, Cumulative CPU 135.2 sec
INFO  : 2016-02-10 22:22:32,877 Stage-1 map = 89%,  reduce = 0%, Cumulative CPU 147.49 sec
INFO  : 2016-02-10 22:22:35,379 Stage-1 map = 100%,  reduce = 0%, Cumulative CPU 149.85 sec
INFO  : 2016-02-10 22:22:39,108 Stage-1 map = 100%,  reduce = 44%, Cumulative CPU 160.65 sec
INFO  : 2016-02-10 22:22:41,578 Stage-1 map = 100%,  reduce = 56%, Cumulative CPU 170.0 sec
INFO  : 2016-02-10 22:22:42,792 Stage-1 map = 100%,  reduce = 60%, Cumulative CPU 171.87 sec
INFO  : 2016-02-10 22:22:44,022 Stage-1 map = 100%,  reduce = 89%, Cumulative CPU 183.23 sec
INFO  : 2016-02-10 22:22:46,540 Stage-1 map = 100%,  reduce = 100%, Cumulative CPU 183.23 sec
INFO  : Ended Job = job_1454508485700_0039
INFO  : number of splits:2
INFO  : Submitting tokens for job: job_1454508485700_0040
INFO  : The url to track the job: http://ubuntu0:8088/proxy/application_1454508485700_0040/
INFO  : Starting Job = job_1454508485700_0040, Tracking URL = http://ubuntu0:8088/proxy/application_1454508485700_0040/
INFO  : Kill Command = /home/hduser/hadoop/bin/hadoop job  -kill job_1454508485700_0040
INFO  : Hadoop job information for Stage-2: number of mappers: 2; number of reducers: 1
INFO  : 2016-02-10 22:23:16,180 Stage-2 map = 0%,  reduce = 0%
INFO  : 2016-02-10 22:23:46,453 Stage-2 map = 50%,  reduce = 0%, Cumulative CPU 13.39 sec
INFO  : 2016-02-10 22:23:47,715 Stage-2 map = 67%,  reduce = 0%, Cumulative CPU 14.73 sec
INFO  : 2016-02-10 22:23:48,945 Stage-2 map = 100%,  reduce = 0%, Cumulative CPU 17.38 sec
INFO  : 2016-02-10 22:24:10,960 Stage-2 map = 100%,  reduce = 71%, Cumulative CPU 25.33 sec
INFO  : 2016-02-10 22:24:13,383 Stage-2 map = 100%,  reduce = 98%, Cumulative CPU 31.32 sec
INFO  : 2016-02-10 22:24:14,616 Stage-2 map = 100%,  reduce = 100%, Cumulative CPU 32.61 sec
INFO  : MapReduce Total cumulative CPU time: 32 seconds 610 msec
INFO  : Ended Job = job_1454508485700_0040
INFO  : Moving data to: /user/hduser/donors/hive_output_part2 from hdfs://ubuntu0:9000/user/hive/warehouse/.hive-staging_hive_2016-02-10_22-20-50_281_4971139345555329337-4/-ext-10001
INFO  : Table default.hive_output_part2 stats: [numFiles=0, numRows=14966, totalSize=0, rawDataSize=321343]
No rows affected (207.86 seconds)

你可以看到Hive也创造了两个工作岗位,一个接一个。您可以看到两次记录“starting job”,以及两次生成的新作业url。
hive将作业称为“阶段”,但这些只是普通的mapreduce作业(即应用程序)。
你可以找到Hive和我在这里做的一些手工工作的比较和基准。hive使用了与我手工编码的mr jobs相同的作业数和执行时间。所以基本上它仍然链接着mapreduce作业,它们是为您生成的,这样您就不需要编写代码了。
我所说的一切只对默认的执行引擎mapreduce有效。使用tez或spark作为执行引擎是另一回事。

相关问题