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



包括了既适合小白学习的基础入门材料,也涵盖了深入学习所需的高级课程(3年以上经验伙伴),系统性地构建了一个覆盖绝大多数大数据知识点的知识体系。
因为文件数量较多,仅对部分目录进行了截图展示。该套资源集 comprehensive地包含大厂面经、学习笔记、源码教程、实战项目、大纲路线以及讲解视频,并承诺后续将持续更新。
=================================================================
MapReduce是一种开发框架,旨在处理大量数据并进行并行计算。其核心理念包括'映射'操作和'归约'操作,并源自函数式编程语言领域的同时吸收了矢量编程语言的特性。它特别适用于无需分布式并行编程知识也能高效运行的应用场景。具体实现时,则需指定映射函数来转换输入键值对,并将这些键值对分组后通过并行执行归约操作来完成统一处理。在实际应用中,则需指定一个Map(映射)函数将输入键值对转换为新的键值对,并指定并发的Reduce(归约)函数以确保所有映射后的键值对能够按照相同的键组进行处理。
MapReduce核心特性
主要用于大数据计算领域,解决海量数据的计算问题。
从本质上讲,MR只是一个编程与计算的综合框架。如果说得更简洁一些的话,则 MR 实际上只是提供了一系列功能完整的可调用jar包。与拥有具体运行实例的服务(如MySQL、HDFS、Hive等)相比,则存在明显的区别。因此,在这些服务中并没有对应的运行实例。换句话说,在这些服务中并没有对应的运行实例
MR由两个核心组件构成:map函数和reduce函数,在MapReduce模型下无需编写并实现这两个基本功能就能完成分布式计算。
该编程模型仅由两个核心过程组成:Map函数和Reduction函数。其中Map函数的主要操作对象是一组键值对(key-value),经过映射处理后生成一组新的键值对;接着将具有相同键的记录进行合并整合为一个键值集合;最后将此整合后的键值集合被传递给Reduction函数进行处理运算以返回零个到多个键值对结果
============================================================================

大数据应用进程(提交任务的客户端):
该进程负责启动MapReduce程序,并主要负责指定Map类和Reduce类等相关参数、输入输出文件路径及其它相关参数,并将任务提交给Hadoop集群。
JobTracker进程:
Hadoop集群中的常驻进程会根据需要处理的数据量大小自动启动相应的Map任务和Reduce任务,并负责调度与监控该作业在整个运行周期内的任务安排。
TaskTracker进程:
Hadoop集群中的大多数服务器几乎同时运行DataNode进程以及TaskTracker进程以确保高效数据处理。集群中的大部分节点都协调执行Map任务与Reduce任务从而实现了并行数据处理功能
==========================================================================
运维操作:
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行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**
