Advertisement

2024年最新大数据技术入门:MapReduce(分布式计算框架),2024年最新2024年是意义非凡的一年

阅读量:
img
img
img

包括了既适合小白学习的基础入门材料,也涵盖了深入学习所需的高级课程(3年以上经验伙伴),系统性地构建了一个覆盖绝大多数大数据知识点的知识体系。

因为文件数量较多,仅对部分目录进行了截图展示。该套资源集 comprehensive地包含大厂面经、学习笔记、源码教程、实战项目、大纲路线以及讲解视频,并承诺后续将持续更新。

需要这份系统化资料的朋友,可以戳这里获取

一、概述

=================================================================

MapReduce是一种开发框架,旨在处理大量数据并进行并行计算。其核心理念包括'映射'操作和'归约'操作,并源自函数式编程语言领域的同时吸收了矢量编程语言的特性。它特别适用于无需分布式并行编程知识也能高效运行的应用场景。具体实现时,则需指定映射函数来转换输入键值对,并将这些键值对分组后通过并行执行归约操作来完成统一处理。在实际应用中,则需指定一个Map(映射)函数将输入键值对转换为新的键值对,并指定并发的Reduce(归约)函数以确保所有映射后的键值对能够按照相同的键组进行处理。

MapReduce核心特性

主要用于大数据计算领域,解决海量数据的计算问题。

从本质上讲,MR只是一个编程与计算的综合框架。如果说得更简洁一些的话,则 MR 实际上只是提供了一系列功能完整的可调用jar包。与拥有具体运行实例的服务(如MySQL、HDFS、Hive等)相比,则存在明显的区别。因此,在这些服务中并没有对应的运行实例。换句话说,在这些服务中并没有对应的运行实例

MR由两个核心组件构成:map函数和reduce函数,在MapReduce模型下无需编写并实现这两个基本功能就能完成分布式计算。

该编程模型仅由两个核心过程组成:Map函数和Reduction函数。其中Map函数的主要操作对象是一组键值对(key-value),经过映射处理后生成一组新的键值对;接着将具有相同键的记录进行合并整合为一个键值集合;最后将此整合后的键值集合被传递给Reduction函数进行处理运算以返回零个到多个键值对结果

二、MapReduce工作原理

============================================================================

在这里插入图片描述

大数据应用进程(提交任务的客户端):

该进程负责启动MapReduce程序,并主要负责指定Map类和Reduce类等相关参数、输入输出文件路径及其它相关参数,并将任务提交给Hadoop集群。

JobTracker进程:

Hadoop集群中的常驻进程会根据需要处理的数据量大小自动启动相应的Map任务和Reduce任务,并负责调度与监控该作业在整个运行周期内的任务安排。

TaskTracker进程:

Hadoop集群中的大多数服务器几乎同时运行DataNode进程以及TaskTracker进程以确保高效数据处理。集群中的大部分节点都协调执行Map任务与Reduce任务从而实现了并行数据处理功能

三、MapReduce操作

==========================================================================

运维操作:

复制代码
     hadoop    jar    jar包路径   入口程序类名   输入文件的hdfs目录     输出文件的hdfs目录

四、案例

=================================================================

复制代码
    public class WordCount {
    
      public static class TokenizerMapper  extends Mapper<Object, Text, Text, IntWritable>{
    
    private final static IntWritable one = new IntWritable(1);
    
    private Text word = new Text();
    
    public void map(Object key, Text value, Context context
    
                    ) throws IOException, InterruptedException {
    
      StringTokenizer itr = new StringTokenizer(value.toString());
    
      while (itr.hasMoreTokens()) {
    
        word.set(itr.nextToken());
    
        //针对每个单词输出一个<word ,1>
    
        //MapReduce 计算框架会将这些<word ,1>收集起来,将相同的word放一起,形成
    
        //<word,<1,1,1,...>>这样的<key,value集合>,然后输入给reduce
    
        context.write(word, one);
    
      }
    
    }
    
      }
    
     
    
      public static class IntSumReducer    extends Reducer<Text,IntWritable,Text,IntWritable> {
    
    private IntWritable result = new IntWritable();
![img]()
![img]()
    
    **网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。** **[需要这份系统化资料的朋友,可以戳这里获取]()** **一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**
    
    tps://bbs..net/topics/618545628)** **一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

全部评论 (0)

还没有任何评论哟~