摘要: CN全称协调节点(Coordinator Node),是和用户关系最密切也是DWS内部非常重要的一个组件,它负责提供外部应用接口、优化全局执行计划、向Datanode分发执行计划,以及汇总、处理执行结果。

本文分享自华为云社区《CN与业务并发度的关系-业务并发度不够?CN来帮忙》,作者:闻鲜生 。

一、CN的作用是什么?

CN全称协调节点(Coordinator Node),是和用户关系最密切也是DWS内部非常重要的一个组件,它负责提供外部应用接口、优化全局执行计划、向Datanode分发执行计划,以及汇总、处理执行结果。

集群中,CN有多个并且CN的角色是对等的(执行DML语句时连接到任何一个CN都可以得到一致的结果)。只需要在CN和应用程序之间增加一个负载均衡器,使得CN对应用是透明的。DWS通过CCN(Control Coordinator Node)负责集群内的资源全局负载控制,以实现自适应的动态负载管理。CM在第一次集群启动时,通过集群部署形式,选择编号最小的CN作为CCN。若CCN故障之后,由CM选择新的CCN进行替换。

一次简单的查询流程如下所示:

1. 用户通过应用程序发出查询本地数据的SQL请求到Coordinator。

2. Coordinator接收用户的SQL请求,分配服务进程,向GTM请求分配全局事务信息。

3. GTM接收到Coordinator的请求,返回全局事务信息给Coordinator。

4. Coordinator根据数据分布信息以及系统元信息,解析SQL为查询计划树,从查询计划树中提取可以发送到Datanode的执行步骤,封装成SQL语句或者子执行计划树,发送到Datanode执行。

5. Datanode接收到读取任务后,查询具体Storage上的本地数据块。

6. Datanode任务执行后,将执行结果返回给Coordinator。

7. Coordinator将查询结果通过应用程序返回给用户。

二、CN与业务并发度的关系

CN是外部应用的接口,CN的并发能力直接决定了业务的并发度。单CN的并发能力受如下几个参数控制:

max_connections: 允许和数据库连接的最大并发连接数。此参数会影响集群的并发能力。CN节点默认值为800,DN节点默认值为5000。

max_active_statements:设置全局的最大并发数量。此参数只应用到CN,且针对一个CN上的执行作业。默认值60。

CN的max_connections和max_active_statements参数支持用户根据业务并发度诉求修改,详细操作流程如下图:

点击集群详情的“参数修改”页面,搜索需要修改的参数,会显示对应参数和当前值,参数值框里面输入修改值,点击“保存”按钮保存配置。“是否重启集群”栏显示“是”的参数说明需要重启集群生效,请寻找业务空闲期修改。

三、CN不够怎么办?

单CN的并发能力会受到硬件资源和拓扑结构的限制,不能无限制调大。DWS是分布式架构集群,此时就要考虑横向扩展,增加更多的CN来提升业务并发度,充分利用分布式架构的优势。

下发集群时配置更多的CN

CN数量在下发DWS集群时可以配置。默认值3个,最少2个,最多不超过“节点数量”,如果节点数量大于20,则CN数量最多可配置20个。如下图所示,在“创建数据仓库集群”的购买页面的“高级配置”选择“自定义”,“CN部署量”即为CN的初始部署数量。

下发集群后在线添加CN

集群下发后,如果由于业务并发度高导致CN不够用,可以在线添加CN,具体操作如下图所示。增加CN耗时与用户表数量有关,大概10分钟左右,增加CN过程中间有一段时间会锁集群,阻塞DDL语句执行。

四、如何做到多个CN负载均衡?

如果集群部署了多个CN,但是怎么做到CN的负载均衡,保证业务并发度和性能最大化呢?DWS提供了弹性负载均衡(Elastic Load Balance,简称ELB)服务。弹性负载均衡可以通过流量分发扩展应用系统对外的服务能力,同时通过消除单点故障提升应用系统的可用性。

ELB的配置原理介绍

ELB的绑定方法

五、CN故障了怎么办?

由于DWS的CN角色是对等的,同时对外提供服务,因此必须保证其元数据的强一致性,因此外部应用连接任一个CN执行涉及元数据变更的操作(如DDL,DCL)必须分发到所有的CN同时完成。 如果单个CN故障,会影响所有CN的DDL和DCL操作。目前DWS提供了两个解决方案:

自动剔除CN

如果集群绑定了弹性负载均衡(ELB),则会自动打开自动剔除CN功能,DWS CM周期性检测CN的状态,如果发现CN连续故障600s,则会立即从整个集群剔除该故障CN,保证其余CN的业务不受到影响。再配合弹性负载均衡服务,会自动把发送到故障CN的作业转发到其他正常CN。

删除cn介绍

如果发现集群部分CN故障,或存在亚健康状态,可以选择手动删除故障CN,具体操作流程如下。手动删除CN耗时固定,1分钟左右。

总结:希望通过此文,让你能够对CN作用,CN运维操作,业务并发度有进一步的了解!

点击关注,第一时间了解华为云新鲜技术~

