网络
虚拟私有云 VPC
弹性公网IP EIP
弹性负载均衡 ELB
NAT网关 NAT
云专线 DC
虚拟专用网络 VPN
云连接 CC
VPC终端节点 VPCEP
企业路由器 ER
企业交换机 ESW
全球加速 GA
企业连接 EC
云原生应用网络 ANC
安全与合规
安全技术与应用
Web应用防火墙 WAF
企业主机安全 HSS
云防火墙 CFW
安全云脑 SecMaster
DDoS防护 AAD
数据加密服务 DEW
数据库安全服务 DBSS
云堡垒机 CBH
数据安全中心 DSC
云证书管理服务 CCM
威胁检测服务 MTD
态势感知 SA
认证测试中心 CTC
边缘安全 EdgeSec
应用中间件
微服务引擎 CSE
分布式消息服务Kafka版
分布式消息服务RabbitMQ版
分布式消息服务RocketMQ版
API网关 APIG
分布式缓存服务 DCS
多活高可用服务 MAS
事件网格 EG
管理与监管
统一身份认证服务 IAM
消息通知服务 SMN
云监控服务 CES
应用运维管理 AOM
应用性能管理 APM
云日志服务 LTS
云审计服务 CTS
标签管理服务 TMS
配置审计 Config
应用身份管理服务 OneAccess
资源访问管理 RAM
组织 Organizations
资源编排服务 RFS
优化顾问 OA
IAM 身份中心
云运维中心 COC
资源治理中心 RGC
解决方案
高性能计算 HPC
SAP
混合云灾备
开天工业工作台 MIW
Haydn解决方案工厂
数字化诊断治理专家服务
云生态
云商店
合作伙伴中心
华为云开发者学堂
华为云慧通差旅
开发与运维
软件开发生产线 CodeArts
需求管理 CodeArts Req
流水线 CodeArts Pipeline
代码检查 CodeArts Check
编译构建 CodeArts Build
部署 CodeArts Deploy
测试计划 CodeArts TestPlan
制品仓库 CodeArts Artifact
移动应用测试 MobileAPPTest
CodeArts IDE Online
开源镜像站 Mirrors
性能测试 CodeArts PerfTest
应用管理与运维平台 ServiceStage
云应用引擎 CAE
开源治理服务 CodeArts Governance
华为云Astro轻应用
CodeArts IDE
Astro工作流 AstroFlow
代码托管 CodeArts Repo
漏洞管理服务 CodeArts Inspector
联接 CodeArtsLink
软件建模 CodeArts Modeling
Astro企业应用 AstroPro
CodeArts 盘古助手
华为云Astro大屏应用
计算
弹性云服务器 ECS
Flexus云服务
裸金属服务器 BMS
云手机服务器 CPH
专属主机 DeH
弹性伸缩 AS
镜像服务 IMS
函数工作流 FunctionGraph
云耀云服务器(旧版)
VR云渲游平台 CVR
Huawei Cloud EulerOS
云化数据中心 CloudDC
网络
虚拟私有云 VPC
弹性公网IP EIP
弹性负载均衡 ELB
NAT网关 NAT
云专线 DC
虚拟专用网络 VPN
云连接 CC
VPC终端节点 VPCEP
企业路由器 ER
企业交换机 ESW
全球加速 GA
企业连接 EC
云原生应用网络 ANC
CDN与智能边缘
内容分发网络 CDN
智能边缘云 IEC
智能边缘平台 IEF
CloudPond云服务
安全与合规
安全技术与应用
Web应用防火墙 WAF
企业主机安全 HSS
云防火墙 CFW
安全云脑 SecMaster
DDoS防护 AAD
数据加密服务 DEW
数据库安全服务 DBSS
云堡垒机 CBH
数据安全中心 DSC
云证书管理服务 CCM
威胁检测服务 MTD
态势感知 SA
认证测试中心 CTC
边缘安全 EdgeSec
大数据
MapReduce服务 MRS
数据湖探索 DLI
表格存储服务 CloudTable
可信智能计算服务 TICS
推荐系统 RES
云搜索服务 CSS
数据可视化 DLV
数据接入服务 DIS
数据仓库服务 GaussDB(DWS)
数据治理中心 DataArts Studio
湖仓构建 LakeFormation
智能数据洞察 DataArts Insight
应用中间件
微服务引擎 CSE
分布式消息服务Kafka版
分布式消息服务RabbitMQ版
分布式消息服务RocketMQ版
API网关 APIG
分布式缓存服务 DCS
多活高可用服务 MAS
事件网格 EG
开天aPaaS
应用平台 AppStage
开天企业工作台 MSSE
开天集成工作台 MSSI
API中心 API Hub
云消息服务 KooMessage
交换数据空间 EDS
云地图服务 KooMap
云手机服务 KooPhone
组织成员账号 OrgID
云空间服务 KooDrive
管理与监管
统一身份认证服务 IAM
消息通知服务 SMN
云监控服务 CES
应用运维管理 AOM
应用性能管理 APM
云日志服务 LTS
云审计服务 CTS
标签管理服务 TMS
配置审计 Config
应用身份管理服务 OneAccess
资源访问管理 RAM
组织 Organizations
资源编排服务 RFS
优化顾问 OA
IAM 身份中心
云运维中心 COC
资源治理中心 RGC
区块链
区块链服务 BCS
数字资产链 DAC
华为云区块链引擎服务 HBS
解决方案
高性能计算 HPC
SAP
混合云灾备
开天工业工作台 MIW
Haydn解决方案工厂
数字化诊断治理专家服务
价格
成本优化最佳实践
专属云商业逻辑
云生态
云商店
合作伙伴中心
华为云开发者学堂
华为云慧通差旅
其他
管理控制台
消息中心
产品价格详情
系统权限
客户关联华为云合作伙伴须知
公共问题
宽限期保留期
奖励推广计划
活动
云服务信任体系能力说明
开发与运维
软件开发生产线 CodeArts
需求管理 CodeArts Req
流水线 CodeArts Pipeline
代码检查 CodeArts Check
编译构建 CodeArts Build
部署 CodeArts Deploy
测试计划 CodeArts TestPlan
制品仓库 CodeArts Artifact
移动应用测试 MobileAPPTest
CodeArts IDE Online
开源镜像站 Mirrors
性能测试 CodeArts PerfTest
应用管理与运维平台 ServiceStage
云应用引擎 CAE
开源治理服务 CodeArts Governance
华为云Astro轻应用
CodeArts IDE
Astro工作流 AstroFlow
代码托管 CodeArts Repo
漏洞管理服务 CodeArts Inspector
联接 CodeArtsLink
软件建模 CodeArts Modeling
Astro企业应用 AstroPro
CodeArts 盘古助手
华为云Astro大屏应用
存储
对象存储服务 OBS
云硬盘 EVS
云备份 CBR
高性能弹性文件服务 SFS Turbo
弹性文件服务 SFS
存储容灾服务 SDRS
云硬盘备份 VBS
云服务器备份 CSBS
数据快递服务 DES
云存储网关 CSG
专属分布式存储服务 DSS
数据工坊 DWR
地图数据 MapDS
键值存储服务 KVS
容器
云容器引擎 CCE
云容器实例 CCI
容器镜像服务 SWR
云原生服务中心 OSC
应用服务网格 ASM
华为云UCS
数据库
云数据库 RDS
数据复制服务 DRS
文档数据库服务 DDS
分布式数据库中间件 DDM
云数据库 GaussDB
云数据库 GeminiDB
数据管理服务 DAS
数据库和应用迁移 UGO
云数据库 TaurusDB
人工智能
AI开发平台ModelArts
华为HiLens
图引擎服务 GES
图像识别 Image
文字识别 OCR
自然语言处理 NLP
内容审核 Moderation
图像搜索 ImageSearch
医疗智能体 EIHealth
企业级AI应用开发专业套件 ModelArts Pro
人脸识别服务 FRS
对话机器人服务 CBS
语音交互服务 SIS
人证核身服务 IVS
视频智能分析服务 VIAS
城市智能体
自动驾驶云服务 Octopus
盘古大模型 PanguLargeModels
IoT物联网
设备接入 IoTDA
全球SIM联接 GSL
IoT数据分析 IoTA
路网数字化服务 DRIS
IoT边缘 IoTEdge
设备发放 IoTDP
企业应用
域名注册服务 Domains
云解析服务 DNS
企业门户 EWP
ICP备案
商标注册
华为云WeLink
华为云会议 Meeting
隐私保护通话 PrivateNumber
语音通话 VoiceCall
消息&短信 MSGSMS
云管理网络
SD-WAN 云服务
边缘数据中心管理 EDCM
云桌面 Workspace
应用与数据集成平台 ROMA Connect
ROMA资产中心 ROMA Exchange
API全生命周期管理 ROMA API
政企自服务管理 ESM
视频
实时音视频 SparkRTC
视频直播 Live
视频点播 VOD
媒体处理 MPC
视频接入服务 VIS
数字内容生产线 MetaStudio
迁移
主机迁移服务 SMS
对象存储迁移服务 OMS
云数据迁移 CDM
迁移中心 MGC
专属云
专属计算集群 DCC
开发者工具
SDK开发指南
API签名指南
DevStar
华为云命令行工具服务 KooCLI
Huawei Cloud Toolkit
CodeArts API
云化转型
云架构中心
云采用框架
用户服务
账号中心
费用中心
成本中心
资源中心
企业管理
工单管理
客户运营能力
国际站常见问题
支持计划
专业服务
合作伙伴支持计划
我的凭证
华为云公共事业服务云平台
工业软件
工业数字模型驱动引擎
硬件开发工具链平台云服务
工业数据转换引擎云服务

