hadoop 大型框架
定义: 开源的分布式系统基础架构
分布式: 多台服务器共同完成某一项任务
用途: 海量数据的存储,分析计算
特性:
高效性(可并行工作),
高扩展性(可动态增加/删除节点)
高可靠性(底层维护多个数据副本)
高容错性(自动将失败的任务重新分配)
HDFS架构概述Hadoop Distributed File System 分布式文件系统
用于存储文件,通过目录树来定位文件
使用场景:适合一次写入,多次读出,一个文件经过创建,写入和关闭后不需要再改变
NameNode(简称nn): 存储文件的元数据,如文件名,文件目录结构,文件属性(生成时间,副本数,文件权限),j以及每个文件的块列表和块所在的DataNode等,相当于Master,是一个管理者
a. 管理HDFS的名称空间
b. 配置副本策略
c. 管理数据库(block)映射信息
d.处理客户端读写请求
DataNode(dn): 在本地文件系统存储文件快数据,以及块数据的校验和,相当于slave,nn下达命令,dn执行实际操作
a. 存储实际的数据块
b. 执行数据库的读/写操作
Secondary NameNode(2nn): 每隔一段时间对NameNode元数据备份
a. 并非nn的热备,当nn挂掉的时候,它不能马上替换nn并提供服务
b. 辅佐nn,分担其工作量,比如定期合并Fsimage和Edits,并推送给nn
c. 紧急情况下,可辅助恢复nn
Client 客户端
a. 文件切分,文件上传HDFS时,Client将文件切分成一个一个的Block,然后上传
b. 与nn交互,获取文件的位置信息
c. 与dn交互,读取或者写入数据
d. Client提供一些命令来管理HDFS,比如nn格式化
e. Client提供通过一些命令来访问HDFS,比如增删查改
优势: 高容错性(多副本),适合处理大数据(数据规模,能处理GB,TB,PB级别的数据/文件规模,能处理百万规模的文件),可构建在廉价机器上
劣势:
不适合低延时数据访问,比如毫秒级的存储数据;
无法高效的对大量小文件存储(大量小文件会占用NameNode大量的内存来存储文件目录和块信息;小文件的寻址时间超过读取时间,违背HDFS设计目标),
不支持并发写入,文件随机修改(一个文件只能有一个写,不允许多线程同时写/仅支持数据append追加,不支持文件的随机修改)
HDFS中的文件在物理上是分块存储(Block),块的大小可以通过配置参数(dfs.blocksize)来规定,默认大小在Hadoop2.x/3.x版本中是128M,1.x版本中是64M
寻址时间为传输时间的1%时,则为最佳时间
YARN架构概述 YetAnother Resource Negotiatorjy另一种资源协调者,是Hadoop的资源管理器
ResourceManager(RM): 整个集群资源(内存,CPU等)的老大
NodaManager(NM): 单个节点服务器资源老大(默认1T-8T内存)
ApplicationMaster(AM): 单个任务运行的老大
Container: 容器,相当一*立的服务器,封装了任务运行需要的资源,如内存,cpu,磁盘,网络等,AM在此运行
MapReduce架构概述
Map阶段并行处理输入数据
Reduce阶段对Map结果进行汇总
结构化数据(二维表格): 数据库 Sqoop数据传递
半结构化数据:文件日志 Flume日志收集
非结构化数据: 视频,PPT等 Kafka消息队列