本文源码:GitHub·点这里 || GitEE·点这里
一、工作机制
1、根底形容
DataNode上数据块以文件模式存储在磁盘上,包含两个文件,一个是数据自身,一个是数据块元数据包含长度、校验、工夫戳;
DataNode启动后向NameNode服务注册,并周期性的向NameNode上报所有的数据块元数据信息;
DataNode与NameNode之间存在心跳机制,每3秒一次,返回后果带有NameNode给该DataNode的执行命令,例如数据复制删除等,如果超过10分钟没有收到DataNode的心跳,则认为该节点不可用。
2、自定义时长
通过hdfs-site.xml配置文件,批改超时时长和心跳,其中中的heartbeat.recheck.interval的单位为毫秒,dfs.heartbeat.interval的单位为秒。
<property> <name>dfs.namenode.heartbeat.recheck-interval</name> <value>600000</value></property><property> <name>dfs.heartbeat.interval</name> <value>6</value></property>
3、新节点上线
以后机器的节点为hop01、hop02、hop03,在此基础上新增节点hop04。
根本步骤
基于以后一个服务节点克隆失去hop04环境;
批改Centos7相干根底配置,并删除data和log文件;
启动DataNode,即可关联到集群;
4、多目录配置
该配置同步集群下服务,格式化启动hdfs及yarn,上传文件测试。
<property> <name>dfs.datanode.data.dir</name> <value>file:///${hadoop.tmp.dir}/dfs/data01,file:///${hadoop.tmp.dir}/dfs/data02</value></property>
二、黑白名单配置
1、白名单设置
配置白名单,该配置散发到集群服务下;
[root@hop01 hadoop]# pwd/opt/hadoop2.7/etc/hadoop[root@hop01 hadoop]# vim dfs.hostshop01hop02hop03
配置hdfs-site.xml,该配置散发到集群服务下;
<property> <name>dfs.hosts</name> <value>/opt/hadoop2.7/etc/hadoop/dfs.hosts</value></property>
刷新NameNode
[root@hop01 hadoop2.7]# hdfs dfsadmin -refreshNodes
刷新ResourceManager
[root@hop01 hadoop2.7]# yarn rmadmin -refreshNodes
2、黑名单设置
配置黑名单,该配置散发到集群服务下;
[root@hop01 hadoop]# pwd/opt/hadoop2.7/etc/hadoop[root@hop01 hadoop]# vim dfs.hosts.excludehop04
配置hdfs-site.xml,该配置散发到集群服务下;
<property> <name>dfs.hosts.exclude</name> <value>/opt/hadoop2.7/etc/hadoop/dfs.hosts.exclude</value></property>
刷新NameNode
[root@hop01 hadoop2.7]# hdfs dfsadmin -refreshNodes
刷新ResourceManager
[root@hop01 hadoop2.7]# yarn rmadmin -refreshNodes
三、文件存档
1、根底形容
HDFS存储的特点,适宜海量数据的大文件,如果每个文件都很小,会产生大量的元数据信息,占用过多的内存,并且在NaemNode和DataNode交互的时候变的迟缓。
HDFS能够对一些小的文件进行归档存储,这里能够了解为压缩存储,即缩小NameNode的耗费,也较少交互的累赘,同时还容许对归档的小文件拜访,进步整体的效率。
2、操作流程
创立两个目录
# 寄存小文件[root@hop01 hadoop2.7]# hadoop fs -mkdir -p /hopdir/harinput# 寄存归档文件[root@hop01 hadoop2.7]# hadoop fs -mkdir -p /hopdir/haroutput
上传测试文件
[root@hop01 hadoop2.7]# hadoop fs -moveFromLocal LICENSE.txt /hopdir/harinput[root@hop01 hadoop2.7]# hadoop fs -moveFromLocal README.txt /hopdir/harinput
归档操作
[root@hop01 hadoop2.7]# bin/hadoop archive -archiveName output.har -p /hopdir/harinput /hopdir/haroutput
查看归档文件
[root@hop01 hadoop2.7]# hadoop fs -lsr har:///hopdir/haroutput/output.har
这样就能够把原来的那些小文件块删除即可。
解除归档文件
# 执行解除[root@hop01 hadoop2.7]# hadoop fs -cp har:///hopdir/haroutput/output.har/* /hopdir/haroutput# 查看文件[root@hop01 hadoop2.7]# hadoop fs -ls /hopdir/haroutput
四、回收站机制
1、根底形容
如果开启回收站性能,被删除的文件在指定的工夫内,能够执行复原操作,避免数据被误删除状况。HDFS外部的具体实现就是在NameNode中启动一个后盾线程Emptier,这个线程专门治理和监控零碎回收站上面的文件,对于放进回收站的文件且超过生命周期,就会主动删除。
2、开启配置
该配置须要同步到集群下的所有服务;
[root@hop01 hadoop]# vim /opt/hadoop2.7/etc/hadoop/core-site.xml # 增加内容<property> <name>fs.trash.interval</name> <value>1</value></property>
fs.trash.interval=0,示意禁用回收站机制,=1示意开启。
五、源代码地址
GitHub·地址https://github.com/cicadasmile/big-data-parentGitEE·地址https://gitee.com/cicadasmile/big-data-parent
举荐浏览:编程体系整顿
序号 | 项目名称 | GitHub地址 | GitEE地址 | 举荐指数 |
---|---|---|---|---|
01 | Java形容设计模式,算法,数据结构 | GitHub·点这里 | GitEE·点这里 | ☆☆☆☆☆ |
02 | Java根底、并发、面向对象、Web开发 | GitHub·点这里 | GitEE·点这里 | ☆☆☆☆ |
03 | SpringCloud微服务根底组件案例详解 | GitHub·点这里 | GitEE·点这里 | ☆☆☆ |
04 | SpringCloud微服务架构实战综合案例 | GitHub·点这里 | GitEE·点这里 | ☆☆☆☆☆ |
05 | SpringBoot框架根底利用入门到进阶 | GitHub·点这里 | GitEE·点这里 | ☆☆☆☆ |
06 | SpringBoot框架整合开发罕用中间件 | GitHub·点这里 | GitEE·点这里 | ☆☆☆☆☆ |
07 | 数据管理、分布式、架构设计根底案例 | GitHub·点这里 | GitEE·点这里 | ☆☆☆☆☆ |
08 | 大数据系列、存储、组件、计算等框架 | GitHub·点这里 | GitEE·点这里 | ☆☆☆☆☆ |