【大数据之Hadoop】二十九、HDFS存储优化

news2024/9/23 11:13:23

  纠删码和异构存储测试需要5台虚拟机。准备另外一套5台服务器集群。

环境准备:
(1)克隆hadoop105为hadoop106,修改ip地址和hostname,然后重启。

vim /etc/sysconfig/network-scripts/ifcfg-ens33
vim /etc/hostname
reboot

(2)关闭集群,删除所有服务器Hadoop的data和logs文件。

rm -rf data/ logs/

(3)在hadoop102上修改xsync和jpsall文件,把hadoop105和hadoop106加上。
  xsync存储地址:/bin,在root下修改,然后后分发xsync:xsync xsync
  jpsall、myhadoop.sh 、xsync存储地址:/home/liaoyanxia/bin,修改后退出到liaoyanxia目录然后分发:xsync bin/

(4)在hadoop102上修改blacklist、whitelist、hdfs-site.xml、workers。
删除blacklist里的内容;在workers和whitelist加上所有的主机(即hadoop102-106);修改hdfs-site.xml的多目录:namenode只留一个节点name、datanode只留一个节点data:

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

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

(5)退出到hadoop-3.3.1/etc目录,分发hadoop,然后启动集群。

xsync hadoop/
myhadoop-sh start

jpsall查看进程,集群启动没问题。
在这里插入图片描述
(6)关闭集群和所有服务器,把5个主机依次克隆。

1 纠删码

1.1 原理

  HDFS默认情况下,一个文件有3个副本,这样提高了数据的可靠性,但也带来了2倍的冗余存储开销。
在这里插入图片描述
  Hadoop3.x引入了纠删码(假如如上图一个文件拆分为3个数据单元和2个校验单元),任意两个节点挂掉都可以采用计算的方式恢复(所以占用了计算资源即占用cpu时间,以cpu换存储空间),可以节省约50%左右的存储空间。

纠删码相关命令:

hdfs ec
          [-listPolicies]   查看当前支持的纠删策略
          [-addPolicies -policyFile<file>]
          [-getPolicy -path <path>]  针对某个路径的获得其策略
          [-removePolicy -policy<policy>]   删除策略
          [-setPolicy -path <path> [-policy <policy>][-replicate]]   针对某个路径的设置其策略
          [-unsetPolicy -path <path>]
          [-listCodecs]
          [-enablePolicy -policy <policy>]   开启纠删策略
          [-disablePolicy -policy <policy>]  关闭纠删策略
          [-help <command-name>].

纠删码策略解释:
  RS-A-B-1024k:使用RS编码,每A个数据单元(cell),生成B个校验单元,共A+B个单元,也就是说:这A+B个单元中,只要有任意的A个单元存在(不管是数据单元还是校验单元,只要总数=A),就可以得到原始数据。每个单元的大小是1024k=10241024=1048576,即拆分时先按1m进行拆分。
在这里插入图片描述
  如RS-3-2-1024k:使用RS编码,每3个数据单元,生成2个校验单元,共5个单元,也就是说:这5个单元中,只要有任意的3个单元存在(不管是数据单元还是校验单元,只要总数=3),就可以得到原始数据。每个单元的大小是1024k=1024
1024=1048576,即拆分时先按1m进行拆分,对上图来说,再将100个1m的数据放在一起。

  RS-LEGACY-6-3-1024k:策略和RS-6-3-1024k一样,只是编码的算法用的是rs-legacy。

  XOR-2-1-1024k:使用XOR编码(速度比RS编码快)。

1.2 案例

  纠删码策略针对具体路径设置,所有在此路径下存储的文件都会执行此策略。
把/input目录设置为RS-3-2-1024k策略。

(1)开启RS-3-2-1024k策略:

hdfs ec -enablePolicy -policy RS-3-2-1204k

(2)在HDFS创建目录并设置RS-3-2-1204k策略:

hdfs dfs -mkdir /input
hdfs ec -setPolicy -path /input -policy RS-3-2-1024k

