Divide-and-Conquer分治思想:
最早可以追随到归并排序(MergeSort)算法:
如要对几千亿规模的数据进行排序,如何实现?因为数据量太大,无法在一台计算机上完成。
通过分治思维,将数据一分为二,然后对每一半数据进行排序,然后再讲排序好的两个队列进行合并,从而得到原数组的排序结果。可以将计算复杂度由O(N*N)降到O(N*logN),如果N是100万,那计算时间可以缩短约1万倍。
google的MapReduce原理就是:
Map过程,将一个大任务拆分成小的子任务,并且完成子任务的计算。
Reduce过程,将中间结果合并成最终结果。
hadoop就是基于这个原理的具体实现,这个实现包括了如何将任务自动拆分,保证服务器集群的负载均衡等。
WhatisMapReduce?
MapReduce是一种编程范例,可以在Hadoop集群中的数百或数千台服务器上实现大规模可扩展性。作为处理组件,mapreduce是hadoop的核心。术语“MapReduce”是指Hadoop程序执行的两个独立且不同的任务。第一个是映射作业,它获取一组数据并将其转换为另一组数据,其中各个元素被分解为元组(键/值对)。
reduce作业将map的输出作为输入,并将这些数据元组组合成一组较小的元组。正如名称MapReduce的顺序所暗示的那样,化简作业始终在映射作业之后执行。
MapReduce编程提供了几个好处,可以帮助您从大数据中获得有价值的内容:
可扩展性。企业可以处理存储在Hadoop分布式文件系统(HDFS)中的PB级数据。
灵活性。Hadoop可以更轻松地访问多个数据源和多种类型的数据。
速度。通过并行处理和最少的数据移动,Hadoop可以快速处理大量数据。
简单。开发人员可以使用多种语言编写代码,包括Java、C++和Python。.
流式计算Storm、flink也是基于这个原理实现的。
storm的spout对应Map过程,
storm的bolt对应Reduce过程
storm的spout和bolt
flink的stremgroup过程对应map。
sink过程对应reduce
Copyright © 2002-2030 北京觅寻传媒科技有限公司 联系我们|北京市海淀区阜石路甲69号院7号楼2层202 京ICP备2024051267号-1 北京无忧助孕中心网站地图sitemap.xml tag列表