原文 http://developer.51cto.com/art/201006/203789.htm
本节和大家继续学习Hadoop,Hadoop是一个分布式系统基础架构,由Apache基金会开发。它有什么奥秘呢,就让我们一起来继续关注Hadoop吧。
条款6:多个大输入的Job建议使用串行执行,多个小输入的Job建议使用并行执行。
Hadoop的任务处理分为map阶段以及reduce阶段,当集群的taskslots足够支持多个任务同时执行时,建议使用多任务并行执行,反之,建议使用串行执行,且当一个Job开始执行reducetask
时,可以开始执行下一个Job的maptask。
以下是我们在50台退役机器上分别并行和串行运行2个100G,200G,300G的任务的测试结果:
条款7:reducer的个数应该略小于集群中全部reduceslot的个数。
maptask的个数由输入文件大小决定,所以选择合适的reducer的个数对充分利用Hadoop集群的性能有重要的意义。
Hadoop中每个task均对应于tasktracker中的一个slot,系统中mapperslots总数与reducerslots总数的计算公式如下:
mapperslots总数=集群节点数×mapred.tasktracker.map.tasks.maximum
reducerslots总数=集群节点数×mapred.tasktracker.reduce.tasks.maximum
设置reducer的个数比集群中全部的reducerslot略少可以使得全部的reducetask可以同时进行,而且可以容忍一些reducetask失败。
条款8:多个简单串行的Job优于一个复杂的Job。将复杂的任务分割成多个简单的任务,这是典型的分治的思想。这样不仅可以使得程序变得更简单,职责更单一,而且多个串行的任务还可以
在上一个任务的正在执行reduce任务的时候,利用空闲的map资源来执行下一个任务。
4.Key-Value权衡
Map-Reduce算法的核心过程如下:
map(k1,v1)-->list(k2,v2)
reduce(k2,list(v2))-->list(v2)
即通过用户定义的map函数将输入转换为一组<Key,Value>对,而后通过用户定义的reduce函数将<Key,List<Value>>计算出最后的结果。
如何选择合适的map和reduce函数才能充分利用Hadoop平台的计算能力呢?换句话说,如何选择上式中合适的K2和V2呢?
条款9:maptask或reducetask的大小应该适中,以一个task运行2-3分钟为宜,且task不能超出计算节点的运算能力。
虽然Hadoop平台帮助我们将数据分割成为小任务来执行,但我们也应当意识到,每个task都是在一个计算节点运行的,若一个task对机器资源(CPU、内存、磁盘空间等)的需求超出了计算
节点的能力的话,任务将会失败。而如果task过小的话,虽然计算节点能够快速的完成task的执行,但过多的task的管理开销,以及中间结果频繁的网络传输将占据任务执行的绝大部分时间,
这样同样会严重影响性能。建议的task大小最好是以能够运行2-3分钟为宜。
条款10:map产生的中间结果不宜过大。
输入数据经过用户定义的map函数后生成的<Key,Value>对是Map-Reduce模型的中间计算结果。
Maptask将计算的中间结果保存在本地磁盘,而后通过Reducetask拉去所有当前任务所需的中间结果,并将中间结果按Key排序。显然若map产生的中间结果过大,网络传输时间以及中间结
果排序将占据大部分的Job执行时间。本节关于Hadoop的介绍到此结束。
分享到:
相关推荐
- **高级特性**: 探讨了一些高级特性,比如窗口函数、子查询等在Hive中的使用方法,对于提升数据分析效率非常有帮助。 以上资源覆盖了Hadoop学习的各个方面,从理论到实践,从基础到高级,旨在帮助初学者系统地...
综上所述,《Hadoop:The Definitive Guide》(第二版)是一本非常有价值的参考书,无论是对于想要了解Hadoop基础知识的新手还是已经具备一定经验的技术专家,都能够从中获得宝贵的指导和启示。
《Hadoop:The Definitive Guide》第三版不仅是一本全面介绍Hadoop基础知识和技术细节的指南,也是一本实用的手册,可以帮助读者理解Hadoop的核心概念、掌握其使用方法,并了解如何将其应用于实际的数据处理项目中。...
- **GraphX**:讨论了GraphX的使用方法及其在图计算中的优势。 3. **高级主题**: - **流处理**:比较了Hadoop与Spark在流处理方面的不同之处,特别是在实时数据处理领域的应用。 - **性能优化**:提供了提高...
这本书由著名数据专家Tom White撰写,旨在帮助读者理解Hadoop生态系统,并掌握其核心组件的使用方法。中文版与英文原版的结合,使得国内读者在学习过程中能更好地理解和实践。 Hadoop是一个开源框架,主要用于处理...
11. 数据仓库与数据挖掘:讲解数据仓库的概念、OLAP(在线分析处理)操作,以及数据挖掘的基本方法和技术。 通过学习《魏祖宽第二版数据库系统及应用》及其配套PPT,学生可以系统地掌握数据库系统的基础知识,为...
《HCIP-Big Data Developer(H13-723)培训教材及实验手册V2.0》是一个针对大数据开发专业人员的深度学习资源,旨在帮助学员掌握华为认证的信息通信技术专家(HCIP)级别的大数据开发技能。这个压缩包包含了两部分...
详细讲解使用HBase设计大型数据应用系统的实践方法和技巧;深刻总结系统运维、监控和性能调优的最佳实践。, 本书强调HBase在企业的实际应用,立足于企业的实际生产环境,旨在帮助企业切实解决大数据技术如何落地的...
7. **测试与调试**:如何使用JUnit进行单元测试,以及调试工具的使用方法。 在云海大数据的背景下,这个教学资源可能还会结合大数据技术,比如Hadoop、Spark等,讲解如何使用Java进行大数据处理和分析。学习者可以...
《HCIE-Big_Data-Data_Mining_V2.0实验及培训教材》是华为认证互联网专家(HCIE)大数据方向的一项重要学习资源,专为有志于深入掌握大数据挖掘技术的高级技术人才设计。这份资料涵盖了大数据领域的核心知识点,旨在...
作为一位在IT行业有着深厚造诣的专家,卞佳丽老师以其独特的教学方式和深入浅出的讲解,使复杂的计算机知识变得生动易懂。 一、计算机科学基础 1. 计算机系统概论:讲座首先介绍了计算机系统的构成,包括硬件和...
- 内容:教授UML语言的基本概念和使用方法,有助于软件设计和团队沟通。 - **《重构:改善既有代码的设计》** - 作者:Martin Fowler - 内容:介绍了重构技术,帮助开发人员优化已有代码结构,提升代码质量。 -...
通过五周的学习,学生将能够掌握分布式系统的基本概念、MapReduce理论及其实践应用,并利用Hadoop进行分布式程序设计。 #### 二、授课方式 课程采取多媒体与传统教学相结合的方法,理论讲解与实验操作并重。通过...
1. 大数据概述:介绍大数据的基本概念、特点、技术栈(如Hadoop、Spark、Flink等)以及对传统数据库的挑战。 2. 大数据存储:探讨适合大数据的存储解决方案,如分布式文件系统(HDFS)、NoSQL数据库(如HBase、...
这份"期末考试数据库系统教程PPT(施伯乐)"是由知名专家施伯乐教授编撰的复习资料,旨在帮助学生掌握数据库系统的基本概念、设计原理以及实际应用。 首先,我们要了解数据库的定义:数据库是一个组织和存储数据的...
2. **华为FusionInsight大数据平台**:华为的FusionInsight是企业级的大数据处理平台,教材会深入讲解其架构、组件、安装部署及日常管理。包括FusionInsight Manager的使用,以及FusionInsight HD中的Hive、HBase、...