首页 > 其他分享 >Hadoop 中的大数据技术:调优篇(2)

Hadoop 中的大数据技术:调优篇(2)

时间:2024-08-16 13:26:32浏览次数:8  
标签:hdfs hadoop12 调优篇 hadoop Hadoop lzl 3.1 数据 hdfsdata

HDFS—存储优化

纠删码
纠删码原理
  • 概述

    HDFS默认情况下,一个文件有3个副本,这虽然提高了数据的可靠性,但也带来了2倍的冗余开销。Hadoop 3.x引入了纠删码机制,通过计算方法,可以节省大约50%的存储空间。

  • 纠删码操作命令

    [lzl@hadoop12 hadoop-3.1.3]$ hdfs ec
    Usage: bin/hdfs ec [COMMAND]
              [-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>].
    
  • 查看支持的纠删码策略

    [lzl@hadoop12 hadoop-3.1.3] hdfs ec -listPolicies
    
  • 策略解释

    RS-3-2-1024k:使用RS编码,每3个数据单元,生成2个校验单元,共5个单元。只要存在任意3个单元(无论是数据单元还是校验单元),就可以恢复原始数据。每个单元大小为1024k。

    RS-10-4-1024k:使用RS编码,每10个数据单元,生成4个校验单元,共14个单元。只要存在任意10个单元,就可以恢复原始数据。每个单元大小为1024k。

    RS-6-3-1024k:使用RS编码,每6个数据单元,生成3个校验单元,共9个单元。只要存在任意6个单元,就可以恢复原始数据。每个单元大小为1024k。

    RS-LEGACY-6-3-1024k:策略与RS-6-3-1024k相同,但使用的编码算法是rs-legacy。

    XOR-2-1-1024k:使用XOR编码(速度比RS编码快),每2个数据单元,生成1个校验单元,共3个单元。只要存在任意2个单元,就可以恢复原始数据。每个单元大小为1024k。

纠删码案例实操
  • 策略应用

    • 纠删码策略是针对具体路径设置的。所有上传到该路径下的文件都将遵循此策略。
  • 具体步骤

    启用RS-3-2-1024k策略支持

    [lzl@hadoop12 hadoop-3.1.3]$ hdfs ec -enablePolicy -policy RS-3-2-1024k
    Erasure coding policy RS-3-2-1024k is enabled
    

    创建HDFS目录并设置策略

    [lzl@hadoop12 hadoop-3.1.3]$ hdfs dfs -mkdir /input
    [lzl@hadoop12 hadoop-3.1.3]$ hdfs ec -setPolicy -path /input -policy RS-3-2-1024k
    

    上传文件并查看存储情况

    [lzl@hadoop12 hadoop-3.1.3]$ hdfs dfs -put web.log /input
    

    注意:上传的文件大小需要大于2M才能看到纠删码的效果(低于2M时,只会有一个数据单元和两个校验单元)。

    1. 查看存储路径的数据单元和校验单元
    2. 破坏实验
异构存储(冷热数据分离)
异构存储Shell操作

查看可用存储策略

[lzl@hadoop12 hadoop-3.1.3]$ hdfs storagepolicies -listPolicies

为指定路径设置存储策略

hdfs storagepolicies -setStoragePolicy -path xxx -policy xxx

获取指定路径的存储策略

hdfs storagepolicies -getStoragePolicy -path xxx

取消存储策略

hdfs storagepolicies -unsetStoragePolicy -path xxx

查看文件块的分布

bin/hdfs fsck xxx -files -blocks -locations

查看集群节点

hadoop dfsadmin -report
测试环境准备
  • 环境描述

    服务器规模:5台

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

    集群规划:

    节点存储类型分配
    hadoop12RAM_DISK,SSD
    hadoop13SSD,DISK
    hadoop14DISK,RAM_DISK
    hadoop15ARCHIVE
    hadoop16ARCHIVE
  • 配置文件信息

    hadoop12节点

    <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>
    

    hadoop13节点

    <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>
    

    hadoop14节点

    <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>
    

    hadoop15节点

    <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>
    

    hadoop16节点

    <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>
    
  • 数据准备

    启动集群

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

    创建HDFS文件目录

    1[lzl@hadoop12 hadoop-3.1.3]$ hadoop fs -mkdir /hdfsdata
    

    上传文件

    [lzl@hadoop12 hadoop-3.1.3]$ hadoop fs -put /opt/module/hadoop-3.1.3/NOTICE.txt /hdfsdata
    