(3)在该目录下上传大于2M的文件,在HDFS上可以看到replication(副本)只有1份,因为数据分成了3份数据单元放在不同的节点,另外两个节点存放校验单元。

hdfs dfs -put web.log /input

(4)查看存储路径的数据单元和校验单元,并作破坏实验
查看data/dfs/current/…用cat 看数据,看哪些节点是数据单元和校验单元。
删除两个节点的以上数据(快速删除)可以在hdfs文件系统里下载,且观察到删除的数据有恢复。

2 异构存储(冷热数据分离)

  经常使用和存储的数据为热数据,否则为冷数据。
  异构存储主要解决:不同的数据,存储在不同类型的硬盘中,达到最佳性能的问题。

存储类型:
  RAM_DISK:内存
  SSD:固态硬盘
  DISK:机械硬盘,即普通磁盘
  ARCHIVE:归档,不指定某种存储介质,主要指计算能力较弱但存储密度高的介质。

存储策略:
在这里插入图片描述

2.1 异构存储shell操作

1)查看当前有哪些存储策略可以用
hdfslistPolicies storagepolicies -listPolicies

(2)为指定路径(数据存储目录)设置指定的存储策略
hdfs storagepolicies -setStoragePolicy -path 路径 -policy 存储策略

(3)获取指定路径(数据存储目录或文件)的存储策略
hdfs storagepolicies -getStoragePolicy -path 路径

(4)取消存储策略;执行改命令之后该目录或者文件,以其上级的目录为准,如果是根目录,那么就是HOT
hdfs storagepolicies -unsetStoragePolicy-path 路径

(5)查看文件块的分布
bin/hdfs fsck xxx -files -blocks -locations

(6)查看集群节点
hadoop dfsadmin -report

2.2 测试环境准备

服务器5台,副本数为2,提前创建带有 存储类型的目录。
集群规划:
在这里插入图片描述

配置文件:

hadoop102的hdfs-site.xml添加:

<property>
    <name>dfs.replication</name>
    <value>2</value>
</property>
<property>
    <name>dfs.storage.policy.enabled</name>
    <value>true</value>
</property>
<property>
    <name>dfs.datanode.data.dir</name>
    <value>[SSD]file:///opt/module/hadoop-3.1.3/hdfsdata/ssd,[RAM_DISK]file:///opt/module/hadoop-3.1.3/hdfsdata/ram_disk</value>
</property>

hadoop103的hdfs-site.xml添加:

<property>
    <name>dfs.replication</name>
    <value>2</value>
</property>
<property>
    <name>dfs.storage.policy.enabled</name>
    <value>true</value>
</property>
<property>
    <name>dfs.datanode.data.dir</name>
    <value>[SSD]file:///opt/module/hadoop-3.1.3/hdfsdata/ssd,[DISK]file:///opt/module/hadoop-3.1.3/hdfsdata/disk</value>
</property>

hadoop104的hdfs-site.xml添加:

<property>
    <name>dfs.replication</name>
    <value>2</value>
</property>
<property>
    <name>dfs.storage.policy.enabled</name>
    <value>true</value>
</property>
<property>
    <name>dfs.datanode.data.dir</name>
 <value>[RAM_DISK]file:///opt/module/hdfsdata/ram_disk,[DISK]file:///opt/module/hadoop-3.1.3/hdfsdata/disk</value>
</property>

hadoop105的hdfs-site.xml添加:

<property>
    <name>dfs.replication</name>
    <value>2</value>
</property>
<property>
    <name>dfs.storage.policy.enabled</name>
    <value>true</value>
</property>
<property>
    <name>dfs.datanode.data.dir</name>
    <value>[ARCHIVE]file:///opt/module/hadoop-3.1.3/hdfsdata/archive</value>
</property>

hadoop106的hdfs-site.xml添加:

<property>
    <name>dfs.replication</name>
    <value>2</value>
</property>
<property>
    <name>dfs.storage.policy.enabled</name>
    <value>true</value>
