大数据集群二次开发及调优使用指导(一)-HDFS

南墨2年前技术文章654

1.   典型业务调优

涉及HDFS的相关业务一般可以分为IO密集型业务,计算密集型业务,低延迟业务,高吞吐量业务

1.1     低延迟业务

计算密集型业务,低延迟业务,这一类业务通常是对大量NameNode文件目录访问为主的(权限判断,文件存在性,文件信息查询等对NameNode元数据操作为主的)。因此需要针对NameNode的处理能力进行调整。主要可以采取以下措施:

l  通过新增NameNode引入Federation的方案实现,将高优先级的业务部署在单独的NameNode,以解决资源使用的问题。

l  在业务高峰期间,关闭HDFS的审计日志级别和运行日志级别修改为WARN级别。在业务降低的时候可以再开启INFO级别。

l  硬件能力提升:

提升NameNode节点的CPU主频。

更换DataNode的磁盘为高性能磁盘或者SSD

l  减少网络带宽延迟。

1.2     高吞吐量业

高吞吐量业务,这一类业务主要是大文件操作,对DataNodeIO需求更高。主要可以采取以下措施:

l  扩容DataNode节点数量。提高集群的吞吐量。

l  扩容DataNode节点的磁盘数量,以提高单DataNodeI/O能力。

l  更换DataNode挂载的磁盘类型,使用更高性能的磁盘或者SSD

1.3     实时数据

实时数据需要HDFS能尽快响应业务请求,对节点性能有较高的要求。为保证业务实时性,一般采用配置高性能的节点,并将业务隔离的方案。主要可以采取以下措施:

l  采用分级存储,将存储节点按性能分组,由高性能节点为其提供业务。

l  数据节点采用SSD存储介质。

l  采用Federation特性,隔离NameNode以及数据节点。

1.4     频繁访问数据

频繁访问的数据一般指写入完成后,需要重复读取,偶尔有修改变化的数据。

对于这一类数据,主要可以采取以下措施:

l  使用Central Cache特性,将对应的文件缓存到内存。(在节点宕机时存在数据丢失风险)

l  使用分级存储特性,将对应文件存储到SSD介质。

1.5     临时数据

临时数据一般是指在写入完成后,立即进行业务处理,处理完成后删除的数据。

对于这一类数据,主要可以采取以下措施:

l  使用分级存储,将数据分布存储到RAM盘。

l  将副本数设置为2个,减少系统存储、网络压力。

1.6     归档数据

归档数据是指数据存储到集群后,一段时间不再访问的数据:

对于这一类数据,主要可以采取以下措施:

l  可以设置冷数据归档目录为I/O性能较慢的存储介质上,也可以减少副本数等。

l  存储数据时,采用HAR格式存储。

l  使用分级存储特性,将这些数据存储到低性能节点上。

2.   二次开发业务应用指导

HDFS的数据导入,读取当前大部分是通过上层组件Flume HBase sqoop等实现的

也有部分的HDFS的二次开发针对读写的处理。

应用的客户端应用开发处理通常是采用分布式框架(如MRTez 部署在各节点运行。如果部署在集群外或者部署在单节点上,分布在不同节点的客户端上,避免单节点的客户端网络IO或者磁盘IO成为瓶颈。

针对HDFS的具体应用开发有一些常用的API可以提升处理能力。

2.1     使用预读取能力

HDFS在数据读取时,提供预读取接口,对于连续读取的情况,可以使用预读取能力,提升业务吞吐量。

FSDataInputStream.setReadahead (Long readahead)

FSDataInputStream.setDropBehind (Boolean dropBehind)

2.2     计算数据就近原则

HDFS提供了短路读short-circuit特性,如果客户端和数据在同样的节点上,将能有效提升读写性能。

l  数据写入时,指定优先写入的节点

HDFS客户端在创建文件时,支持指定DataNode存储节点的参数,客户端在数据写入时,可以指定数据写入的优选节点。

l  数据读取时,将计算下发到数据所在的节点

HDFS客户端提供了API,可以获取文件存储的节点位置,数据读取时,应尽量将计算下发到数据所在节点。

2.3     避免小文件存储

HDFS在设计时,主要用于存储海量的大文件。这里大文件定义指,每个文件体积应该大于128MB

如果需要存储小文件,应该使用HAR文件接口。

HAR文件接口:

HAR格式是HADOOP中的归档文件格式,其原理是将多个小文件打包到一个HDFS文件中。其读写是,需要用归档格式的API


相关文章

bind服务-1

bind服务-1

DNS:域名系统(英文:Domain Name System)是一个域名系统,是万维网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP...

SQL隐式转换导致索引失效_校验规则不一致

4.校验规则不一致导致索引失效首先可以通过检查表的校验规则核实是否存在隐式转化。--查看关联字段的字符集、校验规则SELECT TABLE_SCHEMA, TABLE_NAME, COLUMN_NAM...

kafka节点数规划

按磁盘容量规划节点数Kafka的数据存放在本地磁盘,建议使用SAS盘,提供较高磁盘IO,以提高Kafka吞吐量。在本规划基于的硬件规格下,单节点平均吞吐量参考值为读300MB/s,写150MB/s。数...

Kafka日志管理

Kafka在运行时会生成大量的日志记录信息,包含了运行状态、错误信息、性能指标等。这些日志文件会占用很大的磁盘空间,过多的日志文件也会影响Kafka的性能,因此需要采取一些日志管理措施来清理无用的日志...

大数据监控系列(一)——Prometheus+Grafana监控概述

大数据监控系列(一)——Prometheus+Grafana监控概述

1 概述这是介绍Prometheushe和Grafana主要是为了监控大数据产品,数栈平台也是使用Prometheushe+Grafana作为底层大数据组件的监控,并且均有配置模板,导入即在Grafa...

 MySQL运维实战(1.2)安装部署:使用二进制安装部署

MySQL运维实战(1.2)安装部署:使用二进制安装部署

一般在生产环境,我们会使用二进制安装的方式安装MySQL。使用二进制安装,在处理单机多实例、升级MySQL等场景下更加方便。如果有特殊的需求(比如要打一些patch),我们还可以自己编译二进制。1、下...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。