1.计算框架
Hadoop 是一个计算框架,目前大型数据计算框架常用的大致有五种:
- 仅批处理框架:
Apache hadoop
. - 仅流处理框架:
Apache Storm
、Apache Samza
. - 混合框架:
Apache Spark
、Apache Flink
.
这其中名气最大、使用最广的当属 Hadoop 和 Spark。
虽然两者都被称为大数据框架,但实际层级不同。Hadoop 是一个分布式数据基础设施,包括计算框架 MapReduce、分布式文件系统 HDFS、YARN 等。而Spark 是专门用来对分布式存储的大数据的处理工具,并不会进行数据存储,更像是 MapReduce 的替代。
在使用场景上,Hadoop 主要用于离线数据计算,Spark更适用于需要精准实时的场景。本文主要介绍 Hadoop,对 Spark 不做讨论。
本文介绍下 Hadoop 另一重要组件 MapReduce,以及 Hive。
2. MapReduce
2.1 MapReduce 是什么
一个基于 Java 的并行分布式计算框架。前文有提到 HDFS 提供了基于主从结构的分布式文件系统,基于此存储服务支持,MapReduce 可以实现任务的分发、跟踪、执行等工作,并收集结果。
2.2 MapReduce 组成
MapReduce 主要思想讲的通俗一点就是将一个大的计算拆分成 Map(映射)和 Reduce(化简)。
说到这里,其实 JAVA8 在引入 Lambda 后,也有 map 和 reduce 方法。下面是一段 Java 中的用法:
List<Integer> nums = Arrays.asList(1, 2, 3);
List<Integer> doubleNums = nums.stream().map(number -> number * 2).collect(Collectors.toList());
结果