HOT存储策略案例
  • 获取初始存储策略

    [lzl@hadoop12 hadoop-3.1.3]$ hdfs storagepolicies -getStoragePolicy -path /hdfsdata
    
  • 查看文件块分布

    1[lzl@hadoop12 hadoop-3.1.3]$ hdfs fsck /hdfsdata -files -blocks -locations
    
  • 默认存储策略为HOT

WARM存储策略测试
  • 设置WARM存储策略

    [lzl@hadoop12 hadoop-3.1.3]$ hdfs storagepolicies -setStoragePolicy -path /hdfsdata -policy WARM
    
  • 查看文件块分布

    [lzl@hadoop12 hadoop-3.1.3]$ hdfs fsck /hdfsdata -files -blocks -locations
    
  • 手动迁移文件块

    [lzl@hadoop12 hadoop-3.1.3]$ hdfs mover /hdfsdata
    
  • 再次查看文件块分布

    [lzl@hadoop12 hadoop-3.1.3]$ hdfs fsck /hdfsdata -files -blocks -locations
    
COLD策略测试

设置COLD存储策略

[lzl@hadoop12 hadoop-3.1.3]$ hdfs storagepolicies -setStoragePolicy -path /hdfsdata -policy COLD

手动迁移文件块

[lzl@hadoop12 hadoop-3.1.3]$ hdfs mover /hdfsdata

查看文件块分布

[lzl@hadoop12 hadoop-3.1.3]$ hdfs fsck /hdfsdata -files -blocks -locations
ONE_SSD策略测试

设置ONE_SSD存储策略

[lzl@hadoop12 hadoop-3.1.3]$ hdfs storagepolicies -setStoragePolicy -path /hdfsdata -policy One_SSD

手动迁移文件块

[lzl@hadoop12 hadoop-3.1.3]$ hdfs mover /hdfsdata

查看文件块分布

[lzl@hadoop12 hadoop-3.1.3]$ hdfs fsck /hdfsdata -files -blocks -locations
ALL_SSD策略测试

设置ALL_SSD存储策略

[lzl@hadoop12 hadoop-3.1.3]$ hdfs storagepolicies -setStoragePolicy -path /hdfsdata -policy All_SSD

手动迁移文件块

[lzl@hadoop12 hadoop-3.1.3]$ hdfs mover /hdfsdata

查看文件块分布

[lzl@hadoop12 hadoop-3.1.3]$ hdfs fsck /hdfsdata -files -blocks -locations
LAZY_PERSIST策略测试

设置LAZY_PERSIST存储策略

[lzl@hadoop12 hadoop-3.1.3]$ hdfs storagepolicies -setStoragePolicy -path /hdfsdata -policy lazy_persist

手动迁移文件块

[lzl@hadoop12 hadoop-3.1.3]$ hdfs mover /hdfsdata

查看文件块分布

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

注意事项

  • 当客户端所在的DataNode节点没有RAM_DISK时,文件块将被写入客户端所在的DataNode节点的DISK磁盘,其余副本将写入其他节点的DISK磁盘。

  • 如果客户端所在的DataNode有RAM_DISK,但“dfs.datanode.max.locked.memory”参数值未设置或者设置过小(小于“dfs.block.size”参数值),文件块同样会被写入客户端所在的DataNode节点的DISK磁盘,其余副本将写入其他节点的DISK磁盘。

  • 虚拟机的“max locked memory”限制为64KB,因此,如果参数配置过大,将会报错。

  • 查询“max locked memory”参数

    [lzl@hadoop12 hadoop-3.1.3]$ ulimit -a
    

标签:hdfs,hadoop12,调优篇,hadoop,Hadoop,lzl,3.1,数据,hdfsdata
From: https://blog.csdn.net/qq_45115959/article/details/141256576

