版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/yuanyi0501/article/details/83031313
1.HDFS架构讲解
2.NameNode启动过程
3.YARN架构组建功能详解
4.MapReduce 编程模型
HDFS架构讲解
- 源自谷歌的GFS论文
- HDFS:
*抑郁扩展的分布式系统
*运行在大量普通的链家机器上,提供容错机制
*为大量用户提供性能不错的文件存储服务 - NameNode:单一节点。文件元素据的操作。副本存在位置由namenode决定,读取文件尽量让
用户先读取最近的副本,降低消耗和时延。周期性的从集群中的每个DataNode接受心跳信号和
块状态报告。
bin/hadoop balancer 运行一个集群的均衡命令。 - DataNode:一个数据块在datanode以文件存储在磁盘上;心跳是每3秒一次,namenode超过
10分钟没有收到某个datanode的心跳则认为该节点不可用
NameNode启动过程
数据存储位置:
*内存
*本地磁盘
*fsimage
*edits 编辑日志文件
格式化文件系统目的就是生成fsimage镜像文件,存储元数据信息
第一次启动HDFS:
1—— 格式化
2—— 生成fsimage
3—— 启动NameNode。读取镜像文件fsimage;
4—— 启动DataNode。注册;发送块报告(block report);
5—— 创建目录 /user/root/tmp 创建、上传文件都会写入到编辑日志文件中
6—— 在目录中放入文件(-site.xml)
第二次启动HDFS:
1—— NameNode读取fsimage和edits,在本地写一个新的fsimage(包含第一次启动的fsimage
和edits)生成一个空的编辑日志
2—— 启动DataNode 。注册;发送块报告(block report);
*************************** 进入安全模式*******************************
3—— 创建目录 /user/root/tmp 创建、上传文件都会写入到空的编辑日志文件中
4—— 在目录中放入文件(*-site.xml)
SecondaryNameNode
- 辅助NameNode,每过一段时间将fsimage和edits合并生成新的fsimage。
安全模式SafeMode
- 等待DataNodes向他发送快报告
- datanodes blocks/ total blocks= 99.999% 此时安全模式才会推出
操作:
- 可以查看文件系统的文件
- 不能改变文件系统的命名空间
- 创建文件夹
- 上传文件
- 删除文件
手动启动安全模式: bin/hdfs dfsadmin -safemode enter
手动关闭安全模式: bin/hdfs dfsadmin -safemode leave
获取当前安全模式状态:bin/hdfs dfsadmin -safemode get
YARN架构组建功能详解
ResourceManager:
全局的资源管理器,整个集群只有一个,负责集群资源的统一管理和调度分配。
- 功能:
*处理客户端请求
*启动/监控ApplicationMaster
*监控NodeManager
*资源分配与调度
NodeManager:
整个集群有多个,负责单个节点资源管理和使用
- 功能:
*单个节点上的资源管理和任务管理
*处理来自ResourceManager的命令
*处理来自ApplicationMaster的命令 - 管理抽象容器,这希望容器代表着可供一个特定应用程序使用的针对每个节点的资源。
- 定时的向RM汇报本节点上资源的使用情况和各个Container的运行状态
ApplicationMaster:
管理一个在YARN内运行的应用程序的每个实例
- 功能:
*为应用程序申请资源,并进一步分配给内部任务
*任务监控与容错 - 负责协调来自RM 的资源,开通过NM监视容器的执行和资源的使用(CPU、内存等的资源分配)
Container:
YARN中的资源抽象,封装某个节点上多维度资源,如内存、CPU、磁盘、网络等,当AM向RM申请资源时,RM向AM返回的资源便是用container表示的。
- YARN会为每个任务分配一个container,且该任务只能使用此container中描述的资源。实现了任务隔离
- 功能:
*对任务与性能环境的抽象
*描述一系列信息
*任务运行资源(节点、CPU、内存)
*任务启动命令
*任务运行环境
YARN资源管理
- 资源调度和资源隔离是YARN作为一个资源管理系统最重要和最基本的两个功能。资源调度由RM完成,资源隔离由各个NM实现。
- 资源隔离:RM将某个NM上的资源分配给任务(资源调度)后,NM需要按照要求为任务提供相应的资源,甚至保证这些资源应具有独占性,为任务运行提供基础的保证。
- yarn-site.xml内存和cpu配置:
MapReduce 编程模型
- 一种分布式计算模型,解决海量数据计算问题
- 将并行计算过程抽象成两个函数:
- map(映射):对一些独立元素组成的列表的每一个元素进行指定的操作,可以高度并行
- reduce(化简):对一个列表的元素进行合并
- 输入输出都是<key,value>
- map ——》input
- key是偏移量,value是内容
- hadoop yarn - - – - - - <0,hadoop yarn>
- Hadoop hdfs - - – - - - <11,Hadoop hdfs>
- map——》output= reduce——》input
- <hadoop,1>
- <yarn,1>
- map——> shuffle ——> reduce
- 分组group:将相同key的value合并在一起,放到一个集合中
- map ——》input
运行有两种模式:
- 本地模式
- yarn
- 将程序打包
- 放在linux系统下
- 运行命令bin/yarn jar 编写的jar目录 输入文件目录 输出文件目录(必须不存在)
数据类型:
- 所有的数据类型都要实现Writable接口。以便用这些类型定义的数据可以被序列化进行网络传输和文件存储
- Long ->LongWritable
- Int -> IntWritable
- String -> Text
- NullWritable 当<key,valu>中的key或value为空时使用