大数据任务优化

本文涉及的产品
实时计算 Flink 版,5000CU*H 3个月
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
云原生大数据计算服务MaxCompute,500CU*H 100GB 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 
相关文章
|
2月前
|
SQL 分布式计算 运维
如何对付一个耗时6h+的ODPS任务:慢节点优化实践
本文描述了大数据处理任务(特别是涉及大量JOIN操作的任务)中遇到的性能瓶颈问题及其优化过程。
|
7天前
|
存储 分布式计算 大数据
大数据 优化数据读取
【11月更文挑战第4天】
17 2
|
3月前
|
SQL 分布式计算 DataWorks
DataWorks产品使用合集之如何开发ODPS Spark任务
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
|
17天前
|
存储 NoSQL 大数据
大数据 数据存储优化
【10月更文挑战第25天】
51 2
|
1月前
|
SQL 分布式计算 NoSQL
大数据-164 Apache Kylin Cube优化 案例1 定义衍生维度与对比 超详细
大数据-164 Apache Kylin Cube优化 案例1 定义衍生维度与对比 超详细
29 1
大数据-164 Apache Kylin Cube优化 案例1 定义衍生维度与对比 超详细
|
1月前
|
存储 大数据 分布式数据库
大数据-165 Apache Kylin Cube优化 案例 2 定义衍生维度及对比 & 聚合组 & RowKeys
大数据-165 Apache Kylin Cube优化 案例 2 定义衍生维度及对比 & 聚合组 & RowKeys
35 1
|
1月前
|
分布式计算 Java 大数据
大数据-92 Spark 集群 SparkRDD 原理 Standalone详解 ShuffleV1V2详解 RDD编程优化
大数据-92 Spark 集群 SparkRDD 原理 Standalone详解 ShuffleV1V2详解 RDD编程优化
38 0
大数据-92 Spark 集群 SparkRDD 原理 Standalone详解 ShuffleV1V2详解 RDD编程优化
|
1月前
|
SQL 存储 监控
大数据-161 Apache Kylin 构建Cube 按照日期、区域、产品、渠道 与 Cube 优化
大数据-161 Apache Kylin 构建Cube 按照日期、区域、产品、渠道 与 Cube 优化
49 0
|
1月前
|
资源调度 分布式计算 大数据
大数据-111 Flink 安装部署 YARN部署模式 FlinkYARN模式申请资源、提交任务
大数据-111 Flink 安装部署 YARN部署模式 FlinkYARN模式申请资源、提交任务
92 0
|
1月前
|
SQL 分布式计算 大数据
大数据-91 Spark 集群 RDD 编程-高阶 RDD广播变量 RDD累加器 Spark程序优化
大数据-91 Spark 集群 RDD 编程-高阶 RDD广播变量 RDD累加器 Spark程序优化
38 0