业务并发度不够,数仓的CN可以来帮忙的更多相关文章

  1. 数仓1.4 |业务数仓搭建| 拉链表| Presto

    电商业务及数据结构 SKU库存量,剩余多少SPU商品聚集的最小单位,,,这类商品的抽象,提取公共的内容 订单表:周期性状态变化(order_info) id 订单编号 total_amount 订单金 ...

  2. 【离线数仓】Day03-系统业务数据仓库:数仓表概念、搭建、数据导入、数据可视化、Azkaban全调度、拉链表的使用

    一.电商业务与数据结构简介 1.业务流程 2.常识:SKU/SPU SKU=Stock Keeping Unit(库存量基本单位).现在已经被引申为产品统一编号的简称,每种产品均对应有唯一的SKU号. ...

  3. 基于MaxCompute的数仓数据质量管理

    声明 本文中介绍的非功能性规范均为建议性规范,产品功能无强制,仅供指导. 参考文献 <大数据之路——阿里巴巴大数据实践>——阿里巴巴数据技术及产品部 著. 背景及目的 数据对一个企业来说已 ...

  4. 【实时数仓】Day01-数据采集层:数仓分层、实时需求、架构分析、日志数据采集(采集到指定topic和落盘)、业务数据采集(MySQL-kafka)、Nginx反向代理、Maxwell、Canel

    一.数仓分层介绍 1.实时计算与实时数仓 实时计算实时性高,但无中间结果,导致复用性差 实时数仓基于数据仓库,对数据处理规划.分层,目的是提高数据的复用性 2.电商数仓的分层 ODS:原始日志数据和业 ...

  5. 【企业流行新数仓】Day01:新版本对比、业务和表的介绍☆、Hive、ODS层、DWD层

    一.2.0版本对比 二.业务介绍 1.术语 SKU SPU UV: user views 用户浏览总量[浏览量] PV:page views 页面浏览总量 2.电商业务表结构 表名 同步方式 字段名 ...

  6. 【CDH数仓】Day02:业务数仓搭建、Kerberos安全认证+Sentry权限管理、集群性能测试及资源管理、邮件报警、数据备份、节点添加删除、CDH的卸载

    五.业务数仓搭建 1.业务数据生成 建库建表gmall 需求:生成日期2019年2月10日数据.订单1000个.用户200个.商品sku300个.删除原始数据. CALL init_data('201 ...

  7. 看SparkSql如何支撑企业数仓

    企业级数仓架构设计与选型的时候需要从开发的便利性.生态.解耦程度.性能. 安全这几个纬度思考.本文作者:惊帆 来自于数据平台 EMR 团队 前言 Apache Hive 经过多年的发展,目前基本已经成 ...

  8. ByteHouse云数仓版查询性能优化和MySQL生态完善

    ByteHouse云数仓版是字节跳动数据平台团队在复用开源 ClickHouse runtime 的基础上,基于云原生架构重构设计,并新增和优化了大量功能.在字节内部,ByteHouse被广泛用于各类 ...

  9. HAWQ取代传统数仓实践(十三)——事实表技术之周期快照

    一.周期快照简介 周期快照事实表中的每行汇总了发生在某一标准周期,如一天.一周或一月的多个度量.其粒度是周期性的时间段,而不是单个事务.周期快照事实表通常包含许多数据的总计,因为任何与事实表时间范围一 ...

  10. 数仓建设中最常用模型--Kimball维度建模详解

    数仓建模首推书籍<数据仓库工具箱:维度建模权威指南>,本篇文章参考此书而作.文章首发公众号:五分钟学大数据,公众号中发送"维度建模"即可获取此书籍第三版电子书 先来介绍 ...

随机推荐

  1. 长程 Transformer 模型

    Tay 等人的 Efficient Transformers taxonomy from Efficient Transformers: a Survey 论文 本文由 Teven Le Scao.P ...

  2. 记录一下我的ctf比赛的web题目

    Web之getshell: 具体代码如下 <?php highlight_file(__FILE__); error_reporting(0); echo "<h1>WEL ...

  3. 深入理解maven构建生命周期和各种plugin插件(转)

    https://blog.csdn.net/zhaojianting/article/details/80321488 本博文不会长篇大论的讨论生命周期的概念,而是从各种plugin的实际功能和应用出 ...

  4. require()、import、import()有哪些区别?

    require().import.import()是我们常用的引入模块的三种方式,代码中几乎处处用到.如果对它们存在模糊,就会在工作过程中不断产生困惑,更无法做到对它们的使用挥洒自如.今天我们来一起捋 ...

  5. js根据某属性对json数组分类

    原数据: var arr = [ {name: '张三', age: 23, work: '计算机'}, {name: '王五', age: 29, work: '计算机'}, {name: '张兴' ...

  6. 【JSOI2008】火星人 (哈希+Splay)

    题目 这种含有修改操作的就难以用后缀数组实现了,求LCP这种区间相等的类型可以想到用hash判断,同时LCP的答案大小符合二分条件可以二分求出,如果只有修改可以用线段树维护,因为还有有插入操作所以想到 ...

  7. 大数据开发要学什么java还是python?

    在大数据开发领域,Java和Python都是备受青睐的编程语言.它们分别具有各自独特的特点和优势,在大数据处理方面也有不同的应用场景. 以下是对Java和Python在大数据开发中的应用.优势以及学习 ...

  8. 教你使用Prometheus-Operator进行K8s集群监控

    本文分享自华为云社区<Promethues-operator入门使用指导>,作者:可以交个朋友. 一. 背景 在非operator配置的普罗中我们监控k8s集群都是通过配置configma ...

  9. 在 JMeter 中使用 JSON 提取器提取特定条件下的值

    当你需要在 JMeter 中对接收到的 JSON 响应进行处理时,JSON 提取器是一个非常有用的工具.在本文中,我们将讨论如何使用 JSON 提取器来提取特定条件下的值,以满足你的需求. 问题描述 ...

  10. 找到了!GitHub Copilot的最佳免费平替

    在如今这个人工智能高速发展的时代,每个行业都在被AI技术影响而改变.层出不穷的AI辅助工具,让我们看到了机器正在取代一部分基础的日常工作.对于我们开发者而言,当前最炙手可热的就是GitHub Copi ...