并行度的影响
合理的并行度,不能太小也不要过大。
并行度较小:
并发度小,执行效率低;(失去分布式计算的意义)
并行度过大:
资源申请上的劣势。导致ApplicationMaster在向yarn提交资源申请时不能做到数据本地化(分配执行任务的机器不是数据所在机器,yarn resourcemanager在分配资源时选择 数据本地、同机架、集群随机三种方式,优先级从前到后),甚至由于集群剩余资源不足而处于排队等待状态,申请资源时间成为整个任务执行时间的瓶颈;
每个task的初始化时间拖了任务执行时间的后腿(一个数据量小、处理逻辑简单的任务本身执行时间已经比大量task初始化所消耗时间小);
合理的并行度
任务的合理并行度取决于
集群的资源
一个合理的并行度,肯定是需要考虑到现有集群的可用资源,这个决定了你申请资源的上限。
集群的资源可以划分为两种:1、整个集群的资源;2、hdfs数据所在机器的资源情况。
任务处理的数据量、文件数
你要处理的数据量是你任务并行度大小的关键。
查看hdfs文件信息:
hadoop fsck /xxx/xxx/your_path
可以加 -files -blocks -racks参数查看目录下每个文件的明细信息:files:文件数;blocks:数据块数;racks:机架地址
blocks决定了读取数据时的并行度