`
brandNewUser
  • 浏览: 455464 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

项目中Map端数据处理不均匀性分析

阅读更多

 

Map任务的不均匀性

 

最近发现Map端数据越来越不均匀,而处理输入的数据,写到本地磁盘的数据量都差不多,我们随便拿出来两个attempt任务(当前map数量为64个),33和45,33的counter:



 


下面是000045的Counter数据



 

 

可以看出Counter中的数据也是差不多,但是CPU时间以及GC时间相差比较大(实际上以ms为单位,也就相差不太大),CPU时间相差5分钟左右,我们对map端执行的每段数据进行标记:

[INFO]  2014-10-19 19:17:19 : current caid(2000716) report generated!
[INFO]  2014-10-19 19:17:47 : current caid(2000717) report generated!
[INFO]  2014-10-19 19:18:35 : current caid(2000687) report generated!
[INFO]  2014-10-19 19:19:02 : current caid(2000713) report generated!
[INFO]  2014-10-19 19:19:33 : current caid(2000706) report generated!
[INFO]  2014-10-19 19:20:01 : current caid(2000707) report generated!
[INFO]  2014-10-19 19:20:29 : current caid(2000704) report generated!
[INFO]  2014-10-19 19:21:30 : current caid(2000697) report generated!
[INFO]  2014-10-19 19:22:01 : current caid(2000699) report generated!
[INFO]  2014-10-19 19:22:42 : current caid(2000701) report generated!
[INFO]  2014-10-19 19:23:23 : current caid(2000700) report generated!
[INFO]  2014-10-19 19:23:53 : current caid(2000702) report generated!
[INFO]  2014-10-19 19:24:21 : current caid(2000689) report generated!
[INFO]  2014-10-19 19:25:00 : current caid(2000688) report generated!
[INFO]  2014-10-19 19:25:41 : current caid(2000690) report generated!
[INFO]  2014-10-19 19:26:22 : current caid(2000693) report generated!
[INFO]  2014-10-19 19:27:29 : current caid(2000692) report generated!

 

这个执行得非常快,而相反45就比较慢了:

 

[INFO]  2014-10-19 19:41:17 : current caid(2000716) report generated!
[INFO]  2014-10-19 19:43:32 : current caid(2000717) report generated!
[INFO]  2014-10-19 19:45:59 : current caid(2000687) report generated!
[INFO]  2014-10-19 19:50:57 : current caid(2000713) report generated!
[INFO]  2014-10-19 19:55:20 : current caid(2000706) report generated!
[INFO]  2014-10-19 20:04:22 : current caid(2000707) report generated!
[INFO]  2014-10-19 20:07:23 : current caid(2000704) report generated!
[INFO]  2014-10-19 20:10:33 : current caid(2000697) report generated!
[INFO]  2014-10-19 20:14:14 : current caid(2000699) report generated!
[INFO]  2014-10-19 20:17:28 : current caid(2000701) report generated!
[INFO]  2014-10-19 20:21:11 : current caid(2000700) report generated!
[INFO]  2014-10-19 20:26:34 : current caid(2000702) report generated!
[INFO]  2014-10-19 20:32:27 : current caid(2000689) report generated!
[INFO]  2014-10-19 20:35:46 : current caid(2000688) report generated!
[INFO]  2014-10-19 20:37:53 : current caid(2000690) report generated!
[INFO]  2014-10-19 20:39:42 : current caid(2000693) report generated!
[INFO]  2014-10-19 20:41:25 : current caid(2000692) report generated!

 

可以看出,明显比33慢出一个数量级,而且是每个步骤都比较慢,不存在单独数据的故障。首先,任务开始时间有差别,这是因为在最慢的任务启动之前,最快的任务都已经完成了,这是因为资源分配不均匀造成的,也是因为我们初始的时候任务启动过多,以至于Map总是一个个启动;但还有一点就是000045处理每个活动的速度其实都是比较慢的,甚至系统还为此启动了一个推测式任务:

 

[INFO]  2014-10-19 19:45:58 : current caid(2000716) report generated!
[INFO]  2014-10-19 19:47:58 : current caid(2000717) report generated!
[INFO]  2014-10-19 19:50:28 : current caid(2000687) report generated!
[INFO]  2014-10-19 19:52:29 : current caid(2000713) report generated!
[INFO]  2014-10-19 19:59:15 : current caid(2000706) report generated!
[INFO]  2014-10-19 20:02:12 : current caid(2000707) report generated!
[INFO]  2014-10-19 20:04:38 : current caid(2000704) report generated!
[INFO]  2014-10-19 20:08:47 : current caid(2000697) report generated!
[INFO]  2014-10-19 20:16:01 : current caid(2000699) report generated!

 

这个推测式任务由于主任务的执行完成而被kill,但从任务的进度来看,好像要比原来的任务进度稍微快一点。

 

本地化balancer策略

 

 

我们对数据块都进行了本地化策略,能够确保大部分数据在Map端执行时都使用本地的数据进行,下面我们就查看对应的服务器上是否有该块信息。


首先,在执行任务时,某个Split块信息打印出来,比如00058块,通过查看hadoop命令手册:http://hadoop.apache.org/docs/r1.0.4/cn/commands_manual.html#fsck

 

hadoop fsck  /xxxx/xxx_part-r-00058 -files -locations -blocks
Connecting to namenode via http://x1202.xxxx.cn:50070
FSCK started by tong (auth:SIMPLE) from /192.168.7.11 for path //xxxx/xxx_part-r-00058 at Mon Oct 20 14:16:40 CST 2014
/xxxx/xxx_part-r-00058 864740440 bytes, 7 block(s):  OK
0. BP-714842383-192.168.7.11-1393991369860:blk_1088800687_1099546661897 len=134217728 repl=3 [192.168.7.75:50010, 192.168.7.14:50010, 192.168.7.21:50010]
1. BP-714842383-192.168.7.11-1393991369860:blk_1088801074_1099546662284 len=134217728 repl=3 [192.168.7.14:50010, 192.168.7.75:50010, 192.168.7.34:50010]
2. BP-714842383-192.168.7.11-1393991369860:blk_1088801189_1099546662399 len=134217728 repl=3 [192.168.7.75:50010, 192.168.7.14:50010, 192.168.7.24:50010]
3. BP-714842383-192.168.7.11-1393991369860:blk_1088801280_1099546662490 len=134217728 repl=3 [192.168.7.14:50010, 192.168.7.75:50010, 192.168.7.20:50010]
4. BP-714842383-192.168.7.11-1393991369860:blk_1088801390_1099546662600 len=134217728 repl=3 [192.168.7.75:50010, 192.168.7.14:50010, 192.168.7.26:50010]
5. BP-714842383-192.168.7.11-1393991369860:blk_1088801661_1099546662871 len=134217728 repl=3 [192.168.7.14:50010, 192.168.7.75:50010, 192.168.7.16:50010]
6. BP-714842383-192.168.7.11-1393991369860:blk_1088801774_1099546662992 len=59434072 repl=3 [192.168.7.75:50010, 192.168.7.14:50010, 192.168.7.13:50010]

Status: HEALTHY
 Total size:864740440 B
 Total dirs:0
 Total files:1
 Total symlinks:0
 Total blocks (validated):7 (avg. block size 123534348 B)
 Minimally replicated blocks:7 (100.0 %)
 Over-replicated blocks:0 (0.0 %)
 Under-replicated blocks:0 (0.0 %)
 Mis-replicated blocks:0 (0.0 %)
 Default replication factor:3
 Average block replication:3.0
 Corrupt blocks:0
 Missing replicas:0 (0.0 %)
 Number of data-nodes:31
 Number of racks:1
FSCK ended at Mon Oct 20 14:16:40 CST 2014 in 1 milliseconds

 

 块本身的数据并没有任何问题,而且从块的数据分布可以看出,当前集群中HDFS块的大小设置为128M,策略大概设置为3到4个块来进行保存该block的数据。

 


 

 

根据某个HDFS数据块的分布情况,我们使用ping机器主机名称的方式查到具体的ip地址

 

下面就简要说明一下我们如何分片的,每日的日志都会根据一定的字段分成固定的数量(64个),Map端处理的InputSplit扩展自CombineInputSplit,即多个不同日期日志文件的集合,每个集合对应的不同日期相同下标的日志文件。

 



 

InputSplit会根据getLocations方法来确定最优分配的机器名称,于是元数据文件就是下标对应机器名的一个文件。后台会启动一个自己写的balancer程序,会在集群不工作的情况下偷偷地移动数据,以满足元数据文件的本地化策略。

 

虽然我们已经设置了本地化策略,但是根据运行的结果,Map最慢的任务却并不是在那台推荐的机器上运行的,具体原因已经分析出来了,原因就在于某些资源的不足,确切来说当前是Map端的内存,造成我们虽然同时启动了多个任务,但是病不是所有的任务都已经正常运行,看下面的趋势图:



 

蓝色条表示执行开始时间,绿色表示执行结束时间。可以看出虽然任务初始时会启动9个任务,但是只有前4个拿到了充分的资源,后面的Map任务都处于Pending状态,等待资源,此时集群已经占满。

 

我们知道Map占用的资源随着Map任务的执行结束会马上被释放掉,此时后面的Map任务就可以拿到资源并运行,但此时,已经没有其他的选择,也就是说,不一定会选择推荐的本地化机器!这也是为什么前面启动的4个任务执行要比后面启动的任务快很多的原因。

 

要解决这个问题,可以将并行度减小,也可以提高当前稀缺的资源:内存。当然,一切结论还等实验后才能完成。

 

  • 大小: 108.7 KB
  • 大小: 108.9 KB
  • 大小: 90.9 KB
  • 大小: 49 KB
  • 大小: 13.8 KB
分享到:
评论

相关推荐

    Depthmap 空间句法分析软件

    3. **集成几何处理**:Depthmap能够处理复杂的建筑和地形模型,允许用户导入CAD图纸或GIS数据,进行几何操作,如切割、合并和布尔运算,以便于分析。 4. **数据可视化**:软件提供丰富的图表和地图,直观展示空间...

    云计算环境下分布式数据处理的关键性技术研究.pdf

    总体来说,云计算环境下分布式数据处理的关键性技术研究是一个多学科、跨领域的综合性研究领域,它涉及计算机科学、网络技术、存储技术等多个方面。随着技术的发展,未来的云计算和分布式数据处理将更加智能化、自动...

    Python库 | wafer_map-1.1.1-py2-none-any.whl

    4. **数据处理**:可能提供数据预处理功能,如异常值检测、数据清洗和标准化,以便于后续分析。 5. **接口兼容**:可能与其他常用的Python数据分析库如NumPy、Pandas或Matplotlib有良好的集成,便于数据操作和结果...

    inMap是基于百度地图的大数据可视化库

    热图在展示空间内数据分布的不均匀性方面非常有效,对于城市人口分布、交通流量等场景特别适用。 3. **网格(Grid)** inMap中的网格功能将地图划分为多个单元格,每个单元格对应一组数据,通过单元格的颜色或大小...

    地图的简单使用(Map)

    `Map`通常用于关联特定的值与特定的键,使得在处理大量数据时能快速定位和访问信息。 1. **Map的基本概念**: - 键(Key):是唯一的,用来标识每一个值,不允许重复。 - 值(Value):键对应的对象,可以重复。 - ...

    最大后验概率 MAP 准则matlab源码

    最大后验概率(Maximum A Posteriori, MAP)是概率统计学中的一种估计方法,它在机器学习和信号...通过阅读和理解提供的源代码,你可以学习到如何在实际问题中应用MAP估计,从而提升你在机器学习和数据分析领域的技能。

    cat-map.rar_ cat map_cat_cat map_cat,_scramble

    《猫图函数:一维序列的打乱方法》 在编程世界中,"cat map" 或 "cat_map" 是一个不...理解和掌握这种打乱技术对于任何处理序列数据的程序员都是有益的,它不仅可以提升代码的趣味性,还能在实际项目中发挥重要作用。

    云计算环境下大规模图数据处理技术的应用研究.pdf

    在实际应用中,云计算环境下的大规模图数据处理技术还涉及到图数据的动态更新和维护,以及在图数据处理过程中对数据隐私和安全的保护。此外,为了适应不同类型和规模的图数据处理需求,还需要不断开发和优化更为高效...

    hiu-tx61.zip_数据分析

    标题中的“hiu-tx61.zip_数据分析”表明这是一个与数据处理和分析相关的压缩文件,可能包含用于研究或教学的数据集、代码或者算法实现。描述中提到的“单径或多径瑞利衰落信道仿真”和“多元数据分析的主分量分析...

    2017年山东大学大数据管理与分析考试题

    通常情况下,第一个Block会被复制三次,其余的Block则复制两次,这些副本会被尽可能均匀地分布在整个集群中,以提高数据的可靠性和可用性。 - **数据读取过程**:客户端发起读取请求时,NameNode会返回离客户端最近...

    Map是一种键值对(key-value)数据结构

    标题中的“Map是一种键值对(key-value)数据结构”揭示了Map在计算机科学和编程中的核心概念。Map,也常被称为哈希表或字典,是数据结构中的一种重要类型,它允许我们通过键(key)来快速查找、添加和删除对应的值...

    99%的海量数据处理面试题

    【海量数据处理】是指在面对数据量巨大,超出单机处理能力的情况下,所采用的一系列技术和方法。这类问题通常涉及到存储、处理和操作大量数据,其中“海量”意味着数据量过大,以至于无法在短时间内直接处理或者无法...

    GFS、MapReduce和BigTable:Google的三种大数据处理系统.docx

    总结来说,GFS、MapReduce和BigTable构成了Google大数据处理的基石,它们共同解决了Google在面对海量数据时的存储、计算和管理问题。GFS提供大规模数据的存储能力,MapReduce提供了处理这些数据的强大计算框架,而...

    hash_map的详解

    在C++ STL中,`hash_map`正是用来实现这种高效键值对存储的数据结构。 #### 1. 数据结构:hash_map原理 `hash_map`的基础是哈希表。哈希表的主要优势在于,它能够极大地减少数据存储和查找所需的时间,接近于常数...

    哈希映射 hash map

    哈希函数将键转换为数组下标,确保键值对能够被均匀地分布在各个桶中,减少冲突的可能性。比较函数用于在发生冲突时,确定两个键是否相等。 冲突是哈希映射中不可避免的问题,因为一个键可能通过哈希函数映射到同一...

    hive数据倾斜原因分析及解决方案.pdf

    2. 原因:key 分布不均匀、业务数据本身的特性、建表时考虑不周、某些 SQL 语句本身就有数据倾斜。 3. 表现:任务进度长时间维持在 99%(或 100%),查看任务监控页面,发现只有少量(1 个或几个)reduce 子任务未...

    网易大数据-实战大作业:网站分析大数据框架调度-火影启源1

    以上内容详细阐述了从数据采集、处理、分析到结果导入的整个大数据处理流程,涵盖了多个关键技术点,为实际工作中构建大数据处理平台提供了基础。通过这个实验,参与者能够深入理解大数据框架的运作机制,提高数据...

    geom clip map

    在现代图形学领域,特别是针对大规模地形渲染的应用场景中,如何高效地处理海量数据并保持良好的视觉效果一直是一个挑战。随着硬件性能的不断提升,特别是GPU计算能力的进步,开发人员能够探索新的方法来优化渲染...

Global site tag (gtag.js) - Google Analytics