HDFS
框架和使用场景
分布式文件系统。一次写入,多次读取;容量可线性扩展,存储高可靠。
运行机制
读数据流程(见word文档)
写数据流程(见word文档)
NN工作机制(见word文档)
1.响应客户端响应 2.维护目录树 3.管理元数据
异常处理
RPC机制(网络通信)
Mapreduece
框架和使用场景
API使用
运行机制
shuffle机制:map和reduce中间的数据调度机制,包含缓存,分区,排序。
reduce task数量决定机制
业务逻辑需要(有些场景只能有一个,比如统计某一个单词出现的次数)
数据量大小 job.setnumberReduceTsks(n)
如果重写了分区,就必须使任务数大于等于分区数。
map task数量决定
完全取决于数据量的大小
split
默认的切片机制:
Textinputformat.getsplit(“path”)做切片规划
1. 定义切片大小,可以通过参数调节,但是默认情况等于hdfs中的设置的blocksize
2. 获取数据目录下所有待处理文件list
3. 遍历文件list,逐个文件进行切片
For(file:list)
对file从0偏移量开始切,每128M构成一个切片
比如a.txt(200M),就会切成 a.txt0-128M,a.txt128M-256M
b.txt 切成1个 b.txt 0-80M
如果要处理的数据是大量的小文件???,使用上述切片机制导致大量的切片,但是每个切片非常小,导致map task进程多,但数据量很小,效率很低。
解决:将多个小文件划分为1和切片,自定义inputfoemat子类,重写split
Mapreduce自带实现类:combinefileinputformat
Yarn
框架和使用场景
Resourcemanager 主节点master 只需要1个来工作
Nodemanager 从节点 根据集群规模可以有很多个
心跳通信?
1. yarn只负责资源的分配,不参与job具体的运行机制
2. mapreduce有一个进程mrappmaster来负责程序的运行流程控制
3. yarn可以为各种应用程序提供资源服务(类似于操作系统平台)
4. 可以把各种分布式框架整合到hadoop集群