</property>
<property>
    <name>dfs.datanode.data.dir</name>
    <value>[ARCHIVE]file:///opt/module/hadoop-3.1.3/hdfsdata/archive</value></property>

重新格式化namenode,启动集群

hdfs namenode -format
myhadoop.sh start

在HDFS创建目录并上传资料

hadoop fs -mkdir /hdfsdata
hadoop fs -put /opt/module/hadoop-3.3.1/NOTICE.txt /hdfsdata

2.3 HOT存储策略案例

刚开始没有设置存储策略,先获取目录存储策略:

hdfs storagepolicies -getStoragePolicy -path /hdfsdata

查看上传的文件块分布:

hdfs fsck /hdfsdata -files -blocks -locations

在这里插入图片描述
可以看到没有设置存储策略的情况下所有的文件块都存储在DISK下,即默认存储处理为HOST。

2.4 WARM存储策略测试

先给数据降温:

hdfs storagepolicies -setStoragePolicy -path /hdfsdata -policy WARM

查看上传的文件块分布,还是在原处

hdfs fsck /hdfsdata -files -blocks -locations

在这里插入图片描述
让HDFS按照存储策略自行移动文件块(不会自动改变存储策略,需要手动移动):

hdfs mover /hdfsdata

再查看文件块分布:

hdfs fsck /hdfsdata -files -blocks -locations

在这里插入图片描述
文件块一半在DISK,一半在ARCHIVE,符合设置的WARM策略。

2.5 COLD策略测试

数据降温为COLD:

hdfs storagepolicies -setStoragePolicy -path /hdfsdata -policy COLD

在上传文件到COLD策略的目录前需要配置ARCHIVE存储目录,不然会报异常。
手动移动:

hdfs mover /hdfsdata

检查文件块分布:

hdfs fsck /hdfsdata -files -blocks -locations

在这里插入图片描述
所有文件都在ARCHIVE,符合COLD存储策略。

2.6 ONE_SSD策略测试

存储策略改为ONE_SSD:

hdfs storagepolicies -setStoragePolicy -path /hdfsdata -policy One_SSD

手动移动:

hdfs mover /hdfsdata

检查文件块分布:

hdfs fsck /hdfsdata -files -blocks -locations

在这里插入图片描述
文件块分布一半在SSD,一半在DISK,符合ONE_SSD存储策略。

2.7 ALL_SSD策略测试

存储策略改为ALL_SSD:

hdfs storagepolicies -setStoragePolicy -path /hdfsdata -policy ALL_SSD

手动移动:

hdfs mover /hdfsdata

检查文件块分布:

hdfs fsck /hdfsdata -files -blocks -locations

在这里插入图片描述
文件块全部存储在SSD,符合ALL_SSD存储策略。

2.8 LAZY_PERSIST策略测试

存储策略改为lazy_persist:

hdfs storagepolicies -setStoragePolicy -path /hdfsdata -policy lazy_persist

手动移动:

hdfs mover /hdfsdata

检查文件块分布:

hdfs fsck /hdfsdata -files -blocks -locations

在这里插入图片描述
  理论上结果为一个副本存储在RAM_DISK,其它都存储在DISK,但最终发现所有的文件块都存储在DISK。

原因:
  (1)当客户端所在的DataNode节点没有RAM_DISK时,则会写入客户端所在的DataNode节点的DISK磁盘,其余副本会写入其他节点的DISK磁盘。
  (2)当客户端所在的DataNode有RAM_DISK,但“dfs.datanode.max.locked.memory”参数值未设置或者设置过小(小于“dfs.block.size”参数值)时,会写入客户端所在的DataNode节点的DISK磁盘,其余副本会写入其他节点的DISK磁盘。

解决:
  配置“dfs.datanode.max.locked.memory”,“dfs.block.size”参数。但是由于虚拟机的“max locked memory”为64KB,所以,如果参数配置过大,还会报错。

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

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

相关文章

JVET-AD0081:一种基于外推滤波器的帧内预测模式

