中午左右收到一个看我blog的朋友的邮件,最近他在研究mapreduce,然后想用hadoop来做一些工作,不过遇到了一些问题,我这边也贴一下他的几个问题,同时觉得自己把自己的一些看法分享一下,当然只是自己的一些想法,也许对新学习的同学有帮助。
问题:
- 从Map(K,V)的方式来看,难道mapreduce只能做统计?
- 目前我想除了日志分析之类的功能外,还想做一个全文检索的功能,类似windows查询一下,通过关键字查询文件的位置即可(可能还要根据匹配度做排序),这个我很迷茫不知道怎么下手,痛苦ing
- 你的实践是一个单机模式,如果用户把一个1G的log已经上传到hdfs了,此时分割工作已经完成,只需要从client那里得到文件基本信息和块的location就可以了,那mapreduce怎么进行下去呢?
我给回复的邮件内容:
首先,MapReduce的思想和Hadoop的MapReduce的架构不是一个概念,说的具体一点也就是Hadoop的架构设计只是MapReduce的一个子集思想的实现。每个人都可以根据自己对MapReduce的理解去实现业务处理,简单来说多线程处理就是MapReduce的一种最简单的实现,复杂来说多机协调工作就是一种复杂的实现。
MapReduce的思想里面最值得借鉴的:
a.问题分而治之。(找到流程的关键路径,优化可以并行处理的工作)
b.计算靠近数据。(这也是hdfs存在的最重要的特点,计算的转移往往要比数据转移廉价,特别是对海量数据的处理)
c.数据规模化随着并行处理成数量级递减。
剩下的内容就是各个框架对于非业务性需求的处理,例如容灾,如何尽量少穿数据协调处理等等。
针对他提出的三个问题:
1. Hadoop的mapreduce从架构上来说最适合的就是统计分析计算。做其他方面的工作需要考虑是否适合,而不是为了技术而技术,先有需求再有技术选型。
2. 对于你这个需求直接用搜索技术实现就可以了,不一定要硬套在mapreduce上。
3. 对于海量数据是否一定要到hdsf上,或者就简单得数据物理或者逻辑切割来直接处理,根据自己业务场景选择。hdfs的特点就是对文件切割,容灾,数据逻辑存储和物理存储无关性(便于扩容管理,同时也是计算靠近数据的技术保证)。
是否使用MapReduce框架,HDFS存储关键还是看你是否真的需要,当现有框架对自己来说并不合适的时候可以对小规模问题定制MapReduce的处理,最简化就是你去多线程或者多进程处理问题,需求决定技术选型。
分享到:
相关推荐
MapReduce框架自动处理了分布式系统的许多复杂问题,如数据分布、错误恢复、负载均衡和通信管理,简化了大规模数据处理的实现难度。通过这种模型,开发者可以专注于业务逻辑,而不是底层分布式系统的细节,从而更...
- **高容错性**:MapReduce设计能够在廉价的硬件上运行,具备自动故障恢复机制。一旦检测到某个任务失败,系统会自动重新调度该任务至其他节点执行,无需人工干预。 - **适用于PB级数据处理**:支持大规模数据集的...
此外,通过检查点和中间结果的持久化,MapReduce可以恢复到故障前的状态。 11. **性能优化**:MapReduce可以通过调整如Reduce任务数量、Combiner的使用、数据本地性、磁盘I/O优化等参数来提高性能。 12. **...
- **容错性**:Hadoop的HDFS和MapReduce设计都考虑到了容错性,能够在节点故障的情况下自动恢复数据处理。 MapReduce适用于各种大数据处理场景,如日志分析、数据挖掘、机器学习、搜索索引构建等。 #### 五、结论 ...
Reduce阶段是MapReduce的核心部分,它负责对经过Shuffle阶段整理后的键值对进行处理。Reduce函数接收一组具有相同键的值,通常用于聚合、总结或者计算这些值。例如,如果键表示类别,值表示数量,Reduce函数可以用来...
MapReduce是大数据处理领域中的核心组件,尤其在处理大规模分布式数据集时,它的重要性不言而喻。本书以实例驱动的方式,将复杂的理论知识转化为可操作的代码,使学习过程更加生动有趣。 首先,我们要理解MapReduce...
大规模数据处理时,MapReduce在三个层面上的基本构思 如何对付大数据处理:分而治之 对相互间不具有计算依赖关系的大数据,实现并行最自然的办法就是采取分而治之的策略 上升到抽象模型:Mapper与Reducer MPI等...
它自动处理数据分割、任务调度、错误恢复和跨机器通信等问题,使得开发者能够专注于编写Map和Reduce函数,而无需具备分布式计算的专业知识。这种抽象使得开发大规模数据处理应用变得更加简单和高效。 Google的...
总结来说,《MapReduce 权威指南》旨在帮助读者理解并掌握MapReduce编程模型,通过实例教学如何在Hadoop上开发和优化MapReduce程序,解决大规模数据集的分析问题,是大数据处理领域的重要参考资料。
- JobTracker监控:JobTracker负责监控整个作业的进度和健康状况,对出现问题的任务进行管理和恢复。 5. **优化策略**: - Combiner:在Map阶段引入Combiner,进行局部聚合,减少网络传输的数据量。 - spills:...
Google 内部已经使用 MapReduce 重写了其索引系统,证明了这一模型在处理大数据问题上的实用性。 总结来说,MapReduce 是一种强大的工具,它通过将复杂的数据处理任务分解为可并行化的 Map 和 Reduce 阶段,使...
### MapReduce与...例如,在数据预处理和批处理作业中使用MapReduce,在实时查询和复杂事务处理中采用Parallel DBMS。通过合理地结合这两种技术,可以充分发挥各自的优点,构建出更加强大、高效的数据处理平台。
此外,MapReduce还具备自动处理数据分布、跨机器调度、故障恢复和节点间通信等功能,使得开发者无需深入理解分布式系统就能编写处理大规模数据的应用程序。 #### 二、MapReduce的基本编程模式 MapReduce的基本编程...
### MapReduce 编程模型详解 ...尽管随着Hadoop、Spark等更先进的框架的出现,MapReduce在某些场景下可能不再是最佳选择,但它在分布式计算领域的历史地位是不可替代的,对后续的大数据处理技术产生了深远的影响。
据作者称,在谷歌内部已经有数百个MapReduce程序被开发出来,每天执行的MapReduce任务数量超过一千个。 #### 应用示例 MapReduce可以应用于多种场景,包括但不限于: - **网页索引构建**:处理大量网页文档,建立...