HDFS开源增强特性

更新时间:2023-11-07 GMT+08:00
分享

HDFS开源增强特性:文件块同分布(Colocation)

离线数据汇总统计场景中,Join是一个经常用到的计算功能,在MapReduce中的实现方式大体如下:

  1. Map任务分别将两个表文件的记录处理成(Join Key,Value),然后按照Join Key做Hash分区后,送到不同的Reduce任务里去处理。
  2. Reduce任务一般使用Nested Loop方式递归左表的数据,并遍历右表的每一行,对于相等的Join Key,处理Join结果并输出。

    以上方式的最大问题在于,由于数据分散在各节点上,所以在Map到Reduce过程中,需要大量的网络数据传输,使得Join计算的性能大大降低,该过程如图1所示:

图1 无同分布数据传输流程

由于数据表文件是以HDFS Block方式存放在物理文件系统中,如果能把两个需要Join的文件数据块按Join Key分区后,一一对应地放在同一台机器上,则在Join计算的Reduce过程中无需传递数据,直接在节点本地做Map Join后就能得到结果,性能显著提升。

HDFS数据同分布特性,使得需要做关联和汇总计算的两个文件FileA和FileB,通过指定同一个分布ID,使其所有的Block分布在一起,不再需要跨节点读取数据就能完成计算,极大提高MapReduce Join性能。

