大数据框架之Hadoop:HDFS(六)DataNode(面试开发重点)

news2024/11/25 2:54:29

6.1DataNode工作机制

DataNode工作机制,如下图所示。

Untitled (5)

1)一个数据块在DataNode上以文件形式存储在磁盘上,包括两个文件,一个是数据本身,一个是元数据包括数据块的长度,块数据的校验和,以及时间戳。

2)DataNode启动后向NameNode注册,通过后,周期性(1小时)的向NameNode上报所有的块信息。

3)心跳是每3秒一次,心跳返回结果带有NameNode给该DataNode的命令如复制块数据到另一台机器,或删除某个数据块。如果超过10分钟没有收到某个DataNode的心跳,则认为该节点不可用。

4)集群运行中可以安全加入和退出一些机器。

6.2 数据完整性

思考:如果电脑磁盘里面存储的数据是控制高铁信号灯的红灯信号(1)和绿灯信号(0),但是存储该数据的磁盘坏了,一直显示是绿灯,是否很危险?同理DataNode节点上的数据损坏了,却没有发现,是否也很危险,那么如何解决呢?

如下是DataNode节点保证数据完整性的方法。

1)当DataNode读取Block的时候,它会计算CheckSum。

2)如果计算后的CheckSum,与Block创建时值不一样,说明Block已经损坏。

3)Client读取其他DataNode上的Block。

4)DataNode在其文件创建后周期验证CheckSum,如下图所示。

Untitled (6)

6.3 掉线时限参数设置

Untitled (7)

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

<property>
    <name>dfs.namenode.heartbeat.recheck-interval</name>
    <value>300000</value>
</property>
<property>
    <name>dfs.heartbeat.interval</name>
    <value>3</value>
</property>

6.4 服役新数据节点

  1. 需求

随着公司业务的增长,数据量越来越大,原有的数据节点的容量已经不能满足存储数据的需求,需要在原有集群基础上动态添加新的数据节点。

  1. 环境准备

(1)在hdp103主机上再克隆一台hdp104主机

(2)修改IP地址和主机名称

(3)删除原来HDFS文件系统留存的文件(/opt/module/hadoop-2.7.7/data和log)

(4)source一下配置文件

[root@hdp104 hadoop-2.7.7]# source /etc/profile
  1. 服役新节点具体步骤

(1)直接启动DataNode,即可关联到集群

[root@hdp104 hadoop-2.7.7]# sbin/hadoop-daemon.sh start datanode
[root@hdp104 hadoop-2.7.7]# sbin/yarn-daemon.sh start nodemanager

(2)在hdp104上上传文件

[root@hdp104 hadoop-2.7.7]# hadoop fs -put /opt/module/hadoop-2.7.7/LICENSE.txt /

(3)如果数据不均衡,可以用命令实现集群的再平衡

[root@hdp104 sbin]# ./start-balancer.sh
starting balancer, logging to /opt/module/hadoop-2.7.7/logs/hadoop-atguigu-balancer-hadoop102.out

Time Stamp               Iteration#  Bytes Already Moved  Bytes Left To Move  Bytes Being Moved

6.5 退役旧数据节点

6.5.1添加白名单

添加到白名单的主机节点,都允许访问NameNode,不在白名单的主机节点,都会被退出。

配置白名单的具体步骤如下:

(1)在NameNode的/opt/module/hadoop-2.7.2/etc/hadoop目录下创建dfs.hosts文件

[root@hdp101 hadoop]# pwd
/opt/module/hadoop-2.7.2/etc/hadoop
[root@hdp101 hadoop]# touch dfs.hosts
[root@hdp101 hadoop]# vi dfs.hosts

添加如下主机名称(不添加hdp104)

hdp101
hdp102
hdp103

(2)在NameNode的hdfs-site.xml配置文件中增加dfs.hosts属性

<property>
    <name>dfs.hosts</name>
    <value>/opt/module/hadoop-2.7.7/etc/hadoop/dfs.hosts</value>
</property>

(3)配置文件分发

[root@hdp101 hadoop]# xsync hdfs-site.xml

(4)刷新NameNode

[root@hdp101 hadoop-2.7.7]# hdfs dfsadmin -refreshNodes
Refresh nodes successful