相关文章

  • Hadoop 中的大数据技术:调优篇(3)
    HDFS—故障排除NameNode故障处理需求NameNode进程崩溃且存储的数据丢失,如何恢复NameNode?故障模拟终止NameNode进程[lzl@hadoop12current]$kill-919886删除NameNode存储的数据[[email protected]]$rm-rf/opt/module/hadoop-3.1.3/data/dfs/......
  • canal数据同步工具介绍与应用
    canal服务canal介绍canal版本与环境canal服务集canal应用场景:canal常见问题xml配置问题连接认证问题jar版本问题连接问题canal介绍‌1、Canal是‌阿里巴巴开源的‌MySQL增量数据订阅和消费工具,通过模拟MySQL的‌slave与‌master交互,捕获‌binarylog事件。2、C......
  • 数据结构与算法详解
    目录一、引言二、数据结构1.数组(Array)定义特点应用场景总结表格2.链表(LinkedList)定义特点应用场景总结表格3.栈(Stack)定义特点应用场景总结表格4.队列(Queue)定义特点应用场景总结表格5.树(Tree)定义特点应用场景总结表格6.哈希表(HashTable)定......
  • 数据结构+单链表应用
    一、问题描述编写程序实现两个有序表的交和差,令L1=(x1,x2,x3,...,xn),L2=(y1,y2,y3,...,yn),它们是两个线性表,采用带头结点的单链表存储,请先实现单链表存储两个链表,再完成如下功能:(1)sort:将单链表的所有结点按照数据域进行递增排序,构造成有序单链表;(2)interSect:求两个......
  • SpringMVC 接收数据
    SpringMVC接收数据1.设置访问路径@RequestMapping将handler注册到HandlerMapping中@RequestMapping可以用到方法上也可以用到类上用到方法上,访问某个路径就直接执行这个方法。如果方法上都有某一个路径字段,就可以把他提取出来放到类上。需要注意的是放在类上,方法上也必......
  • PLSQL导入/导出数据方法
    https://blog.csdn.net/zhouleiblog/article/details/8893005以下为借用以上信息:PLSQL导入/导出数据方法PLSQL导入/导出数据方法以前导数据库信息的时候,总是会先开启sql窗口,把自己手写的建表文件复制进去,然后再导入数据信息。今天突然懒得去找以前的建表文件,而想用SLSQL直接从......
  • 一个创新的国密前后分离快速开发平台,提供工作流、多租户、多数据源、Vue3表单设计器,高
    前言在当前的软件开发领域,尤其是企业级应用开发中,开发者面临着诸多挑战,如代码安-全、数据加密、国产化适配等。传统的开发平台往往难以满足这些日益增长的需求,特别是在国产化替代的大背景下,对于符合国家安-全标准的软件需求愈发迫切。这就需要一款能够解决上述痛点,同时提供高......
  • SSM-国外鞋服代购平台-97782(免费领源码+开发文档)可做计算机毕业设计JAVA、PHP、爬虫、
    SSM国外鞋服代购平台摘 要随着科学技术的飞速发展,社会的方方面面、各行各业都在努力与现代的先进技术接轨,通过科技手段来提高自身的优势,鞋服代购平台当然也不例外。代购平台是以实际运用为开发背景,运用软件工程原理和开发方法,采用Java技术构建的一个管理系统。整个开发过......
  • LLMs 能否胜任「数据标注」?机遇与挑战并存
    编者按:目前,LLMs在机器翻译、文本生成、多轮问答等任务上已表现得非常出色了。人们开始思考它们是否也可以用于数据标注工作。数据标注是训练和评估各种机器学习模型的基础,一直是一项昂贵且耗时的工作。是否能够借助LLMs的强大能力来为数据标注流程降本增效呢?本文深入探......
  • 火山引擎ByteHouse助力车企实现高性能数据分析
    更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,回复【1】进入官方交流群。 新能源汽车市场正在迎来飞速发展时期。根据IDC预测,中国乘用车市场中,新能源车市场规模将在2028年超过2300万辆,年复合增长率为22.8%。 一套高可靠、高性能、高可用的数据分析系统对......