Hadoop的简单介绍以及MapReduce计算每个月份的总销售额

目录

一、Hadoop的简介

1.HDFS(Hadoop Distributed File System):

2.MapReduce:

3.YARN(Yet Another Resource Negotiator):

二、MapReduce计算每个月份的总销售额

1.引入外部类、接口或其他资源

2.map阶段

3.reduce阶段 

4.main

三、 总结


一、Hadoop的简介

Hadoop的架构是一个设计用于处理大规模数据集的分布式系统基础架构。其核心组件包括Hadoop Distributed File System(HDFS)和MapReduce,以及作为资源管理和任务调度的YARN(Yet Another Resource Negotiator)。以下是Hadoop架构的详细描述:

1.HDFS(Hadoop Distributed File System)

  • HDFS是Hadoop的分布式文件系统,用于存储大数据集。它采用主从架构,由一个NameNode和多个DataNode组成。
  • NameNode负责管理文件系统的元数据,如文件的名称、权限、块信息等。它还负责处理客户端的读写请求,并将这些请求转发给相应的DataNode。
  • DataNode负责存储实际的数据块。当客户端需要读取或写入数据时,它会与NameNode进行通信,以获取数据块的位置信息,并与相应的DataNode进行数据传输。
  • HDFS具有高容错性,它通过将数据块复制到多个DataNode上来实现数据的冗余备份。当某个DataNode出现故障时,HDFS可以自动从其他DataNode中恢复数据块,保证数据的可靠性和可用性。

2.MapReduce

  • MapReduce是Hadoop的计算框架,用于处理和分析存储在HDFS上的大数据集。它将复杂的计算任务拆分成两个简单的阶段:采用了Map和Reduce两个阶段。在Map阶段,输入数据被切分成若干个小块,并对每个小块进行处理,输出中间结果。而在Reduce阶段,这些中间结果被合并,得到最终的输出结果。
  • 在Map阶段,Hadoop将输入数据划分为多个数据块,并将每个数据块分配给集群中的一个或多个节点进行处理。每个节点执行Map任务,对输入数据块进行处理,并生成一系列的中间结果。
  • 在Reduce阶段,Hadoop将Map阶段生成的中间结果按照相同的键进行分组,并将这些结果分配给集群中的一个或多个节点进行合并和计算。每个节点执行Reduce任务,对分组后的中间结果进行计算,并生成最终的输出结果。
  • MapReduce框架通过并行处理和分布式计算的方式,能够高效地处理大规模数据集,并自动处理节点之间的数据传输和同步。

3.YARN(Yet Another Resource Negotiator)

  • YARN是Hadoop的资源管理和任务调度框架,用于管理集群中的计算资源,并将计算任务分配给合适的节点进行处理。
  • YARN包括一个ResourceManager和多个NodeManager。ResourceManager负责全局的资源管理和任务调度,它接收客户端提交的计算任务,并根据集群的资源情况将任务分配给合适的NodeManager。NodeManager负责管理单个节点上的资源,并执行ResourceManager分配的计算任务。
  • YARN还支持多种计算框架的集成,如Spark、Flink等。这些计算框架可以运行在YARN之上,共享Hadoop集群的计算资源,并通过YARN进行任务调度和资源管理。

二、MapReduce计算每个月份的总销售额

1.引入外部类、接口或其他资源

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.Mapper;
import org.apache.hadoop.mapreduce.Reducer;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
 
import java.io.IOException;

2.map阶段

public class MonthlySales {
 
    public static class MonthlySalesMapper extends Mapper<Object, Text, Text, IntWritable> {
        private static Text month = new Text();
        private static IntWritable sales = new IntWritable();
 
        public void map(Object key, Text value, Context context) throws IOException, InterruptedException {
            // 假设输入值是以空格分隔的,第一个字段是月份,第二个是销售额
            String[] fields = value.toString().split(" ");
            month.set(fields[0]);
            sales.set(Integer.parseInt(fields[1]));
            context.write(month, sales);
        }
    }

3.reduce阶段 

public static class MonthlySalesReducer extends Reducer<Text, IntWritable, Text, IntWritable> {
        private static IntWritable totalSales = new IntWritable();
 
        public void reduce(Text key, Iterable<IntWritable> values, Context context) throws IOException, InterruptedException {
            int sum = 0;
            for (IntWritable val : values) {
                sum += val.get();
            }
            totalSales.set(sum);
            context.write(key, totalSales);
        }
    }

4.main

public static void main(String[] args) throws Exception {
        Configuration conf = new Configuration();
        Job job = Job.getInstance(conf, "Monthly Sales");
        job.setJarByClass(MonthlySales.class);
 
        job.setMapperClass(MonthlySalesMapper.class);
        job.setReducerClass(MonthlySalesReducer.class);
 
        job.setOutputKeyClass(Text.class);
        job.setOutputValueClass(IntWritable.class);
        //输入路径
        FileInputFormat.addInputPath(job, new Path(E:\\pppppp\\Hadoop\\input2\\inputscorestatistics\\subject_score.csv));
        //输出路径
        FileOutputFormat.setOutputPath(job, new Path(E:\\pppppp\\Hadoop\\output2\\wordcount2));
 
        System.exit(job.waitForCompletion(true) ? 0 : 1);
    }
}

三、 总结

Hadoop的生态系统非常丰富,包含许多相关工具和技术,如HivePigHBase等,可以方便地构建复杂的大数据应用。Hadoop的架构通过HDFS实现数据的分布式存储和容错性保障,通过MapReduce实现计算任务的并行处理和分布式计算,通过YARN实现计算资源的统一管理和任务调度。这种架构使得Hadoop能够高效地处理和分析大规模数据集,成为大数据领域的重要工具之一。

 

 

  • 41
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值