关于hadoop:Hadoop框架DataNode工作机制详解

45次阅读

共计 3219 个字符,预计需要花费 9 分钟才能阅读完成。

本文源码: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.hosts
hop01
hop02
hop03

配置 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.exclude
hop04

配置 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-parent
GitEE·地址
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·点这里 ☆☆☆☆☆

正文完
 0