大数据任务优化

本文涉及的产品
实时计算 Flink 版,5000CU*H 3个月
简介: 大数据任务优化

60a6bcefe26f4b118e50f46e4d0afd1d.png

补充优化

 

优化五:进程与CPU绑定

大数据环境经常是多个组件混合部署的,特别是当负载较高的时候,就会遇到资源竞争,导致资源利用率低下,以及由于计算机底层的结构设计,以及操作系统的抽象,对一些组件来说,资源的利用效率不是最高的,因此有必要对一些混合部署的大数据组件进行硬件资源的隔离,进一步说是将进程与具体的CPU以及内存进行绑定,也就是充分使用numa架构的特性,提升处理效率,降低组件之间的干扰。而在linux中,内置了Cgroup对资源进行隔离。

NUMA(Non-Uniform Memory Access):非均匀内存访问架构

是指多处理器系统中,内存的访问时间是依赖于处理器和内存之间的相对位置的。这种设计里存在和处理器相对近的内存,通常被称作本地内存;还有和处理器相对远的内存, 通常被称为非本地内存。

一个NUMA Node内部是由一个物理CPU和它所有的本地内存(Local Memory) 组成的。广义得讲, 一个NUMA Node内部还包含本地IO资源,对大多数Intel x86 NUMA平台来说,主要是PCIe总线资源。ACPI规范就是这么抽象一个NUMA Node的。

安装工具:

yum install libcgroup libcgroup-tools numactl -y

总体资源分布情况

640.jpg

资源分配:


5.1kafka--大约需要3~4core


1、创建kafka资源组

cgcreate -g cpuset: kafka


2、创建kafka的资源策略

       cgset -r cpuset.cpus=32-36 kafka

       cgset -r cpuset.mems=0 kafka

   

3、使用kafka的资源组

           在kafka-server-start.sh脚本中修改

60a6bcefe26f4b118e50f46e4d0afd1d.png

5.2、flink

1、创建flink资源组

cgcreate -g cpuset: flink

2、创建flink的资源策略

cgset -r cpuset.cpus=16-31,48-63 flink

cgset -r cpuset.mems=1 flink

3、使用flink资源组

vim taskmanager.sh

flink自带的脚本中有:

60a6bcefe26f4b118e50f46e4d0afd1d.png

4、备注

在查看flink的standalone模式下的 taskmanager.sh下已经有numa相关的一些配置,查看资料进行了以下尝试。

standalone环境下,可以通过flink.yaml中设置taskmanager.compute.numa: true启用numa特性,将会分别在对应的numa节点分别创建一个taskmanager,从而高效地利用cpu。


5.3、clickhouse

1、创建资源组
cgcreate -g cpuset: clickhouse

2、分配资源
   cgset -r cpuset.cpus=32-47 clickhouse
   cgset -r cpuset.mems=1 clickhouse

3、应用
  1、启动clickhouse
  2、获取clickhouse进程id
        cat /run/clickhouse-server/clickhouse-server.pid
  3、将进程id写入
        echo 64792 >> /sys/fs/cgroup/cpuset/clickhouse/cgroup.procs

初步结论

1、开启cpu与进程绑定时,flink任务重启后,对kafka的吞吐量影响较小,有待于进一步测试

2、Cgroup可以在进程运行时,手动设置进程运行在哪些Cpu核心上,不需要重启进程

3、使用Cgroup已有两种方式

1、在进程启动时指定资源组,通常对java代码有效

cgexec -g cpuset:clickhouse  xxx.sh(启动脚本,)

2、进程启动后,将pid加入资源组的cgroup.procs,通常对C++可执行程序有效

echo 64792 >> /sys/fs/cgroup/cpuset/clickhouse/cgroup.procs

实时任务的优化

 

(1)独占资源和共享资源的策略

在一台机器中,共享资源池可以被多个实时任务抢占,如果一个任务在运行时80%以上的时间都需要去抢资源,这时候就需要考虑给它分配更多的独占资源,避免抢不到CPU资源导致吞吐量急剧下降。


(2)合理选择缓存机制,尽量降低读写库次数
内存读写性能是最好的,根据业务的特性选择不同的缓存机制,让最热和最可能使用的数据留在内存中,读写库次数降低后,存吐量自然就上升了.(LRU)


(3)计算单元合并,降低拓扑层级
拓扑结构层级越深,性能越差,因为数据在每个节点间传输时,大部分是需要经过序列化和反序列化的,而这个过程非常消耗CPU和时间(相当于减少跨excutor执行任务)


(4)内存对象共享,避免字符拷贝
在海量数据处理中,大部分对象都是以字符串形式存在的,在不同线程间合理共享对象,可以大幅降低字符拷贝带来的性能消耗,不过要注意不合理使用带来的内存溢出问题。(类似mapjoin)

(5)在高吞吐量和低延时间取平衡
高吞吐量和低延时这两个特性是一对矛盾体,当把多个读写库操作或者ACK操作合并成一个时,可以大幅降低因为网络请求带来的消耗,不过也会导致延时高一些,在业务上衡量进行取舍。



相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
相关文章
|
3天前
|
供应链
代采系统如何利用大数据分析优化采购决策?
代采系统可以利用大数据分析来优化采购决策
|
3天前
|
存储 关系型数据库 MySQL
大数据量分页查询怎么优化提速
大数据量分页查询怎么优化提速
31 2
|
3天前
|
数据采集 监控 算法
利用大数据和API优化电商决策:商品性能分析实践
在数据驱动的电子商务时代,大数据分析已成为企业提升运营效率、增强市场竞争力的关键工具。通过精确收集和分析商品性能数据,企业能够洞察市场趋势,实现库存优化,提升顾客满意度,并显著增加销售额。本文将探讨如何通过API收集商品数据,并将这些数据转化为对电商平台有价值的洞察。
|
3天前
|
分布式计算 DataWorks 关系型数据库
MaxCompute产品使用合集之想要maxcompute任务通过事件触发,该怎么操作
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
|
3天前
|
DataWorks 关系型数据库 对象存储
dataworks数据集问题之同步任务如何解决
DataWorks数据集是指在阿里云DataWorks平台内创建、管理的数据集合;本合集将介绍DataWorks数据集的创建和使用方法,以及常见的配置问题和解决方法。
48 4
|
3天前
|
数据采集 供应链 安全
利用大数据优化业务流程:策略与实践
【5月更文挑战第11天】本文探讨了利用大数据优化业务流程的策略与实践,包括明确业务目标、构建大数据平台、数据采集整合、分析挖掘及流程优化。通过实例展示了电商和制造企业如何利用大数据改进库存管理和生产流程,提高效率与客户满意度。随着大数据技术进步,其在业务流程优化中的应用将更加广泛和深入,企业需积极采纳以适应市场和客户需求。
|
3天前
|
分布式计算 DataWorks 调度
DataWorks产品使用合集之DataWorks中,填写ODPS SQL任务中的参数和分区信息如何解决
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
27 0
|
3天前
|
SQL 分布式计算 DataWorks
MaxCompute产品使用合集之要查看MaxCompute Studio中的项目中的计算任务代码,我该怎么操作
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
|
3天前
|
SQL 分布式计算 运维
MaxCompute产品使用合集之在大数据计算MaxCompute中,怎么查看工作空间中正在运行的查询和任务
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
|
3天前
|
存储 分布式计算 DataWorks
MaxCompute产品使用合集之大数据计算MaxCompute dataworks可以批量修改数据集成任务的数据源配置信息吗
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。

热门文章

最新文章