Hadoop中的DataNode、工作机制、数据完整性、掉线时限参数设置

简介: Hadoop中的DataNode、工作机制、数据完整性、掉线时限参数设置

@[toc]

10.DataNode

10.1DataNode工作机制

在这里插入图片描述

(1)一个数据块在DataNode上以文件形式存储在磁盘上,包括两个文件,一个是数据本身,一个是元数据包括数据块的长度,块数据的校验和,以及时间戳。
(2)DataNode启动后向NameNode注册,通过后,周期性(6小时)的向NameNode上报所有的块信息。

DN向NN汇报当前解读信息的时间间隔,默认6小时;
在这里插入图片描述

<property>
  <name>dfs.blockreport.intervalMsec</name>
  <value>21600000</value>
  <description>Determines block reporting interval in milliseconds.</description>
</property>

DN扫描自己节点块信息列表的时间,默认6小时

在这里插入图片描述

<property>
  <name>dfs.datanode.directoryscan.interval</name>
  <value>21600s</value>
  <description>Interval in seconds for Datanode to scan data directories and
  reconcile the difference between blocks in memory and on the disk.
  Support multiple time unit suffix(case insensitive), as described
  in dfs.heartbeat.interval.
  </description>
</property>

一般来说是先扫描自己的块信息,然后再进行汇报

(3)心跳是每3秒一次,心跳返回结果带有NameNode给该DataNode的命令如复制块数据到另一台机器,或删除某个数据块。如果超过10分钟没有收到某个DataNode的心跳,则认为该节点不可用。
(4)集群运行中可以安全加入和退出一些机器。

10.2数据完整性

  思考:如果电脑磁盘里面存储的数据是控制高铁信号灯的红灯信号(1)和绿灯信号(0),但是存储该数据的磁盘坏了,一直显示是绿灯,是否很危险?同理DataNode节点上的数据损坏了,却没有发现,是否也很危险,那么如何解决呢?
  如下是DataNode节点保证数据完整性的方法。
(1)当DataNode读取Block的时候,它会计算CheckSum。
(2)如果计算后的CheckSum,与Block创建时值不一样,说明Block已经损坏。
(3)Client读取其他DataNode上的Block。
(4)常见的校验算法crc(32),md5(128),sha1(160)
(5)DataNode在其文件创建后周期验证CheckSum。
在这里插入图片描述

10.2.1例子

10.2.1.1创建一个a.txt文件上传到集群上

  • [summer@hadoop102 ~]$ vim b.txt

在这里插入图片描述

在这里插入图片描述

  • [summer@hadoop102 ~]$ hadoop fs -put b.txt /

在这里插入图片描述

在这里插入图片描述

package com.summer.hdfs;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.*;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;

import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.Arrays;

/**
 * @author Redamancy
 * @create 2022-08-15 17:59
 */


