hadoop学习之HDFS原理
HDFS原理
HDFS包括三个组件:
NameNode、DataNode、SecondaryNameNode
- NameNode的作用是存储元数据(文件名、创建时间、大小、权限、与block块映射关系等)
- DataNode的作用是存储真实数据信息
- SecondaryNameNode作用合并edits和fsimage文件
hadoop.tmp.dir -> /tmp/hadoop-root
dfs.namenode.dfs.dir ->/dfs/name/current
see_txid :操作事务id, 编号,用于显示操作次数,每次操作自增1
VERSION:显示namespaceID clusterID
修改namenode的存储位置:
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
<property>
<property>
<name>dfs.namenode.name.dir<name>
<value>/opt/module/hadoop-2.6.0/data</value>
</property>
</configuration>
dfs.datanode.data.dir -> /tmp/hadoop-root/dfs/data
修改datanode的存储目录
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
<property>
<property>
<name>dfs.datanode.data.dir<name>
<value>/opt/module/hadoop-2.6.0/data</value>
</property>
</configuration>
修改secondarynamenode的目录
file://${hadoop.tmp.dir}/dfs/namesecondary
重新格式化
hdfs namenode -format -force
多次格式化namenode的问题解释
hdfs格式化会改变VERSION文件中的clusterID,首次格式化时datannode和namenode会产生相同的clusterID;
如果重新执行格式化,namenode的 clusterID会改变,就会与datanode的clusterID不一致,如果重新启动或读写hdfs就会挂掉
需要手动修改
DataNode
数据存储:在hdfs-site.xml的dfs.datanode.data.dir属性配置中
存储内容:数据本身和数据长度,校验和以及时间戳
文件块(Block):基本的存储单元,默认大小是128M,通过dfs.blocksize属性配置
副本策略:默认是3哥,通过dfs.replication属性配置
第一个block副本放在与client所在的机器里,(如果client不在集群的范围内,则这第一个node是随机选取的,当然系统会尝试不选择哪些太忙或太满的node)
第二个block副本放置在与第一个节点不同机架的node中(随机选择)
第三个副本和第二个在同一机架,随机放在不同的node中
如果还有更多副本就随机放在集群的node里
DataNode与Namenode通信
<1>DataNode启动后向NameNode注册,注册后会周期性(1小时)向NameNode上报块信息(BlockReport)
BlockReport: Block与Datanode的映射关系(第二映射关系)
说明:blockreport作用,DataNode通过上传块报告能更新NameNode内存中的映射关系(哪个地方坏了,不能使用了)
<2>心跳机制:3s 发送心跳给Namenode,心跳带有NameNode下发给DataNode的命令
超过10分钟,datanode未给namendoe发送心跳,这认为该节点不可用
SecondaryNameNode(SNN)执行流程
<1>周期性向NameNode发送请求edits和fsimage文件
<2>请求完成后,NameNode将edits文件转成edits.new文件
<3>NameNode将fsimage文件加载到内存,合并edits和fsimage文件,命名为fsimage.ckpt
<4>SecondaryNmaeNode将文件发送给NameNode
<5>NameNode用新的fsimage.ckpt替换旧的fsimage,重命名edits.new为edits文件
hadoop学习之HDFS原理的更多相关文章
- hadoop学习(五)----HDFS的java操作
前面我们基本学习了HDFS的原理,hadoop环境的搭建,下面开始正式的实践,语言以java为主.这一节来看一下HDFS的java操作. 1 环境准备 上一篇说了windows下搭建hadoop环境, ...
- Hadoop学习笔记—HDFS
目录 搭建安装 三个核心组件 安装 配置环境变量 配置各上述三组件守护进程的相关属性 启停 监控和性能 Hadoop Rack Awareness yarn的NodeManagers监控 命令 hdf ...
- Hadoop学习笔记-HDFS命令
进入 $HADOOP/bin 一.文件操作 文件操作 类似于正常的linux操作前面加上“hdfs dfs -” 前缀也可以写成hadoop而不用hdfs,但终端中显示 Use of this scr ...
- Hadoop学习笔记---HDFS
Hadoop分布式文件系统(HDFS)被设计成适合运行在通用硬件(commodity hardware)上的分布式文件系统.HDFS是一个高度容错性的系统,适合部署在廉价的机器上.HDFS能提供高吞吐 ...
- hadoop学习(二)----HDFS简介及原理
前面简单介绍了hadoop生态圈,大致了解hadoop是什么.能做什么.带着这些目的我们深入的去学习他.今天一起看一下hadoop的基石--文件存储.因为hadoop是运行与集群之上,处于分布式环境之 ...
- [Hadoop]Hadoop章2 HDFS原理及读写过程
HDFS(Hadoop Distributed File System )Hadoop分布式文件系统. HDFS有很多特点: ① 保存多个副本,且提供容错机制,副本丢失或宕机自动恢复.默认存3份. ② ...
- hadoop学习记录--hdfs文件上传过程源码解析
本节并不大算为大家讲接什么是hadoop,或者hadoop的基础知识因为这些知识在网上有很多详细的介绍,在这里想说的是关于hdfs的相关内容.或许大家都知道hdfs是hadoop底层存储模块,专门用于 ...
- hadoop学习之HDFS
1.什么是大数据?什么是云计算?什么是hadoop? 大数据现在很火,到底什么是大数据,多大的数据才算大,一般而言对于TB级以上的数据我们成为大数据,对于这些数据它的价值在哪?大数据的价值就是我们大量 ...
- hadoop学习(七)----mapReduce原理以及操作过程
前面我们使用HDFS进行了相关的操作,也了解了HDFS的原理和机制,有了分布式文件系统我们如何去处理文件呢,这就的提到hadoop的第二个组成部分-MapReduce. MapReduce充分借鉴了分 ...
随机推荐
- 1.Shell特殊位置变量
$0 文件名及路径 $1,$2 参数1,参数2 , 也可以用${1} 和 ${2} 来表示 $# 传递给脚本或函数的参数个数 $$ 当前Shell进程ID $? 判断上 ...
- 一文读懂Java线程状态转换
前言 本文描述Java线程线程状态及状态转换,不会涉及过多理论,主要以代码示例说明线程状态如何转换. 基础知识 1. 线程状态 Thread源码中的状态说明: 线程可以有6种状态: New(新建) R ...
- 用Python分析国庆旅游景点,告诉你哪些地方好玩、便宜、人又少
注:本人参考“裸睡的猪”公众号同名文章,学习使用. 一.目标 使用Python分析出国庆哪些旅游景点:好玩.便宜.人还少的地方,不然拍照都要抢着拍! 二.获取数据 爬取出行网站的旅游景点售票数据,反映 ...
- Flask模板渲染
目录 Flask模板渲染 Jinja2模板引擎简介 模板 Jinja2 模板变量 变量 控制结构 宏,类似Python代码中的函数 模板继承 包含(Include) 过滤器 链式调用 常见内建过滤器 ...
- sklearn聚类评价指标
sklearn中的指标都在sklearn.metric包下,与聚类相关的指标都在sklearn.metric.cluster包下,聚类相关的指标分为两类:有监督指标和无监督指标,这两类指标分别在skl ...
- 遇到了Microsoft Visual Studio is Busy!
最近两天,我点击F5进入调试模式,VS左下角状态显示一直在加载符号文件,然后加载的超级慢,不多一会儿,显示VS正忙!如上图所示. 然后的然后,VS就卡死了~~~.之后,在网上查找原因和解决办法,找来找 ...
- 12个有趣的C语言问答
转自:http://www.admin10000.com/document/913.html 1,gets() 方法 Q:以下代码有个被隐藏住的问题,你能找到它吗? 1 2 3 4 5 6 7 8 9 ...
- 关于paths.get()方法的参数的使用
背景:项目中使用了一个第三方的jar包,里面用到了paths.get("xxx"),xxx表示的是配置文件,提供给用户自己制定的 问题就是这个xxx文件应该放到项目的什么地方去,测 ...
- Python的诞生和各种解释器
一:Python的诞生 参考:https://www.jianshu.com/p/1cc1382e5e04 二:Python的各种解释器 参考:https://www.liaoxuefeng.co ...
- 服务器学习--Linux基本操作指令
小编后续会持续更新 1.修改服务器的hostname [root@mexihq ~]# hostname [root@mexihq ~]# hostnamectl set-hostname xxx P ...