本提案提出了一种基于外推滤波器的帧内预测&#xff08;extrapolation filter-based Intra Prediction&#xff0c;EIP&#xff09;模式。首先&#xff0c;利用预定模板从当前块的相邻重建像素获得外推滤波器系数。然后&#xff0c;在当前块内从左上到右下逐位置地处理外推&…

Linux常用命令(3)

文章目录 Linux常用命令&#xff08;3&#xff09;显示文件显示文件内容分屏显示文件内容显示文件前n行&#xff08;默认缺省10行&#xff09;内容显示文件后n行&#xff08;默认缺省10行&#xff09;内容随文件的增长而显示 Linux常用命令&#xff08;3&#xff09; 按ctrlsh…

open3d教程(一):open3d的安装和测试

1 介绍 Open3d&#xff1a;用于3D数据处理的现代库。 Open3D 是一个开源库&#xff0c;支持快速开发处理 3D 数据的软件。 Open3D 前端在 C 和 Python 中公开了一组精心挑选的数据结构和算法。后端经过高度优化&#xff0c;并设置为并行化。我们欢迎来自开源社区的贡献。 2 …

【零基础学机器学习 1】什么是机器学习?

机器学习的社会应用 1. 金融风控 机器学习在金融风控方面的应用非常广泛&#xff0c;可以用于预测借款人的信用风险、欺诈行为等。通过收集大量的历史数据&#xff0c;构建机器学习模型&#xff0c;可以对借款人的信用风险进行预测&#xff0c;从而帮助金融机构降低风险。 2…

关于ADC的笔记1

ADC&#xff0c;全称Anlog-to-Digital Converter&#xff0c;模拟/数字转换器。是指将连续变量的模拟信号转换为离散的数字信号的器件&#xff0c;我们能通过ADC将外界的电压值读入我们的单片机中. 常见的ADC有两种 1.并联比较型&#xff1a; 它的优点是转换速度最快&#x…

[MYSQL / Mariadb]数据库学习-数据类型

数据库学习-数据类型 数据类型字符类型定长char例&#xff1a;定义表结构的定长&#xff1a; 变长 varchar例&#xff1a;创建表&#xff0c;定义变长练习字符类型 数值类型整数(tinyint, smallint, mediumint, int, bigint, unsigned)以mysql> desc mysql.user; 为例例&…

Leetcode697. 数组的度

Every day a leetcode 题目来源&#xff1a;697. 数组的度 解法1&#xff1a;哈希 我们这样构建哈希表 unordered_map<int, vector> umap&#xff1a; key&#xff1a;数组元素 nums[i]value&#xff1a;三元组[count, first, last]&#xff0c;分别代表元素 nums[i]…

Spring03--Spring基于注解的AOP、Spring事务

Spring基于注解的AOP 一、基于注解的AOP介绍 AOP注解方式 和 XML方式完成的功能是一样&#xff0c;只是采用方式不同而已。将原有的XML方式使用注解注意替代 二、环境搭建 使用Spring02中Spring基于配置文件的AOP的环境搭建 三、使用注解替换XML的配置步骤 1、通知类使用…

边缘化你必须知道的一件事!(FEJ知识点总结)

vins和g2o边缘化的异同&#xff1a;(已经做到ppt里面了&#xff0c;简单回顾一下) 1.《视觉slam14讲》中提及的边缘化(G2O边缘化)是在计算求解过程中&#xff0c;先消去路标点变量&#xff0c;实现先求解相机位姿&#xff0c;然后再利用求解出来的相机位姿反过来计算路标点的过…

qt creator添加build步骤删除某个文件

参考&#xff1a;https://blog.csdn.net/weixin_44436546/article/details/113587115 1. windows下配置&#xff1a; 添加build步骤&#xff1b;在commad栏输入cmd,会弹出C:\Windows\system32\cmd.exe&#xff1b;在Arguments栏输入/c release\upgrade.o&#xff1b;Working …

【数据结构】C语言实现双向链表(带头结点、循环)

