Hadoop框架:DataNode工作机制详解

Hadoop框架:DataNode工作机制详解

本文源码:GitHub·点这里 || GitEE·点这里

一、工作机制

1、基础描述

<span>Hadoop框架:DataNode工作机制详解</span>

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交互的时候变的缓慢。

<span>Hadoop框架:DataNode工作机制详解</span>

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

<span>Hadoop框架:DataNode工作机制详解</span>

这样就可以把原来的那些小文件块删除即可。

解除归档文件

# 执行解除
[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·点这里 ☆☆☆☆☆
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/2702.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 三立[通俗易懂]

    三立[通俗易懂]自传173、在佳木斯上网写作2013年1—-互动百科二零一三年一月起,我在佳木斯市的上网写作进入了第七年时间,钰香妻在市健身房练打乒乓球,照看外孙女和管理家务吃喝用穿。大女儿女婿在厦门外国语学校,二女儿女婿在本市文化公司上班。儿子在大连工业大学,儿媳在大连银行,孙女在北京上大学二年。2013、1、1星期二写《新年(七古)》:平平静静日历翻,新页…

    2022年5月4日
    66
  • Java 零拷贝_java clone 深拷贝

    Java 零拷贝_java clone 深拷贝Java零拷贝参考:Java中的零拷贝零拷贝(英语:Zero-copy)技术是指计算机执行操作时,CPU不需要先将数据从某处内存复制到另一个特定区域。这种技术通常用于通过网络传输文件时节省CPU周期和内存带宽。零拷贝技术可以减少数据拷贝和共享总线操作的次数,消除传输数据在存储器之间不必要的中间拷贝次数,从而有效地提高数据传输效率零拷贝技术减少了用户进程地址空间和内核地址空间之间因为上:下文切换而带来的开销传统的IO数据读写如下的例子,Java传统IO和网络编程的一段代码Fi

    2022年9月21日
    0
  • vue的路由懒加载_vue图片懒加载

    vue的路由懒加载_vue图片懒加载vue打包后的js文件越来越大,这会是影响加载时间的重要因数。当构建的项目比较大的时候,懒加载可以分割代码块,提高页面的初始加载效率。下面是几种常见vue路由懒加载的方法。

    2022年10月6日
    0
  • VS2010旗舰版下载

    VS2010旗舰版下载下面这个可用下载:大小2.5Ghttp://download.microsoft.com/download/E/0/4/E0427BB8-8490-4C7F-A05B-AFEA0FC3EA80/X16-60997VS2010UltimTrialCHS.iso//下面没怎么管MicrosoftVisualStudio2010旗舰版(vs2010…

    2022年7月20日
    19
  • 使用 WinSCP(下载) 上文件到 Linux图文教程

    使用 WinSCP(下载) 上文件到 Linux图文教程问题导读:1.如何远程链接?2.如何上传文件?3.如何对立面的文件进行操作?4.什么情况下会链接失败?https://yunpan.cn/cYWtNMycjeVPv 访问密码4f

    2022年8月4日
    16
  • django1.8_django开发restapi

    django1.8_django开发restapi前言由于之前我们一直使用的django-rest-framework-jwt这个库,但是作者在17年的时候就已经不再维护了(有部分bug没有解决),所以我们也就不用了,目前我们使用django-r

    2022年7月30日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号