(5)更新ResourceManager节点

[root@hdp101 hadoop-2.7.7]$ yarn rmadmin -refreshNodes
17/06/24 14:17:11 INFO client.RMProxy: Connecting to ResourceManager at hdp103/192.168.1.103:8033

(6)在web浏览器上查看

  1. 如果数据不均衡,可以用命令实现集群的再平衡
[root@hdp101 sbin]# ./start-balancer.sh
starting balancer, logging to /opt/module/hadoop-2.7.7/logs/hadoop-root-balancer-hdp101.out
Time Stamp               Iteration#  Bytes Already Moved  Bytes Left To Move  Bytes Being Moved

6.5.2黑名单退役

在黑名单上面的主机都会被强制退出。

  1. 在NameNode的/opt/module/hadoop-2.7.7/etc/hadoop目录下创建dfs.hosts.exclude文件
[root@hdp101 hadoop]# pwd
/opt/module/hadoop-2.7.7/etc/hadoop
[root@hdp101 hadoop]# touch dfs.hosts.exclude
[root@hdp101 hadoop]# vi dfs.hosts.exclude

添加如下主机名称(要退役的节点)

hdp104
  1. 在NameNode的hdfs-site.xml配置文件中增加dfs.hosts.exclude属性
<property>
    <name>dfs.hosts.exclude</name>
    <value>/opt/module/hadoop-2.7.7/etc/hadoop/dfs.hosts.exclude</value>
</property>
  1. 刷新NameNode、刷新ResourceManager
[root@hdp101 hadoop-2.7.7]# hdfs dfsadmin -refreshNodes
Refresh nodes successful

[root@hdp101 hadoop-2.7.7]# yarn rmadmin -refreshNodes
17/06/24 14:55:56 INFO client.RMProxy: Connecting to ResourceManager at hdp103/192.168.1.103:8033
  1. 检查Web浏览器,退役节点的状态为decommission in progress(退役中),说明数据节点正在复制块到其他节点,如图3-17所示

image-20230201205704352

  1. 等待退役节点状态为decommissioned(所有块已经复制完成),停止该节点及节点资源管理器。注意:如果副本数是3,服役的节点小于等于3,是不能退役成功的,需要修改副本数后才能退役,如图3-18所示

image-20230201205649708

[root@hdp104 hadoop-2.7.7]# sbin/hadoop-daemon.sh stop datanode

stopping datanode

[root@hdp104 hadoop-2.7.7]# sbin/yarn-daemon.sh stop nodemanager
  1. 如果数据不均衡,可以用命令实现集群的再平衡
[root@hdp101 hadoop-2.7.7]# sbin/start-balancer.sh 
starting balancer, logging to /opt/module/hadoop-2.7.7/logs/hadoop-root-balancer-hdp101.out
Time Stamp               Iteration#  Bytes Already Moved  Bytes Left To Move  Bytes Being Moved

6.6 Datanode多目录配置

  1. DataNode也可以配置成多个目录,每个目录存储的数据不一样。即:数据不是副本。
  2. 具体配置如下

(1)在hdfs-site.xml文件中增加如下内容

<property>
    <name>dfs.datanode.data.dir</name>
    <value>file:///${hadoop.tmp.dir}/dfs/data1,file:///${hadoop.tmp.dir}/dfs/data2</value>
</property>

(2)停止集群,集群中删除data和logs中所有数据。

[root@hdp101 hadoop]# rm -rf data/ logs/
[root@hdp102 hadoop-2.7.7]$ rm -rf data/ logs/
[root@hdp103 hadoop-2.7.7]$ rm -rf data/ logs/

(3)格式化集群并启动。

[root@hdp101 hadoop]# bin/hdfs namenode –format
[root@hdp101 hadoop]# sbin/start-dfs.sh

(4)查看结果

[root@hdp101 dfs]$ ll
总用量 12
drwx------. 3 atguigu atguigu 4096 1211 08:03 data
drwxrwxr-x. 3 atguigu atguigu 4096 1211 08:03 name1
drwxrwxr-x. 3 atguigu atguigu 4096 1211 08:03 name2

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/346345.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ROS笔记(4)——发布者Publisher与订阅者Subscribe的编程实现

