Hadoop实现

集群性能瓶颈

磁盘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


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值