乱读天书, 不求甚解
周祎骏的个人云笔记
Toggle navigation
乱读天书, 不求甚解
主页
Linux:系统配置
Linux:用户管理
Linux:优化排错
Linux:进程调度
Linux:文件系统
Linux:网络
Linux:系统服务
Linux:安全
Linux:内核
容器:Docker
容器:containerd
容器编排:Kubernetes
IAC:Terraform
大数据:Hadoop
大数据:Zookeeper
大数据:Hbase
消息队列:rsyslog
消息队列:kafka
数据库:MySQL
数据库:MongoDB
搜索引擎:Elasticsearch
时序数据库:OpenTSDB
网站服务:Nginx
编程:Bash
编程:Perl
编程:Python
编程:C
编程:JAVA
编程:Rust
版本控制:gitlab
知识管理:docusaurus
常用小工具
关于我
标签
hadoop 0.00 基本介绍HDFS
2016-05-14 14:41:55
111
0
0
admin
>hadoop 一个分布式计算的项目,旗下有很多成功的分布式计算工具。 本分类主要介绍hadoop 的核心功能HDFS/YARN/MapReduce *** #HDFS HDFS 是一个分布式文件系统,其架构分为namenode,datanode,client。 ##各个组件 **namenode** 存储hdfs命名空间(比如哪些数据存储在哪一台datanode),告知客户端去哪些datanode 可以拿到需要的数据。对文件的创建,删除操作首先要经过它。 **secondarynamenode**:当namenode在内存中维护整个命名空间时,secondarynamenode 负责将命名空间的数据整理后写入磁盘(在“关于hdfs命名空间”中会细说)。因为namenode 和secondarynamenode 对内存的需求是一样的,所以把这两件事分别让两个机器做以抬高hadoop namenode 的瓶颈。 **checkpointnode**:和secondarynamenode做一样的事情,只是checkpointnode会主动把整理好的数据上传给namenode,secondarynamenode不会。 **backupnode**:namenode 的备份。 **datanode** 存储真正的数据,提供读写数据的服务,同时接受namenode创建文件,删除文件的指令。 **client** 客户端 *** ##关于hdfs命名空间和namenode/secondarynode/backupnode hdfs命名空间被存储在namenode上,记录了哪些数据存储在哪些机器上面以及这些数据的详细信息(你可以想象是ext4文件系统的inode),datanode 不知道自己存储了哪些数据。 这些数据存储在两种文件中,fsimage和editlog。 >**fsimage** 是整理好的数据(可以想象成snapshot/checkpoint什么的) >**editlog** 是namenode 在运行中实时写的,当用户修改hdfs 数据时,namenode 里的命名空间数据也会随之改变,namenode 没时间把改变整理进fsimage,只好把记录增量得写进editlog。(就想象成数据库的redolog 吧) namenode **只**会在启动的时候整理editlog,生成fsimage。 所以当namenode 下次启动时,可能已经积攒了极多的editlog, 这会导致namenode需要花极多的时间来整理editlog再启动,所以才会需要一台secondarynamenode来定期整理editlog,生成新的fsimage。 > **checkpointnode** 和 **secondarynode** 做同样的事情,只是checkpointnode 会主动把整理好的fsimage 上传给secondarynamenode。 namenode 在内存中存储了最新的命名空间数据,它等于 **namenode的editlog+fsimage** secondarynamenode/checkpointnode上的数据是最后一次整理的时候的数据(checkpoint 那一刻的数据)。如果namenode 宕机,我们就会损失最后一次checkpoint 以后写入的数据。 backupnode 会和namenode一起同步更新命名空间数据,如果启动了backupnode时namenode宕机,那么不会丢失数据。backupnode 只能起一个。 *** ##关于副本 通常建议数据有三个副本,两个副本在一个机柜的不同机器上,一个副本在其他机柜的机器上;又或者两个副本在一个数据中心,另一个副本在其他数据中心。 *** ##安全模式 namenode 刚启动的时候会进入一个安全模式,它会检查所有datanode上的数据,看看有没有副本,如果没有副本就创建副本。全部完备后会退出安全模式 *** ##数据完整性 hdfs里的文件在命名空间中有checksum,如果客户端拿到的数据与checksum不符,客户端会尝试去拿这个数据在其他节点的副本。 ***
上一篇:
gitlab 0.11 使用git
下一篇:
hadoop 0.01 基本介绍YARN
文档导航