Hadoop HDFS
将会按照HDFS ,MapReduce, Yarn的顺序更新, 近期还会整理Zookeper, Hive, pig等相关
如果对您有帮助或者解决了您的问题, 就帮我点个赞或者评论关注支持吧, 您的鼓励是我写博客的最大支持, 感谢!
Hadoop的特点
- 处理千兆字节(PB)数据
- 可靠性
- 自动地维护数据的多份副本
- 任务失败后能自动地重新部署
- 可以在数据所在的节点上并行地处理
一 核心 基本都是采用Master-Woker架构
- HDFS 分布式文件系统
- 通过分布式集群来存储文件
- YARN 资源管理调度系统
- Mapreduce 分布式运算框架
- Map 本地局部结构
- Reduce 通过网络汇总各个map的计算结果
二 HDFS的架构
主从结构
- 主节点 nameNode
- 接收用户的请求
- 维护文件系统目录
- 管理dataNode和block之间的关系
- 从节点 dataNode
- 存储文件
- 把文件切成很多block默认是128M 放在不同机器上(C端访问时, 由Name解决抽象路径映射)
- 文件有多个副本 保证可靠性和吞吐量
- Secondary NameNode
- 合并fsimage和edits文件来更新NameNode的metedata
2.1 NameNode
到有“写请求”到来时,NameNode首先会写editlog到磁盘,即向edits文件中写日志,成功返回后,才会修改内存,并且向客户端返回
- Meta Data : 元数据
- fs image : 磁盘上的元数据镜像文件
- edits log : 写满时, 就由secondary NameNode 将edits log 与 fsimage合并
- fs time : 保持最近一次checkpoint 的时间点
2.2 SecondaryNameNode
从NameNode上下载元数据信息(fsimage,edits),然后把二者合并,生成新的fsimage,在本地保存,并将其推送到NameNode,替换旧的fsimage.默认在安装在NameNode节点上,但这样...不安全!
2.2.1 合并过程
2.3 DataNode
dfs.block.size = 128MB
Replication: 多复本。默认是三个
2.4 HDFS读过程
- 初始化DFS, 用open函数打开文件
- DFS访问NameNode获得块信息
- 客户端调用FSDinputstream读取数据
- FSD去读DataNode
- 读最近的DataNode,如果不是最后一块就读下一块
- 客户端读完了就调用close
- 在读取数据的过程中, 客户端与数据节点通信出现错误,则尝试连接其他备份
2.5 HDFS写过程
- 初始化FS, 调用create创建文件
- FS在NameNode创建新文件
- FS返回DFSOutputstream
- DFSOutputstream将数据分块
- 接受ack返回成功通知
- 写入完成调用close
- 如果数据节点在写入的过程中失败 .元数据节点则被通知此数据块是复制块数不足,将来会再创建第三份备份。