C语言实现双向链表&#xff08;带头结点、循环&#xff09; 一、带头结点的循环双向链表二、结点与接口定义三、实现3.1 申请节点3.2 初始化3.3 打印3.4 尾插3.5 头插3.6 尾删3.7 判断链表为空断言3.8 头删3.9 查找find3.10 插入insert-在pos之前插入3.11 头插尾插复用insert3.…

机器学习算法实战(scikit-learn版本)---线性回归

目录 文章目标&#xff1a; 1&#xff0c;导入库 2&#xff0c;导入数据集 3&#xff0c;缩放/归一化训练数据 4,创建并拟合回归模型 5,查看参数 6,预测 7&#xff0c;可视化 有一个开源的、商业上可用的机器学习工具包&#xff0c;叫做[scikit-learn](https://scik…

阿里、京东等大厂年薪50w的测试都是什么水平?

各位做测试的朋友&#xff0c;但凡经历过几次面试&#xff0c;那么你一定曾被问到过以下问题&#xff1a; 1、在Linux环境下&#xff0c;怎么执行web自动化测试&#xff1f; 2、Shell如何&#xff0c;Docker熟悉吗&#xff1f; 3、全链路的压测实操过吗&#xff0c;如何推进与开…

【Linux】基本权限

&#x1f601;作者&#xff1a;日出等日落 &#x1f514;专栏&#xff1a;Linux 任何值得到达的地方&#xff0c;都没有捷径。 目录 Linux权限: 权限的概念&#xff1a; Linux上面的用户分类&#xff1a; Linux权限管理 文件访问者的分类&#xff08;人&#xff09; 文件…

小心白蛇!PyPI仓库被持续投放White Snake后门组件

背景 墨菲安全实验室在持续监测开源软件仓库中的投毒行为&#xff0c;4 月 14 日起陆续发现至少 41 个包含白蛇&#xff08;White Snake&#xff09;后门的 Python 包被发布到 PyPI 仓库&#xff0c;目前相关的后门包仍在持续发布。 事件简述 白蛇 &#xff08;WhiteSnake&a…

三种方法教你让模糊照片秒变高清图

现在随着数字相机和智能手机的普及&#xff0c;我们拍摄的照片数量越来越多&#xff0c;但是有些照片可能因为环境或技术等原因导致模糊不清&#xff0c;这时候我们就需要使用一些软件或工具来让照片变得清晰&#xff0c;以满足我们的需求。 下面介绍三种常用的照片变清晰的方…

专科生学习云计算的就业前景如何?

作为专科学历学习云计算&#xff0c;就业前景肯定是有的。因为目前开设云计算这门专业主要也是专科院校&#xff0c;目前入行的学历要求也是专科为起点&#xff0c;更加侧重技术技能水平&#xff0c;技术过关了才能找到合适的工作。 云计算作为一种新兴的IT技术方向&#xff0…

AI别来搅局,chatGPT的世界不懂低代码

ChatGPT单月访问量再创新高 根据SimilarWeb统计&#xff0c;ChatGPT上月全球访问量17.6亿次&#xff0c;已超越必应、鸭鸭走DuckDuckGo等其他国际搜索引擎&#xff0c;并达到谷歌的2%&#xff0c;百度的60%。 这会&#xff0c;程序员失业的段子又得再来一遍了&#xff1a; 拖…

Qt+WebRTC学习笔记(七)ubuntu22.04下搭建coturn(STUN/TURN)

前言 因工作原因&#xff0c;很长时间没更新相关文档了&#xff0c;笔者之前测试时&#xff0c;一直使用示例自带的公网中转服务器。考虑到后期项目需要&#xff0c;笔者在线搭建一个coturn服务器测试&#xff0c;供有需要的小伙伴使用 一、安装coturn 若需要最新版本的cotu…

Linux修改文件权限

目录 1、常用操作 2、文件属性 3、chmod命令详解 1.修改文件属主,也可以修改文件属组 2.修改文件权限 4.chgrp命令详解 1、常用操作 查看权限操作命令:# ls -l 在 Linux 中我们通常使用以下两个命令来修改文件或目录的所属用户与权限&#xff1a; chown (change ownerp)…