图2 无同分布与同分布数据块分布对比

HDFS开源增强特性:硬盘坏卷设置

在开源版本中,如果为DataNode配置多个数据存放卷,默认情况下其中一个卷损坏,则DataNode将不再提供服务。配置项“dfs.datanode.failed.volumes.tolerated”可以指定失败的个数,小于该个数,DataNode可以继续提供服务。

“dfs.datanode.failed.volumes.tolerated”取值范围为-1~DataNode上配置的磁盘卷数,默认值为-1,效果如图3所示。

图3 选项设置为0

例如:某个DataNode中挂载了3个数据存放卷,“dfs.datanode.failed.volumes.tolerated”配置为1,则当该DataNode中的其中一个数据存放卷不能使用的时候,该DataNode会继续提供服务。如图4所示。

图4 选项设置为1

这个原生的配置项,存在一定的缺陷。当DataNode的数据存放卷数量不一致的时候,就需要对每个DataNode进行单独配置,而无法配置为所有节点统一生成配置文件,造成用户使用的不便。

例如:集群中存在3个DataNode节点,第一个节点有3个数据目录,第二个节点有4个数据目录,第三个节点有5个数据目录,如果需要实现当节点有一个目录还可用的时候DataNode服务依然可用的效果,就需要如图5所示进行设置。

