大数据之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)

大家都在看

  • Redis-Sentinel Redis的哨兵模式

    Redis-Sentinel Redis的哨兵模式Redis Sentinel 模式简介Redis-Sentinel是官方推荐的高可用解决方案,当redis在做master-sla…

    Linux 2023年5月28日
    091
  • 【证券从业】金融基础知识-第五章 债券02

    注1:后续学习并整理到第八章,全书完结后再合并成一个笔记进行源文件分享 注2:本章内容巨多,大约分为两篇文章记录消化 posted @2022-06-09 23:55 陈景中 阅读…

    Linux 2023年6月13日
    085
  • POJ1573(Robot Motion)–简单模拟+简单dfs

    题目在这里 题意 问你按照图中所给的提示走,多少步能走出来??? 其实只要根据这个提示走下去就行了。模拟每一步就OK,因为下一步的操作和上一步一样,所以简单dfs。如果出现loop…

    Linux 2023年6月7日
    083
  • ShardingSphere-proxy-5.0.0企业级分库分表、读写分离、负载均衡、雪花算法、取模算法整合(八)

    一、简要说明 以下配置实现了: 1、分库分表 2、每一个分库的读写分离 3、读库负载均衡算法 4、雪花算法,生成唯一id 5、字段取模 6、解决笛卡尔积问题 7、设置默认所有表不进…

    Linux 2023年6月14日
    077
  • Command ‘ifconfig’ not found, but can be installed with: sudo apt install net-tools解决方法

    VMware下安装的Ubuntu 当使用ifconfig命令查看网卡配置信息的时候出错 尝试了很多方法都解决不了,直到输入了下面的内容: 然后自己就更新了很多东西 之后重新输入if…

    Linux 2023年6月7日
    096
  • 【Example】C++ 模板概念讲解及编译避坑

    C++ 不同于 Java,它没有标准的 Object 类型。也就意味着 C++ 并不存在完整的泛型编程概念。 为什么不存在完整的泛型编程概念,放到最后一个例子讲,先讲 &#8220…

    Linux 2023年6月13日
    082
  • Centos7下载及安装

    Centos7下载及安装 1.下载虚拟机 虚拟机下载地址: https://www.vmware.com 或者 360一键安装(推荐) 2.在虚拟机上安装Centos7 2.1.通…

    Linux 2023年5月27日
    084
  • 实测Tengine开源的Dubbo功能

    本文已收录 https://github.com/lkxiaolou/lkxiaolou 欢迎star。搜索关注微信公众号”捉虫大师”,后端技术分享,架构设…

    Linux 2023年6月8日
    092
  • 如何获取 Docker 容器的 IP 地址

    查询单个容器 IP 地址: 使用下面命令可以查看容器详细信息,里面包含 IP 地址信息: docker inspect <container id> </cont…

    Linux 2023年6月7日
    088
  • Windows针对子目录共享权限控制

    Windows的共享文件设置有两种,一种是共享这一个目录然后里面的子文件,文件夹权限则集成;一种是共享这个目录后,里面的子文件与文件夹权限可单独控制。 共享一 image-2021…

    Linux 2023年6月8日
    093
  • Linux ARM中断控制器注册(4)【转】

    本文以S5PV210芯片为参照,S5PV210的中断控制器采用了ARM VIC(Vectored Interrupt Controller,PL192 ,ARM PrimeCell…

    Linux 2023年6月8日
    075
  • 学习

    1.1、参考博客 参考的教程如下: Original: https://www.cnblogs.com/agui125/p/16032402.htmlAuthor: 风御之举Tit…

    Linux 2023年6月13日
    099
  • redis key的过期时间

    设置redis key的生存过期时间 Redis 有四个不同的命令可以用于设置键的生存时间(键可以存在多久)或过期时间(键什么时候会被删除) : EXPlRE 命令用于将键key …

    Linux 2023年5月28日
    088
  • 博客怎么写才能更安全和简洁

    前言 博客实现本地存储 Markdown语法的介绍 博客对于我们普通人来说就是为了更好的去实现个人知识的一个整理融合然后把知识共享可以帮助其他去实现自己的一些工作或者学习中的一些疑…

    Linux 2023年6月14日
    083
  • jmeter的一些概念知识

    前言 一、Jmeter的作用 – 1.jmeter进行接口操作 2. jmeter进行性能操作 二、Jmeter的一些概念的理解 – 1.事务 2. TPS…

    Linux 2023年6月14日
    0106
  • GFS-Google 文件系统

    GFS分布式文件系统 简介 GFS是一个可扩展的分布式文件系统,用于大型的、分布式的、对大量数据进行访问的应用。它运行于廉价的普通硬件上,并提供容错功能。它可以给大量的用户提供总体…

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