谈谈MapReduce

php中文网
发布: 2016-06-07 16:26:22
原创
1268人浏览过

我的废话1: 这篇文章不讲述有关mapreduce的具体技术和代码示例,只是谈谈我对mapreduce初试+摸索阶段的感受,所以欢迎各路英雄的板砖向我抛来。 我的废话2: MapReduce 让运算散列 且 并行着。 MapReduce被业界认定是Google推出,如今也不是什么新的技术,

我的废话1:
    这篇文章不讲述有关mapreduce的具体技术和代码示例,只是谈谈我对mapreduce初试+摸索阶段的感受,所以欢迎各路英雄的板砖向我抛来。

我的废话2:
     MapReduce 让运算散列 且 并行着。

   mapreduce被业界认定是google推出,如今也不是什么新的技术,自从apache的hadoop项目启动以来mapreduce就是整个hadoop项目的核心内容,pig、hive和hbase都是针对mapreduce框架的实现工具,所以对hbase、hive、pig的深入了解必须对mapreduce有一定研究,以我自己的理解mapreduce就是把要计算的大型数据集切分成多个小的分区,根据这些被划分的小分区创建多个对应的任务去计算这些被切分的数据,在集群的节点上结合分区表分布式的执行计算,中间有调度器和计数器的环节,最后再把多个任务的计算结果进行合并,输出计算的结果。在这些执行每个分块的分布式集群节点中,可以使用非常廉价的机器,这样就可以使用低端的设备组成一个超大的型的运算。

  MapReduce的原理是比较简单的,并且目前流行大部分语言都能实现。如今Yahoo利用MapReduce定期在搜索业务上使用Hadoop来提高其产品和服务,如排名功能和目标广告。Google利用MapReduce来进行分布排序,web连接图反转,每台机器的词矢量,web访问日志分析,也有一些开源项目利用MapReduce来实现产品的功能,例如:最著名的MongoDB和Apache的Nutch,还有一些项目提出使用MapReduce来执行对数据库的分布式计算,例如:Gearman(Ref),运行在微软云计算平台上的lokad-cloud(Ref) 。  MySpace也自己研制的MapReduce框架Qizmt开源了(Ref),可用于在大规模Windows集群上开发或运行分布式计算程序。

   对于在Hadoop中涵盖的技术(Hive/HBase/Pig)对于传统的数据库来说,具有天然的可扩展性和支持海量数据存储的能力,并且对非结构化的数据处理能力完全超越于传统的数据库技术。例如,当MySQL运行的集群节点达到100台以上,虽然说理论上MySQL单张表的最大数据容量可以达到2T,但是如果真正需要依靠MySQL来存储的数据上T再加上大并发的用户访问,无论是维护还是操作都是非常头痛的事情,让MySQL或者传统数据库肩负超大型的数据运算/查询,化九牛二虎之力跑起来稳定一段时间过后,我想也会把MySQL累个半死,这是也并不是说让Hadoop/MapReduce/Hive 这些技术去替代传统的技术,而是希望Hadoop/MapReduce/Hive去用于做数据转换或者装载的(ETL)方面的工作,MapReduce适合海量数据数据被一次写入和多次读取的应用,在这些场合,MapReduce可以成为传统数据库的良好补充,而不是替代品。

  某些特定的场景中要存储上亿个文件本身就是一个头疼的问题,还要找出上亿个文件中存储的文档、图片、网页 哪个最大,并且还要分别列出3类,那更是雪上加霜,但利用Hadoop提供的MapReduce框架,基于HDFS分布式海量数据存储的手段,相对传统的方法而言会轻松一点,因为利用Hadoop的技术可以让廉价的机器组成在一起带来更高的计算性能,并且支持海量存储,换而言之,如果你的数据还没有上千万 上了Hadoop基本上是用“关公的大刀切青菜”,资源浪费。

   Hadoop并非是完全用于非结构化和半结构化的数据处理,在Apache Hadoop的MapReduce中为了方便MapReduce直接访问关系型数据库(Mysql,Oracle),MapReduce输入的键和值并不是数据固有的属性,可以人为的来选择数据来源。Hadoop提供了DBInputFormat和DBOutputFormat两个类。这样就可以将现有数据库中的数据转储到Hadoop/HDFS中,由MapReduce进行分布式计算,通过MapReduce框架对海量数据进行分析,或者也可以倒过来从海量的非结构/半结构/结构化的数据分析,将计算的结果存储到数据库。关键字:DBOutputFormatDBInputFormatDBConfiguration,根据这几个关键字可以Google到更多结果,暂时先不提供代码了,稍后会提供完整的代码示例和个人见解,需要了解的同学可以先看看这里(Ref)。

让我更值得关注的是如何将mapreduce使用在适合的场景,将hadoop mapreduce的框架用途发挥到极致,或者说当面对大型计算该如何借用mapreduce框架、原理将计算进项散列在不同的计算机上去执行同一份作业,去更高的发挥机器的资源,更快的得到计算的运行结果,我想这才是使用mapreduce真正的目标吧。

–end–

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号