图5 未增强前属性设置

在自研增强版本的HDFS中,对该配置项进行了增强,增加了-1的值选项。当配置成-1的时候,所有DataNode节点只要还有一个数据存放卷,DataNode就能继续提供服务。

所以对于上面提到的例子,该属性的配置将统一成-1,如图6所示。

图6 增强后属性配置

HDFS开源增强特性:HDFS启动加速

在HDFS中,NameNode启动需要加载元数据文件fsimage,然后等待DataNode完成启动并上报数据块信息。当DataNode上报的数据块信息达到设定百分比时,NameNode退出Safemode,完成启动过程。当HDFS上保存的文件数量达到千万甚至亿级以后,以上两个过程都要耗费大量的时间,致使NameNode的启动过程变得非常漫长。该版本对加载元数据fsimage这一过程进行了优化。

在开源HDFS中,fsimage里保存了所有类型的元数据信息,每一类元数据信息(如文件元数据信息和文件夹元数据信息)分别保存在一个section块里,这些section块在启动时是串行加载的。当HDFS上存储了大量的文件和文件夹时,这两个section的加载就会非常耗时,影响HDFS文件系统的启动时间。HDFS NameNode在生成fsimage时可以将同一类型的元数据信息分段保存在多个section里,当NameNode启动时并行加载fsimage中的section以加快加载速度。

HDFS开源增强特性:基于标签的数据块摆放策略(HDFS Nodelabel)

用户需要通过数据特征灵活配置HDFS文件数据块的存储节点。通过设置HDFS目录/文件对应一个标签表达式,同时设置每个DataNode对应一个或多个标签,从而给文件的数据块存储指定了特定范围的DataNode。当使用基于标签的数据块摆放策略,为指定的文件选择DataNode节点进行存放时,会根据文件的标签表达式选择出将要存放的Datanode节点范围,然后在这些Datanode节点范围内,选择出合适的存放节点。

  • 支持用户将数据块的各个副本存放在指定具有不同标签的节点,如某个文件的数据块的2个副本放置在标签L1对应节点中,该数据块的其他副本放置在标签L2对应的节点中。
  • 支持选择节点失败情况下的策略,如随机从全部节点中选一个。

图7所示。

  • /HBase下的数据存储在A,B,D
  • /Spark下的数据存储在A,B,D,E,F
  • /user下的数据存储在C,D,F
  • /user/shl下的数据存储在A,E,F
图7 基于标签的数据块摆放策略样例

HDFS开源增强特性:HDFS Load Balance

HDFS的现有读写策略主要以数据本地性优先为主,并未考虑节点或磁盘的实际负载情况。HDFS Load Balance功能是基于不同节点的I/O负载情况,在HDFS客户端进行读写操作时,尽可能地选择I/O负载较低的节点进行读写,以此达到I/O负载均衡,以及充分利用集群整体吞吐能力。

写文件时,如果开启写文件的HDFS Load Balance功能,NameNode仍然是根据正常顺序(本地节点—本机架—远端机架)进行DataNode节点的选取,只是在每次选择节点后,如果该节点I/O负载较高,会舍弃并从其他节点中重新选取。