发布者 以小海龟的话题消息为例,编程实现发布者通过/turtle1/cmd_vel 话题向 turtlesim节点发送消息&#xff0c;流程如图 步骤一 创建功能包&#xff08;工作空间为~/catkin_ws/src&#xff09; $ cd ~/catkin_ws/src $ catkin_create_pkg learning_topic roscpp rospy s…

FLStudio水果最新版本V21支持中文语言

FL Studio简称FL&#xff0c;全称&#xff1a;Fruity Loops Studio习惯叫它水果。软件现有版本是FLStudio21&#xff0c;已全面升级支持简体中文语言界面 。FL Studio 能让你的计算机就像是全功能的录音室一样&#xff0c;完成编曲、剪辑、录音、混音等工作&#xff0c;帮助爱好…

2023大厂高频软件测试面试真题(附答案)

一、接口测试面试题&#xff1a;1.接口测试是怎么做的&#xff0c;如何分析数据&#xff1f;接口测试实际跟一般测试不同就是测试用例的设计部分。获取接口规范。设计接口测试功能用例&#xff08;主要从用户角度出发看接口能否实现业务需求&#xff0c;用例设计就是黑盒用例那…

2022财年净新增1159家门店,百胜中国门店高速扩张背后有何阳谋?

中国最大餐饮企业百胜中国控股有限公司&#xff08;下称“百胜中国”&#xff09;&#xff0c;2月8日发布了2022年度第四季度及全年未经审核的财务业绩。 从财报数据来看&#xff0c;这家拥有肯德基、必胜客、黄记煌等诸多餐饮品牌的巨头&#xff0c;已经顺利渡过了疫情笼罩下…

计算机网络(第7版)第五章(物理层)知识点整理

计算机网络 参考书目&#xff1a;《计算机网络&#xff08;第7版&#xff09;》&#xff1a;谢希仁——电子工业出版社 《精通Windows Sockets网络开发--基于Visual C实现》&#xff1a;孙海民——人民邮电出版社 第五章&#xff1a;物理层计算机网络一、基本概念二、传输媒体…

和数集团打造《神念无界:源起山海》,诠释链游领域创新与责任

首先&#xff0c;根据网上资料显示&#xff0c;一部《传奇》&#xff0c;二十年热血依旧。 《传奇》所缔造的成绩&#xff0c;承载的是多少人的青春回忆&#xff0c;《传奇》无疑已经在游戏史上写下了浓墨重彩的一笔。 相比《传奇》及背后的研发运营公司娱美德名声大噪&#x…

uniapp上高德(百度)地图API的使用(APP安卓)

前言由于在app中没有document,window等对象&#xff0c;所以使用在pc端传统方法引入的方式&#xff0c;将会发现无法引用成功&#xff0c;会出现白屏现象。目前有两种解决方式&#xff1a;使用uniapp的web-view方式&#xff08;百度地图&#xff09;使用renderjs来调用document…

【51媒体网】媒体邀约行业诞生及其前景预测

传媒如春雨&#xff0c;润物细无声&#xff0c;大家好&#xff0c;我是51媒体网胡老师。一&#xff0c;媒体邀约行业的诞生媒体邀约行业是随着现代社会媒体的普及而逐渐形成的。随着互联网和社交媒体的快速发展&#xff0c;媒体作为信息传播的重要渠道之一&#xff0c;越来越成…

PPP协议实验及配置

PPP协议实验拓扑图PPP认证配置PAP认证CHAP认证接口地址不在一个网段&#xff1f;地址自动协商通过IPCP方式获取到默认路由拓扑图 首先在设备上增添两个Serial接口&#xff1a; PPP认证配置 PAP认证 AR1作为认证方&#xff0c;AR2作为被认证方&#xff1a; AR1&#xff1a…

Flask-SQLAlchemy的安装使用 一对多 多对多join查询

Flask-SQLAlchemy安装及设置 SQLALchemy 实际上是对数据库的抽象&#xff0c;让开发者不用直接和 SQL 语句打交道&#xff0c;而是通过 Python 对象来操作数据库&#xff0c;在舍弃一些性能开销的同时&#xff0c;换来的是开发效率的较大提升SQLAlchemy是一个关系型数据库框架…

