集群性能瓶颈
磁盘I/O性能
hadoop运行模式
单机 伪分布 完全分布
hadoop生态圈
zookeeper 分布式应用程序协调服务,同步命名服务 配置维护
flume 高可用 高可靠 分布式日志采集 聚合传输工具
hbase 面向列 分布式 数据库 在hdfs上存储
hive 使用mr引擎的 元数据概念的 数据仓库 有简单的sql查询功能
sqoop 关系型数据库和hdfs数据互导
hadoop和hadoop生态系统概念
hadoop是hadoop框架
hadoop生态系统是运行再hadoop上的zk fl hb sq sp hive等框架
hadoop集群中进程
namenode 管理文件系统,保存元数据
secondarynamenode 冗余守护进程 帮nn合并editlog 减少nn启动时间
datanode 存储文件 每个节点都要有一个
resourcemanager jobtracker 调度datanode
nodemanager tasktracker 执行任务
dfszfoct 监督nn高可用
journalnode高可用存放namenode的editlog文件
hdfs默认保存几份
3
blocksize
272前64 273 128
负责hdfs存储的部分
datanode
secondarynn作用
帮助nn合并editlog 帮助nn恢复启动 减少启动时间 帮助nn做任务
second查nn的editlog 更新到FSImage上 再复制回nn上
文件大小设置
过大,传输一个快时间过长
过小,寻址占用时间太多
hdfs架构
client
切分文件存到dn上
获取nn元数据
读写dn
nn
就是master 管理hdfs元数据
block映射
配置副本
和client交互
dn
存储数据块
执行操作
secondnn
辅助nn分担工作
帮nn合并FSImage和edit
辅助恢复nn
hdfs存储机制
写数据
client distributed fs 向nn请求上传 年内、检查文件及目录是否存在
nn返回可以上传
clinet请求nn block的上传dn位置
nn返回3个dn节点
client 通过fsdataoutpustream请求节点上传数据并建立通道
节点应答
client开始上传,文件读到内存缓存,dn1给dn2,dn2给dn3
一个传完再请求下一个block
读数据
clinet 通过db fs 向nn请求下载 nn查找元数据返回dn地址
client就近请求数据
dn传输给client
client以packet为单位接受 本地缓存 写入目标
snn工作机制
nn启动
加载fsimage和edit
客户端操作,nn更新日志
snn
snn问nn需要checkpoint 并返回结果
snn请求ckpt
nn滚动在写的日志
将滚动前的日志和镜像拷到snn
snn加载到内存合并
生成fsimage。chenckpoint拷到nn
nn重命名为fsimage
nn和snn区别联系
区别
nn管理元数据和block
snn定期合并日志
联系
snn保存了一份nn日志
nn故障时,假设没有备份,可以从snn快速恢复
HAnn工作机制
一台nn standby 一台nn激活
zkfailover contrillerA检测nnA宕机,通知另一台zkfcB彻底杀死nnA补刀,补刀失败就用自定义脚本返回zkfcB激活nnB active
zkfc
监测nn健康状态,心跳机制
激活的nn通过zkfc在zk中打开znode会话锁
宕机再注册zk时发现有znode锁会转为standby状态
通过zk的短暂znode选举nn的ative
HD序列化
序
内存中的对象转化为字节序列,以便存储持久化或者网络传输
内存中的对象不持久,序列化可以发送或者存储
java序列化对象有很多校验信息,所以HD开发了自己的Writable精简高效
反序
收到的字节序列或者硬盘持久化的数据转到内存里
Inputspilt
找到数据存储目录,便利目录获取第一个文件
再逻辑上对数据分片
Map和Reduce数量
map数量由数据的block数量决定
reduce数量默认为1,可以设置
Maptask
job的map阶段Maptask并行度(个),由block数量决定
MR原理
read
maptask从inputspilt分片中解析出格式化的Key/value
Map
将Key/value交给map()处理,产生新的Key/Value
collect
调用collect函数内部生成key/value分区, 写入环形内存缓冲区
spill
溢写,环形缓冲区对数据排序,80满后mr写到本地磁盘生成临时文件
combine
数据处理完 ,maptask对临时文件合并,确保最终只有一个数据文件
copy
reducetask从各个maptask上远程拷一片数据,
merge
拷数据时,reducetask启动两个后台线程对内存和磁盘上的文件合并
sort
对所有数据归并排序
reduce
reduce函数写结果到hdfs