一、背景
今天采用10台异构的机器做测试,对500G的数据进行运算分析,业务比较简单,集群机器的结构如下:
A:双核CPU×1、500G硬盘×1,内存2G×1(Slaver),5台
B:四核CPU×2、500G硬盘×2,内存4G×2(Slaver),4台
C:四核CPU×2、500G硬盘×2,内存4G×8(Master),1台
软件采用Hadoop 0.20.2,Linux操作系统。
二、过程
1、制造了500G的数据存放到集群中。
2、修改配置,主要是并发的Map和Reduce数量。修改如下图:
3、修改mapred-site.xml配置文件中的mapred.child.java.opts参数为-Xmx2046m
4、启动Job,半路出现了Cannot allocate memory错误,明显是内存分配不够。细看报错的机器,是A类机器报此错误。
5、修改A类机器的mapred-site.xml配置文件,将mapred.child.java.opts修改为-Xmx1024m,运行Job,错误消失。
三、分析总结
1、第一次采用这么少的机器处理500G的数据,确实在配置优化上需要做对应的调整。
2、Map的数量和CPU的核数也有直接关系。一般来说最好不要高于CPU的核数。(CPU是4核,并发数最好设置为4).
3、通过调整得出一个简单的公式:Map的并发数量(需要不大于CPU核数)×mapred.child.java.opts < 该节点机器的总内存。
4、当然并发数大于内存或CPU核数也可以,但是有些风险,Task执行错误的风险。
5、计算的能力还是和硬件性能有关系,硬件越好,计算的效率还是很高的。当然差的机器也能使用,添砖加瓦一起干总是好的。
6、如果集群是异构的机器,那么还是建议每台机器做不同的配置参数。统一化的配置还是比较适合同构集群。
7、一些统一的参数也可以通过MR的代码用conf.set(key,value);的方式来设置。
8、有些时候没写东西了,最近事情比较多。如果有疑问还是很欢迎大家发邮件讨论:dajuezhao@gmail.com
分享到:
相关推荐
例如,通过修改`mapred-site.xml`中的`mapreduce.map.memory.mb`和`mapreduce.reduce.memory.mb`,可以调整单个Mapper和Reducer任务的内存大小,从而避免因内存不足导致的任务失败。 总的来说,MapReduce模板和...
**任务执行与环境**:Map-Reduce框架提供了丰富的API,允许用户监控任务的执行状态,包括任务进度、错误日志、内存使用情况等,有助于及时发现和解决执行过程中的问题。 **作业提交与监控**:用户可通过Hadoop...
- **内存限制**: Map-Reduce 主要在磁盘上操作,而不是内存中,这可能会影响处理速度。 #### 六、Hadoop Map-Reduce 的配置与优化 为了充分利用 Hadoop Map-Reduce 的性能,开发者需要关注以下几点: - **资源...
该参数决定了是否开启合并Map/Reduce小文件,对于Hadoop 0.20以前的版本,起一首新的Map/Reduce Job,对于0.20以后的版本,则是起使用CombineInputFormat的MapOnly Job。如果设置为true,则Hive将开启合并Map/Reduce...
为了支持大规模数据存储与访问,Map-Reduce 使用了一种称为分布式文件系统(Distributed File System, DFS)的技术。DFS 的主要功能包括: - **数据分块**:将大文件分割成若干固定大小的块(例如 16-64MB),提高...
- **资源管理**:设置 Map 和 Reduce 任务所需的 CPU、内存等资源。 - **文件系统路径**:指定输入和输出的文件系统路径。 - **任务类型**:指定 Map 或 Reduce 任务的数量。 - **序列化**:选择用于序列化的类。 #...
然后,Master、Worker、Map 操作(M 个)、Reduce 操作(R 个)是构成执行程序的主要部分,其中 Map/Reduce 的处理任务会由 Master 伴随物联网的快速发展和广泛应用,人们可以有效利用物联网来实现信息交换和通信的...
在使用聚合函数如sum、count、max和min时,可以在Map端进行预聚合,这不仅减少了数据倾斜的可能性,还可以减少Map/Reduce作业的总数。 count(distinct)操作因为数据倾斜问题效率往往比较低。为了提高count(distinct...
4. **配置Map/Reduce和DFS主节点**:在"Map/Reduce Locations"中创建一个新的Hadoop位置,指定Map/Reduce Master和DFS Master的Host和Port,这些信息通常在`mapred-site.xml`和`core-site.xml`中定义。 5. **新建...
通过Hadoop平台和Map/Reduce模式的运用,该研究展示了如何高效地处理大量物联网数据并实现数据挖掘的目的。 ### Hadoop平台操作流程 1. **RFID数据处理**:首先,文档提到需要对物联网环境中的RFID数据进行预处理...
Map Side Join 减轻了 Reduce 阶段的压力,因为大部分 Join 工作在 Map 阶段已完成,适合于数据量不均衡且小数据集能完全装入内存的情况。 四、实现细节 在 Reduce Side Join 的实现中,Mapper 根据输入文件名处理...
- **Combiner 使用**:在 Map 端使用 Combiner 函数预先聚合数据,减少网络传输量。 #### 五、案例分析 - **WordCount 示例**:这是一个经典的 MapReduce 示例,用于统计文本文件中单词出现的次数。 - **Inverted ...
标题中的"map-reduce.rar"表明这是一个与MapReduce相关的压缩文件,MapReduce是Google提出的一种分布式计算模型,被广泛应用于大数据处理领域。Hadoop是Apache软件基金会开发的一个开源框架,它实现了MapReduce模型...
每种算法的代价模型包括计算成本、内存使用和网络通信开销,选择哪种算法取决于数据特性、集群资源和性能需求。实验验证部分可能会展示不同算法在不同数据规模和硬件配置下的性能对比,以帮助开发者做出最佳选择。 ...
由于Map/Reduce在HBase上的性能比在HDFS上慢3到4倍,启动开销大,且依赖磁盘计算,不适合快速查找。 接下来,文章描述了如何实现交互式查询。它介绍了HBase SQL的架构视图,其中包括了Hive和HBase SQL执行引擎,...
- **含义**:控制map/reduce job是否应该使用各自的独立JVM提交。 - **默认值**:`false` - **建议设置**:保持默认值,除非有特别的需求。 17. **hive.exec.script.maxerrsize** - **含义**:定义通过...
- 其他配置调整:例如,合理设置Map和Reduce任务的数量,根据集群资源调整内存分配,以及优化执行计划(如Tez或Spark)。 在实际操作中,应结合集群环境、数据特性以及查询需求进行综合优化,充分利用Hive提供的...
在reduce端,reduce task需要从map task拉取数据,这时需要跨节点去拉取其它节点上的map task结果。在拉取数据时,需要尽可能地减少对带宽的不必要消耗。 Shuffle过程的细节可以分为四步: 1. 在map task执行时,...