1.计算框架Hadoop是一个计算框架。目前常用的大规模数据计算框架大致有五种:仅批处理框架:Apachehadoop。唯一的流处理框架:ApacheStorm、ApacheSamza。混合框架:ApacheSpark、ApacheFlink。其中以Hadoop和Spark最为著名,应用也最为广泛。虽然都被称为大数据框架,但实际层次是不同的。Hadoop是一种分布式数据基础设施,包括计算框架MapReduce、分布式文件系统HDFS、YARN等。而Spark则是专门为处理分布式存储中的大数据而设计的工具。它不存储数据,更像是MapReduce的替代品。在使用场景上,Hadoop主要用于离线数据计算,而Spark则更适合需要精准实时的场景。本文主要介绍Hadoop,不讨论Spark。本文承接了知识库(https://gitlab.aihaisi.com/docs/docs/issues/516)中Hadoop的HDFS,介绍了Hadoop的另一个重要组件MapReduce和Hive。2.MapReduce2.1什么是MapReduce,一个基于Java的并行分布式计算框架。前面提到,HDFS提供了一个基于主从结构的分布式文件系统。基于这种存储服务支持,MapReduce可以实现分发、跟踪、执行等任务,并收集结果。2.2MapReduce的组成MapReduce的主要思想是把一个大的计算拆分成Map(映射)和Reduce(化简)。说到这里,其实在引入Lambda之后,JAVA8也有了map和reduce方法。下面是Java中的一个用法:Listnums=Arrays.asList(1,2,3);ListdoubleNums=nums.stream().map(number->number*2).collect(Collectors.toList());Result:[2,4,6]Optionalsum=nums.stream().reduce(Integer::sum);Result:[6]代码很简单,map负责classification,reduce负责计算。而Hadoop中的MapReduce也有同样的目的。下面结合官方案例WordCount进行分析:publicclassWordCount{//Mapper泛型类,4个参数分别代表输入键,值,输出键,值类型publicstaticclassTokenizerMapperextendsMapper