1.1.1是什么
:是中的一个分布式计算框架,基于写出的应用程序能够运行在大型集群上,并以一种可靠容错的方式并行处理上 T 级别的数据集 。
一个作业(Job)通常会把输入的数据切分为若干个独立的数据块,由 Map 任务(Task)以完全并行的方式处理它们 。框架会对 Map 的输出先进行排序,然后把结果输入给任务,通常作业的输入和输出都会被存储在文件系统中 。
整个框架负责任务的调度和监控,以及重新执行已经失败的任务 。
1.2 优点/缺点 1.2.1 优点1.2.2 缺点
不擅长做实际计算、流式计算、DAG(有向图)计算 。
的任务表达能力有限,一个只能完成一次映射和聚合,像 DAG 任务就需要多次聚合,那就需要将任务拆成多个,每个 任务都需要大量的磁盘 IO,将导致性能低下 。
1.3运行阶段
第一阶段: Map Task 并发实例,完全并行运行,不互相干
第二阶段:Task 并发实例,获取上一阶段的输出作为本阶段的输入
1.4进程
:负责整个程序的过程调度及状态调度
:负责 Map 阶段的整个数据处理流程
:负责阶段的整个数据处理流程
2. Java 词频统计
在理解之前,不如先用 Java 实现一个词频统计的实例 。
public static void main(String[] args) throws IOException {// 1. 创建容器存储结果HashMap
3.编程规范
利用实现词频统计之前还需要了解的编程规范 。
通常我们编写一个程序,会将其分解为三个部分:、、 。
**: **
自定义一个类,并继承 ,定义输入输出键值对的泛型实现父类的 map() 方法(进程),定义键值对的参数类型及上下文对象 编写 map 的具体实现,最后通过对象将映射结果写入框架
**: **
自定义一个类,并继承 ,定义输入输出键值对的泛型实现父类的 () 方法(进程),定义键值对的参数类型及上下文对象 编写 的具体实现,最后通过对象将聚合结果写入框架
:
这是一个包含 main 方法的任务的入口实例化 Job 对象,可选择性的添加各种配置将 Job 任务提交到集群 4.词频统计 4.1
我们需要继承类,来自于:org....
4.1.1 窥见源码 4.1.1.1类
类提供了四个泛型,分别是输入参数的键值对类型、输出参数的键值对类型
public class Mapper
?? 注意:这里我们不适用 Java 提供的类型,而是使用实现的序列化类型,公共接口为
如果读文本,通常默认的 KEYIN 类型为(可表示当前行文本的位置、字节偏移量), 的类型为 Text(表示当前行文本内容),输出的类型为 Text(表示输出值的键),输出的的类型为 (可表示为数量) 。
- Spark Streaming 实现数据实时统计案例
- Flink实现词频统计
- OpenCV:09车辆统计项目
- 统计学-点估计和区间估计
- 一 操作系统计算机操作系统概述
- 数据结构 C++实现 基于不同策略的英文单词的词频统计和检索系统
- 数学+统计+概率分布 R语言数据处理最基本的函数以及实际小案例
- 1976年中国突降罕见陨石雨。创三项世界纪录,其中一项尤为神奇! 世界之最统计
- 2021年中国炭素行业主要企业收入统计 中国十大碳素企业
- 分类统计,EXCEL 分类统计数量