当前位置: 首页 > news >正文

Hadoop3:NameNode和DataNode多目录配置(扩充磁盘的技术支持)

一、NameNode多目录

1、说明

NameNode多目录,需要在刚搭建Hadoop集群的时候,就配置好
因为,配置这个,需要格式化NameNode
所以,如果一开始没配置NameNode多目录,后面,就不要配置了。

2、配置

1、修改配置
hdfs-site.xml

<property><name>dfs.namenode.name.dir</name><value>file://${hadoop.tmp.dir}/dfs/name1,file://${hadoop.tmp.dir}/dfs/name2</value>
</property>

其中,dfs.namenode.name.dir这个参数在core-site.xml文件中配置的
在这里插入图片描述
配置好后,保存,分发。

2、停掉Hadoop集群

 myhadoop stop

3、所有节点,删除/data、/log目录

cd /opt/module/hadoop-3.1.3/
rm -rf data/ logs/

4、格式化NameNode

hdfs namenode -format

此时,就已经有2个目录了
在这里插入图片描述
5、启动集群

 myhadoop start

3、验证

name1目录
在这里插入图片描述
name2目录
在这里插入图片描述
会发现,两个目录存储的内容完全一样

但是,本次实操,是在102一个节点上,所以,不是真正的高可用。
如果,102挂掉了,数据丢失。那么,依然无法恢复。
真正的高可用,是配置两个不同机器上的NameNode
这个,最多是,防止误删,提高了一点安全性。

如果,看到多目录,就明白是怎么回事了。

二、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、重启集群

myhadoop stop
myhadoop start

3、验证

三个节点都有两个目录。
在这里插入图片描述在这里插入图片描述在这里插入图片描述

4、数据均衡(重要)

经过上面的配置,我们就可以挂载信申请的磁盘了。

生产环境,由于硬盘空间不足,往往需要增加一块硬盘。
刚加载的硬盘没有数据时,可以执行磁盘数据均衡命令。(Hadoop3.x新特性

对应命令:
(1)生成均衡计划(我只有一块磁盘,不会生成计划

hdfs diskbalancer -plan hadoop103

(2)执行均衡计划

hdfs diskbalancer -execute hadoop103.plan.json

(3)查看当前均衡任务的执行情况

hdfs diskbalancer -query hadoop103

(4)取消均衡任务

hdfs diskbalancer -cancel hadoop103.plan.json

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Android Studio gradle下载失败?!
  • 可视化作品集(11):节能环保能耗领域大展拳脚。
  • 相同含义但不同类型字段作为join条件时注意事项
  • 释放序列和同步
  • 数据库高级操作:分类汇总与排序
  • 心电信号降噪前处理(MATLAB R2018)
  • swift开发用Alamofire的post发送proto序列化消息
  • LLM 研究方向(一): LLM Prompts--p-tuning、LoRA
  • NLP - 基于bert预训练模型的文本多分类示例
  • 盲盒抽卡机小程序:抽卡机的多样化发展
  • OpenCV中使用Canny算法在图像中查找边缘
  • C++中的多重继承和虚继承:横向继承、纵向继承和联合继承;虚继承
  • 后端工作之一:CrapApi —— API接口管理系统部署
  • 【服务器】在Linux查看运行的Python程序,并找到特定的Python程序
  • HW期间——应急响应
  • 【159天】尚学堂高琪Java300集视频精华笔记(128)
  • 2017届校招提前批面试回顾
  • CAP理论的例子讲解
  • const let
  • ECMAScript6(0):ES6简明参考手册
  • ES10 特性的完整指南
  • es6
  • ES6语法详解(一)
  • Java 多线程编程之:notify 和 wait 用法
  • JS学习笔记——闭包
  • Linux gpio口使用方法
  • Mac 鼠须管 Rime 输入法 安装五笔输入法 教程
  • MySQL数据库运维之数据恢复
  • vue2.0项目引入element-ui
  • 爱情 北京女病人
  • 闭包--闭包之tab栏切换(四)
  • 不用申请服务号就可以开发微信支付/支付宝/QQ钱包支付!附:直接可用的代码+demo...
  • 彻底搞懂浏览器Event-loop
  • 手机端车牌号码键盘的vue组件
  • 译自由幺半群
  • 职业生涯 一个六年开发经验的女程序员的心声。
  • #Linux(make工具和makefile文件以及makefile语法)
  • #QT项目实战(天气预报)
  • #我与Java虚拟机的故事#连载01:人在JVM,身不由己
  • #我与Java虚拟机的故事#连载15:完整阅读的第一本技术书籍
  • (10)STL算法之搜索(二) 二分查找
  • (4)STL算法之比较
  • (Java入门)抽象类,接口,内部类
  • (机器学习的矩阵)(向量、矩阵与多元线性回归)
  • (七)glDrawArry绘制
  • (转)微软牛津计划介绍——屌爆了的自然数据处理解决方案(人脸/语音识别,计算机视觉与语言理解)...
  • .apk文件,IIS不支持下载解决
  • .bat批处理(十):从路径字符串中截取盘符、文件名、后缀名等信息
  • .dat文件写入byte类型数组_用Python从Abaqus导出txt、dat数据
  • .NET Core SkiaSharp 替代 System.Drawing.Common 的一些用法
  • .NET 的静态构造函数是否线程安全?答案是肯定的!
  • .NET 中创建支持集合初始化器的类型
  • .NET/ASP.NETMVC 深入剖析 Model元数据、HtmlHelper、自定义模板、模板的装饰者模式(二)...
  • .NET委托:一个关于C#的睡前故事
  • /etc/motd and /etc/issue