读文件时,Client会向NameNode请求所读Block所在的DataNode列表。NameNode会返回根据网络拓扑距离进行排序的DataNode列表。开启读取的HDFS Load Balance功能时,NameNode会在原先网络拓扑距离排序的基础上,根据每个节点的平均I/O负载情况进行顺序调整,把高I/O负载的节点顺序调整至后面。

HDFS开源增强特性:HDFS冷热数据迁移

Hadoop历来主要被用于批量处理大规模的数据。相比处理低时延,批处理应用更关注原始数据处理的吞吐量,因此,目前已有的HDFS模型都运作良好。

然而,随着技术的发展,Hadoop逐渐被用于以随机I/O访问模式的操作为主的上层应用上,如Hive、HBase等,而这种时延要求较高的场景中,低时延的高速磁盘(如SSD磁盘)可以得到广泛的应用。为了支持这种特性,HDFS现在支持了异构存储类型,这样用户就可以根据自己不同的业务需求场景来选择不同的数据存储类型。

因此,HDFS可以根据数据的热度,选择不同的存储策略。如将HDFS上频繁访问多次的数据被标识为ALL_SSD或HOT,被访问几次的可以标识为WARM,而只有访问1~2次甚至更少的可以被标识为COLD等,如下图为不同的数据热度,可以选择不同的数据存储策略。

但是,这些高速低时延磁盘,例如SSD磁盘,通常比机械磁盘贵很多。大部分用户希望只有那些经常被访问的热数据才能一直被存储在昂贵的高速磁盘上,而随着数据的访问热度下降以及时间的老化,这些数据应该被迁移到价格低廉的存储介质上。

以详单查询场景作为典型的用例场景,进行说明:当最新详单数据刚刚被导入HDFS上时,会被上层业务人员频繁查询,所以为了提高查询性能,可以将这些详单数据最先导入到SSD磁盘中;但是随着时间的迁移,这些数据逐渐被老化,访问频度越来越低,这时便不适合继续存储在高速硬盘上,需要迁移到廉价的存储介质,节省成本。

目前,如下图所示,HDFS无法很好的支持这些操作,需要自己根据业务类型手动识别数据的热度,并且手动设定数据的存储策略,最后手动触发HDFS Auto Data Movement工具进行数据迁移。

因此,能够基于数据的age自动识别出老化的数据,并将它们迁移到价格低廉的存储介质(如Disk/Archive)上,会给用户节省很高的存储成本,提高数据管理效率。

HDFS Auto Data Movement工具是HDFS冷热数据迁移的核心,根据数据的使用频率自动识别数据冷热设定不同的存储策略。该工具主要支持以下功能:
  • 根据数据的age,access time和手动迁移规则,将数据存储策略标识为All_SSD/One_SSD/Hot/Warm/Cold。
  • 根据数据age,access time和手动迁移规则,定义区分冷热数据的规则。
  • 定义基于age的规则匹配时要采取的行为操作。
    • MARK:表示只会基于age规则标识出数据的冷热度,并设置出对应的存储策略。
    • MOVE:表示基于age规则识别出相应的数据冷热度,并标记出对应的存储策略后,并触发HDFS Auto Data Movement工具进行数据搬迁,调用HDFS冷热数据迁移工具并跨层迁移数据的行为操作。
    • SET_REPL:为文件设置新的副本数的行为操作。
    • MOVE_TO_FOLDER:将文件移动到目标文件夹的行为操作。
    • DELETE:删除文件/目录的行为操作。
    • SET_NODE_LABEL:设置文件节点标签(NodeLabel)的操作。

使用HDFS冷热数据迁移功能,只需要定义age,基于access time的规则。由HDFS冷热数据迁移工具来匹配基于age的规则的数据,设置存储策略和迁移数据。以这种方式,提高了数据管理效率和集群资源效率。

提示

您即将访问非华为云网站,请注意账号财产安全

文档反馈

文档反馈

意见反馈

0/500

标记内容

同时提交标记内容