大数据之Hadoop的HDFS存储优化—异构存储(冷热数据分离)

异构存储主要解决,不同的数据,储存在不同类型的硬盘中,达到最佳性能的问题

1)存储类型

RAM_DISK:内存镜像文件系统

SSD:SSD固态硬盘

DISK:普通磁盘,在HDFS中,如果没有主动声明数据目录储存类型默认都是DISK

2)储存策略

策略ID 策略名称 副本分布 15 Lazy_Persist RAM_DISK:1, DISK: n-1 12 All_SSD SSD :n 10 One_SSD SSD:1, DISK: n-1 7 Host(default) DISK: n 6 Warm DISK:1, ARCHIVE: n-1 2 Cold ARCHIVE: n

[hadoop@hadoop102 ~]$ hdfs storagepolicies -listPolicies

(2)为指定路径(数据存储目录或文件)的存储策略

hdfs storagepolicies -setStoragePolicy -path xxx -policy xxx

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

hdfs storagepolicies -getStoragePolicy -path xxx

(4)取消策略:执行该命令后该目录或文件,及其上级的目录为准,如果是根目录,那么就是HOT

hdfs storagepolicies -unsetStoragePolicy -path xxx

(5)查看文件块的分布

hdfs fsck xxx -files -blocks -locations

(6)查看集群节点

hadoop dfsadmin -report

服务器规模:5台

集群配置:副本数为2,创建好带有存储类型的目录(提前创建)

集群规划

节点 存储类型分配 hadoop102 RAM_DISK,SSD hadoop103 SSD,DISK hadoop104 DISK,RAM_DISK hadoop105 ARCHIVE hadoop106 ARCHIVE

(1)为hadoop102节点的 hdfs-site.xml添加如下信息


    dfs.replication
    2

    dfs.storage.policy.enabled
    true

    dfs.datanode.data.dir
    [SSD]file:///opt/module/hadoop-3.1.3/hdfsdata/ssd,[RAM_DISK]file:///opt/module/hadoop-3.1.3/hdfsdata/ram_disk

(3)为hadoop103节点的 hdfs-site.xml添加如下信息


    dfs.replication
    2

    dfs.storage.policy.enabled
    true

    dfs.datanode.data.dir
    [SSD]file:///opt/module/hadoop-3.1.3/hdfsdata/ssd,[DISK]file:///opt/module/hadoop-3.1.3/hdfsdata/disk

(4)为hadoop104节点的 hdfs-site.xml添加如下信息


    dfs.replication
    2

    dfs.storage.policy.enabled
    true

    dfs.datanode.data.dir
    [RAM_DISK]file:///opt/module/hadoop-3.1.3/hdfsdata/ram_disk,[DISK]file:///opt/module/hadoop-3.1.3/hdfsdata/disk

(5)为hadoop105节点的 hdfs-site.xml添加如下信息


    dfs.replication
    2

    dfs.storage.policy.enabled
    true

    dfs.datanode.data.dir
    [ARCHIVE]file:///opt/module/hadoop-3.1.3/hdfsdata/archive

(6)为hadoop106节点的 hdfs-site.xml添加如下信息


    dfs.replication
    2

    dfs.storage.policy.enabled
    true

    dfs.datanode.data.dir
    [ARCHIVE]file:///opt/module/hadoop-3.1.3/hdfsdata/archive

(1)启动集群

[hadoop@hadoop102 hadoop-3.1.3]$ hdfs namenode -format
[hadoop@hadoop102 hadoop-3.1.3]$ myhadoop.sh start

(2)在HDFS上创建文件目录

[hadoop@hadoop102 hadoop-3.1.3]$ hadoop fs -mkdir /hdfsdata

(3)上传文件

[hadoop@hadoop102 hadoop-3.1.3]$ hadoop fs -put NOTICE.txt /hdfsdata

(1)最开始我们未设置存储策略的情况下,我们获取该目录的存储策略

[hadoop@hadoop102 hadoop-3.1.3]$ hdfs storagepolicies -getStoragePolicy -path /hdfsdata
The storage policy of /hdfsdata is unspecified

(2)查看上传的文件块分布

[hadoop@hadoop102 hadoop-3.1.3]$ hdfs fsck /hdfsdata -files -blocks -locations

[DatanodeInfoWithStorage[192.168.10.104:9866,DS-e3ce2615-178f-4489-b58e-27a577f4b72f,DISK], DatanodeInfoWithStorage[192.168.10.103:9866,DS-e8c8d524-7005-4dc4-99ed-30820ff67ef5,DISK]]

未设置存储策略,所有文件都存储在DISK下。所以,默认存储策略为HOT。

(1)接下来为数据降温