public class HdfsClient {
    private FileSystem fs;
    @Before
    public void init() throws URISyntaxException, IOException, InterruptedException {
        //连接的集群nn地址
        URI uri = new URI("hdfs://hadoop102:8020");
        //创建一个配置文件
        Configuration configuration = new Configuration();
        configuration.set("dfs.replication","2");
        //用户
        String user = "summer";
        //获取到了客户端对象
        fs = FileSystem.get(uri, configuration,user);
    }
    @After
    public void close() throws IOException {
        //关闭资源
        fs.close();
    }
    //文件下载
    @Test
    public void testGet() throws IOException {
        //参数的解读:参数一:原文件是否删除;参数二:原文件路径HDFS;参数三:目标地址路径Windows;参数四:是否要校验CRC
        fs.copyToLocalFile(false,new Path("hdfs://hadoop102/b.txt"),new Path("D:\\"),false);
    }

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

10.2.1.2打开crc文件

打开crc需要用ediplus打开
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

注意,因为b.txt里面多一个换行,所以查的时候也要加上一个空格,输入的时候看清自己的文件内容,只要有一丁点不一样则CRC循环冗余检验就不一样

用这个网站检验CRC循环冗余校验http://www.ip33.com/crc.html

10.3掉线时限参数设置

这些都可以自行设置的,如果感觉自己的电脑反应慢,可以将时间设置长一点

在这里插入图片描述

需要注意的是hdfs-site.xml 配置文件中的heartbeat.recheck.interval的单位为毫秒,dfs.heartbeat.interval的单位为秒。

在这里插入图片描述

<property>
  <name>dfs.namenode.heartbeat.recheck-interval</name>
  <value>300000</value>
  <description>
    This time decides the interval to check for expired datanodes.
    With this value and dfs.heartbeat.interval, the interval of
    deciding the datanode is stale or not is also calculated.
    The unit of this configuration is millisecond.
  </description>
</property>

在这里插入图片描述

<property>
  <name>dfs.heartbeat.interval</name>
  <value>3s</value>
  <description>
    Determines datanode heartbeat interval in seconds.
    Can use the following suffix (case insensitive):
    ms(millis), s(sec), m(min), h(hour), d(day)
    to specify the time (such as 2s, 2m, 1h, etc.).
    Or provide complete number in seconds (such as 30 for 30 seconds).
  </description>
</property>

10.3.1如果将104的Datanode杀死出现的情况

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

杀死后以后超过了3s,在等10多分钟

在这里插入图片描述

再把104的Datanode启动

  • [summer@hadoop104 ~]$ hdfs --daemon start datanode

在这里插入图片描述

在这里插入图片描述

相关文章
|
1月前
|
存储 分布式计算 资源调度
hadoop配置文件参数
hadoop配置文件参数【2月更文挑战第13天】
39 6
|
3月前
|
存储 分布式计算 Hadoop
Hadoop:驭服数据洪流的利器
在当今信息大爆炸的时代,海量数据成为企业决策的重要依据。本文将介绍大规模数据处理框架Hadoop的概念与实践,探讨其在解决大数据应用中的重要性和优势。从分布式计算、高可靠性、扩展性等方面深入剖析Hadoop的工作原理,并结合实例说明如何利用Hadoop来处理海量数据,为读者提供了解和运用Hadoop的基础知识。
|
5月前
|
存储 分布式计算 Hadoop
Hadoop怎么处理数据
Hadoop怎么处理数据
99 0
|
5月前
|
存储 分布式计算 资源调度
41 Hadoop的HA机制
41 Hadoop的HA机制
29 0
41 Hadoop的HA机制
|
分布式计算 资源调度 Hadoop
Hadoop: 启动后发现没有DataNode
Hadoop: 启动后发现没有DataNode
336 0
Hadoop: 启动后发现没有DataNode
|
3月前
|
分布式计算 关系型数据库 Hadoop
使用Sqoop将数据从Hadoop导出到关系型数据库
使用Sqoop将数据从Hadoop导出到关系型数据库
|
8月前
|
数据采集 分布式计算 搜索推荐
Hadoop学习---7、OutputFormat数据输出、MapReduce内核源码解析、Join应用、数据清洗、MapReduce开发总结(一)
Hadoop学习---7、OutputFormat数据输出、MapReduce内核源码解析、Join应用、数据清洗、MapReduce开发总结(一)
|
4月前
|
存储 Linux
[hadoop3.x]HDFS之银行海量转账数据分层案例(八)
[hadoop3.x]HDFS之银行海量转账数据分层案例(八)
109 1
|
4月前
|
分布式计算 Hadoop 大数据
大数据成长之路-- hadoop集群的部署(4)退役旧数据节点
大数据成长之路-- hadoop集群的部署(4)退役旧数据节点
52 0
|
5月前
|
分布式计算 Hadoop Java
设置hadoop+安装java环境
设置hadoop+安装java环境
39 0

热门文章

最新文章