yaml配置文件

最近在写代码&#xff0c;发现随着网络的增加&#xff0c;代码变得越来越冗余&#xff0c;所以就想着写一个网络的配置文件&#xff0c;把网络的配置放到一个文件中&#xff0c;而不再主函数中&#xff0c;这样代码开起来就好看了&#xff0c;调试的时候也方便了。之前写过一篇…

rollback-only异常令我对事务有了新的认识

背景 环境 相关环境配置&#xff1a; SpringBootPostGreSQL Spring Data JPA 问题 两个使用 Transaction 注解的 ServiceA 和 ServiceB&#xff0c;在 A 中引入了 B 的方法用于更新数据 &#xff0c;当 A 中捕捉到 B 中有异常时&#xff0c;回滚动作正常执行&#xff0c;但…

大数据01-Hadoop3.3.1伪分布式安装

目录Hadoop简介特性先决环境配置下载地址安装VMware创建虚拟机安装VMware Tools共享文件夹安装JavaSSH登录权限设置Hadoop伪分布式安装安装单机版HadoopHadoop伪分布式安装Hadoop WebUI管理界面测试HDFS集群以及MapReduce任务程序学习参考Hadoop 简介 Hadoop是Apache软件基金会…

【软件测试】资深8年测试,总结的测试经验。职场如战场......

目录&#xff1a;导读前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09;前言 精力有限&#xff0…

[CVPR‘22] EG3D: Efficient Geometry-aware 3D Generative Adversarial Networks

paper: https://nvlabs.github.io/eg3d/media/eg3d.pdfproject: EG3D: Efficient Geometry-aware 3D GANscode: GitHub - NVlabs/eg3d总结&#xff1a; 本文提出一种hybrid explicit-implicit 3D representation: tri-plane hybrid 3D representation&#xff0c;该方法不仅有…

GDI+绘图轻松入门[6]-路径变形和表盘的绘制

有了前面的坐标相关知识的了解&#xff0c;我们这次来实战一把&#xff0c;绘制一个表盘。当然&#xff0c;绘制表盘我们要学会GDI绘图中的路径绘图与两个必要的Transform变形函数&#xff0c;RotateTransform&#xff08;旋转变形&#xff09;、TranslateTransform&#xff08…

《爆肝整理》保姆级系列教程python接口自动化(十四)--session关联接口(详解)

简介 上一篇cookie绕过验证码模拟登录博客园&#xff0c;但这只是第一步&#xff0c;一般登录后&#xff0c;还会有其它的操作&#xff0c;如发帖&#xff0c;评论等等&#xff0c;这时候如何保持会话呢&#xff1f;这里我以jenkins平台为例&#xff0c;给小伙伴们在沙场演练一…

10.Jenkins用tags的方式自动发布java应用

Jenkins用tags的方式自动发布java应用1.配置jenkins&#xff0c;告诉jenkins&#xff0c;jdk的安装目录&#xff0c;maven的安装目录2.构建一个maven项目指定构建参数&#xff0c;选择Git Paramete在源码管理中&#xff0c;填写我们git项目的地址&#xff0c;调用变量构建前执行…

秒杀项目之分布式锁运用

目录一、创建Redisson模块二、模拟高并发场景秒杀下单2.1 场景模拟2.2 案例演示三、JVM级锁与redis级分布式锁3.1 JVM级锁3.2 redis级分布式锁3.2.1 什么是setnx3.2.2 场景分析四、redisson分布式锁源码解读4.1 什么是Redisson4.2 Redisson工作原理4.3 入门案例五、秒杀项目整合…

StarRocks 企业行|走进 58 同城,探索极速统一 3.0 时代的企业实践

新的一年&#xff0c;新的征程。随着 StarRocks 项目的演进&#xff0c;StarRocks 也迈入了极速统一 3.0 的时代。极速 OLAP 极速数据湖分析将带给企业什么价值&#xff1f;StarRocks 的用户又是如何在企业内打造专属的大数据平台&#xff0c;让数据驱动业务增长和优化&#x…