[hadoop@hadoop102 ~]$ hdfs storagepolicies -setStoragePolicy -path /hdfsdata -policy WARM

(2)再次查看文件块分布,我们可以看到文件块依然放在原处

[hdoop@hadoop102 ~]$ hdfs fsck /hdfsdata -files -blocks -locations

(3)我们需要让他HDFS按照存储策略自行移动文件夹

[hadoop@hadoop102 ~]$ hdfs mover /hdfsdata

(4)再次查看文件块分布

[hdoop@hadoop102 ~]$ hdfs fsck /hdfsdata -files -blocks -locations

[DatanodeInfoWithStorage[192.168.10.106:9866,DS-a417ad5b-f80a-4f8c-a500-d6d5a6c52d6d,ARCHIVE], DatanodeInfoWithStorage[192.168.10.103:9866,DS-e8c8d524-7005-4dc4-99ed-30820ff67ef5,DISK]]

文件一半在DISK,一半在ARCHIVE,符合我们设置的WARM策略

(1)继续降温为clod

[hadoop@hadoop102 ~]$ hdfs storagepolicies -setStoragePolicy -path /hdfsdata -policy COLD

注意:当我们将目录设置为COLD并且我们未配置ARCHIVE存储目录的情况下,不可以直接向该目录直接上传文件,会报出异常。

(2)手动转移

[hadoop@hadoop102 ~]$ hdfs mover /hdfsdata

(3)检查文件快分布

[hdoop@hadoop102 ~]$ hdfs fsck /hdfsdata -files -blocks -locations

[DatanodeInfoWithStorage[192.168.10.106:9866,DS-a417ad5b-f80a-4f8c-a500-d6d5a6c52d6d,ARCHIVE], DatanodeInfoWithStorage[192.168.10.105:9866,DS-1c17f839-d8f5-4ca2-aa4c-eaebbdd7c638,ARCHIVE]]

(1)更改策略为ONE_SSD

[hadoop@hadoop102 ~]$ hdfs storagepolicies -setStoragePolicy -path /hdfsdata -policy ONE_SSD

(2)手动转移

[hadoop@hadoop102 ~]$ hdfs mover /hdfsdata

(3)检查文件快分布

[hdoop@hadoop102 ~]$ hdfs fsck /hdfsdata -files -blocks -locations

[DatanodeInfoWithStorage[192.168.10.104:9866,DS-e3ce2615-178f-4489-b58e-27a577f4b72f,DISK], DatanodeInfoWithStorage[192.168.10.103:9866,DS-0a858711-8264-4152-887a-9408e2f83c3a,SSD]]

(1)更改策略为ALL_SSD

[hadoop@hadoop102 ~]$ hdfs storagepolicies -setStoragePolicy -path /hdfsdata -policy ALL_SSD

(2)手动转移

[hadoop@hadoop102 ~]$ hdfs mover /hdfsdata

(3)检查文件快分布

[hdoop@hadoop102 ~]$ hdfs fsck /hdfsdata -files -blocks -locations

[DatanodeInfoWithStorage[192.168.10.102:9866,DS-b4a0eba9-0335-409a-aab5-2ebfe724fe0a,SSD], DatanodeInfoWithStorage[192.168.10.103:9866,DS-0a858711-8264-4152-887a-9408e2f83c3a,SSD]]

(1)更改策略为LAZY_PERSIST

[hadoop@hadoop102 ~]$ hdfs storagepolicies -setStoragePolicy -path /hdfsdata -policy LAZY_PERSIST

(2)手动转移

[hadoop@hadoop102 ~]$ hdfs mover /hdfsdata

(3)检查文件快分布

[hdoop@hadoop102 ~]$ hdfs fsck /hdfsdata -files -blocks -locations

[DatanodeInfoWithStorage[192.168.10.104:9866,DS-e3ce2615-178f-4489-b58e-27a577f4b72f,DISK], DatanodeInfoWithStorage[192.168.10.103:9866,DS-e8c8d524-7005-4dc4-99ed-30820ff67ef5,DISK]]

当存储策略为LAZY_PERSIST时,文件块副本都存储在DISK上的原因有如下两点:

(1)当客户端所在节点没有RAM_DISK时,则会写入客户端所在的DataNode节点的DISK磁盘。其余副本会写入其他节点的DISK磁盘。

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

但是由于虚拟机的 max locked memory为64KB,所以如果参数配置过大,会报错

我们可以通过该命令查看此参数的内存

[hadoop@hadoop102 ~]$ ulimit -a

max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited

Original: https://www.cnblogs.com/sw-code/p/16391434.html
Author: sw-code
Title: 大数据之Hadoop的HDFS存储优化—异构存储(冷热数据分离)

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/585566/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • IDEA快捷键总结

    一、关于IDEA工具的快捷键 1.1、字体设置  file –> settings –> 输入font –> 设置字体样式以及字号大小​1.1、快速生成ma…

    Linux 2023年6月7日
    089
  • rpm简单使用

    rpm描述:利用源码包编译成rpm时,会去指定安装好这个包的位置本质:解压,然后拷贝到相关的目录,然后执行脚本 查询所有已经安装过的包 查看安装位置 解压rpm 查看脚本 查看配置…

    Linux 2023年6月7日
    077
  • 在Ubuntu20.04上安装Kubernetes-Kubeadm和Minikube

    镜像下载、域名解析、时间同步请点击阿里云开源镜像站 在本文中,我们将了解如何在 Ubuntu 20.04 上安装 Kubernetes。在过去的几年里,容器化为开发人员提供了很大的…

    Linux 2023年5月27日
    0113
  • Nginx基础入门篇(1)—优势及安装

    一、Nginx 的优势 1.1发展趋势: 2016年: 1.2、简介 Nginx (engine x) 是一个高性能的HTTP(解决C10k的问题)和反向代理服务器,也是一个IMA…

    Linux 2023年6月6日
    099
  • 服务器监控-TOP命令详解

    用jmeter进行性能测试的时候,top命令是最方便可用的服务器监控命令,可以看出服务器的当前负载量,CPU占用率,内存占用率等重要信息,下面详细解说一下top命令里面的各个指标。…

    Linux 2023年5月27日
    0113
  • bash初始化文件详解

    本文使用的环境: Bash 4.2.46 bash启动时会执行一系列脚本, 具体要执行哪些启动文件, 这和bash的类型有关: 是否为交互式(interactive)的shell,…

    Linux 2023年6月7日
    079
  • Linux vim退出命令

    :w – 保存文件,不退出 vim:w file -将修改另外保存到 file 中,不退出 vim:w! -强制保存,不退出 vim:wq -保存文件,退出 vim:w…

    Linux 2023年6月13日
    094
  • Shell 实现多线程(多任务)

    1.命令结尾添加:& 在命令的末尾加 & 符号,则命令将在后台执行,这样后面的命令不需要等待该命令执行完再开始执行。 2.解决主线程提前退出问题,添加 wait 3…

    Linux 2023年5月28日
    0108
  • Centos 7防火墙策略配置指南

    Centos 7防火墙策略配置指南 —— 清听凌雪慕忆 @ 1. 开启防火墙 1.1 user切换到root用户 1.2 查看防火墙服务状态 1.3 查看firewall的状态 1…

    Linux 2023年6月7日
    0151
  • nginx配置文件单独创建和管理

    在nginx主配置文件nginx.conf的http模块下引入配置文件夹(注意路径的正确性) 1、nginx主配置文件备份后编辑(nginx配置存放位置:/usr/local/ng…

    Linux 2023年6月6日
    089
  • PyTorch 介绍 | TRANSFORMS

    数据并不总是满足机器学习算法所需的格式。我们使用 transform对数据进行一些操作,使得其能适用于训练。 所有的TorchVision数据集都有两个参数,用以接受包含trans…

    Linux 2023年6月16日
    0146
  • 一步一图带你深入剖析 JDK NIO ByteBuffer 在不同字节序下的设计与实现

    让我们来到微观世界重新认识 Netty 在前面 Netty 源码解析系列 《聊聊 Netty 那些事儿》中,笔者带领大家从宏观世界详细剖析了 Netty 的整个运转流程。从一个网络…

    Linux 2023年6月6日
    0120
  • django解析POST过来的json时,Unterminated string starting

    结论:我遇到的问题是与号( &), 分号( ; ), 等号( = ) 都会成为字符串分割符。导致后端解析json参数失败 1.bug产生背景 handsontable插件实…

    Linux 2023年6月8日
    0101
  • [20211215]提示precompute_subquery补充.txt

    [20211215]提示precompute_subquery补充.txt –//前几天测试precompute_subquery,我仔细想一下好像以前看书或者别人的b…

    Linux 2023年6月13日
    078
  • CNN卷积神经网络的构建

    1.卷积神经网络由输入层,卷积层,激活函数,池化层,全连接层组成. input(输入层)–conv(卷积层)–relu(激活函数)–pool(池…

    Linux 2023年6月6日
    088
  • Arrays.binarySearch方法

    Arrays .binarySearch(int[] arr,int b) 1,数组arr必须排序后调用查找b在arr数组中的下标是多少。 2,存在:返回在数组中的下标 不存在:返…

    Linux 2023年6月8日
    074
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球