Flink任务优化分享 线上计算任务在某版本上线之后发现每日的任务时长都需要三个多小时才能完成,计算时间超过了预估时间,通过Dolphinscheduler的每日调度任务看,在数据层 dwd 的数据分段任务存在严重的性能问题,每天的计算耗时将近40分钟,并且随着数据量的上涨,时间越来越长,因此这个计算节点需要着重优化。
Alluxio调研 Alluxio是世界上第一个用于云分析和AI的开源数据编排技术。弥合了数据驱动应用程序和存储系统之间的差距,使存储层中的数据更接近数据驱动应用程序,并使其易于访问,使应用程序能够通过一个通用接口连接到多个存储系统。Alluxio的内存第一层体系结构使数据访问速度比现有解决方案快几个数量级。
Structured Streaming state store分享 Structured Streaming中的查询与面向批处理的Spark SQL中的查询不同。在批处理中,查询是针对有限数量的数据进行的,因此计算结果可以是最终的。但这种情况不适用于流处理,因为其结果是不断增长的。因此,不断增长的结果存储在容错的State Store中。State Store的目的是提供一个可靠的地方,引擎可以从那里读取Structured Streaming聚合的中间结果。因此,即使driver出现故障,Spark也能将状态恢复到故障前的状态。
Yarn上Streaming流自动调节资源设计 DAG运行之后,会先进行数据源数据的处理,从Variables中获取到上次消费的offset位置,从kafka中获取当前最后数据的offset,然后消费两个offset之前的数据,数据处理完之后将Variables的offset位置置为当前最后数据的offset。 2.2. Kafka数据处理:从1中获取到的数据源Kafka数据能够获取到具体的offset信息,将startOffset作为消费标识,然后将相同数据源的数据的消费标识组合成。来采集数据输入信息,并将数据输入到指定的Kafka的Topic中。
JVM分享 S0跟S1大小是相同的,并且同一时间只有一个是开启的,另外一个是空的。正常来说,新生成的对象首先放到年轻代Eden区,当Eden空间满了,触发第一次Minor GC,存活下来的对象移动到S0区,S0区满后再触发一次 GC,S0区存活对象移动到S1区,这样保证了一段时间内总有一个survivor区为空。方法区也是所有jvm线程共享的,方法区类似于常规语言的编译代码的存储区域,里面存放的是每个类class的结构,例如运行时常量池,字段和方法数据,以及方法和构造函数的代码。同时创建的对象也存放在堆中。
Delta 表定时Compact设计 正常来说这种方式产生的小文件不会太多,小文件多的delta表大多是实时job写的表,流每次对delta表进行写入的时候,由于delta lake的time travel特性,每次写都会产生小文件,时间长了之后,目录下的小文件就会特别多,造成的影响就是下游的流在读上游的delta表的速度特别慢,导致下游job的处理时间变长,所以对流式job的delta表进行compact变得尤为重要。目前我们的数仓中delta表实时跟离线的都有,离线的表主要是每天的定时任务的运行,并根据日期字段进行分区的存储。
Canal深入调研 canal的组件化设计非常好,有点类似于tomcat的设计。使用组合设计,依赖倒置,面向接口的设计。 server代表一个canal运行实例,对应于一个jvm instance对应于一个数据队列 (1个server对应1…n个instance) eventParser (数据源接入,模拟slave协议和master进行交互,协议解析) eventSink (Parser和Store链接器,进行数据过滤,加工,分发的工作) eventStore (数据存储)
Airflow 1.10.4版本部署及整合企业微信告警 Airflow 1.10.4版本部署及整合企业微信告警本次部署的Airflow版本为1.10.4,依赖的Python版本为Python3.61.Airflow安装Python的安装就不多做赘述,网上教程太多了。如果是本地部署测试,可以新启一个python的测试环境virtualenv#1.安装virtualenvpip3 install virtualenv #2.创建目录mkdi...
HBase数仓架构 HBase数仓架构1.整体架构选型主要有两个,第一个是实时,实时采集利用 Maxwell,直接采集公司数据库 MySQL,将数据直接以 json 格式发送到 Kafka 集群,数仓存储选型是 HBase。上图是实时数仓架构图,主要的存储层还是以 HBase 为主。第一层业务系统数据库在Mysql上。使用 Maxwell,其支持白名单和黑名单。业务平台的表可能有两三百个,大数据平台的计算可能...
数仓初步构建 数仓初步构建数仓构建主要就是基于主题库的数据建立对应的专题库以供对应专题服务。速成策略:1.首先了解数仓相关知识2.了解事实表与维度表的建立与实施,3.找出业务需求然后寻找对应的解决方案。4.后期开发顺利推进。1.数仓1.1首先先讲一下数仓的概念,先上个图,由图看的更加直观。数据仓库的分层结构,有人说是基于ETL作为基础来分层的,(抽取,清洗,转换,加载)但是基于上图可能会更具...
Kafka为什么速度快、吞吐量大 Kafka为什么速度快、吞吐量大Kafka是大数据领域无处不在的消息中间件,目前广泛使用在企业内部的实时数据管道,并帮助企业构建自己的流计算应用程序。Kafka虽然是基于磁盘做的数据存储,但却具有高性能、高吞吐、低延时的特点,其吞吐量动辄几万、几十上百万。但是很多使用过Kafka的人,经常会被问到这样一个问题,Kafka为什么速度快,吞吐量大;大部分被问的人都是一下子就懵了,或者是只知道一些简单...
Spark Streaming反压机制初探 Spark Streaming反压机制初探1.反压机制原理Spark Streaming中的反压机制是Spark 1.5.0推出的新特性,可以根据处理效率动态调整摄入速率。当批处理时间(Batch Processing Time)大于批次间隔(Batch Interval,即 BatchDuration)时,说明处理数据的速度小于数据摄入的速度,持续时间过长或源头数据暴增,容易造成数据在内存...
HBase Rowkey设计规范 HBase Rowkey设计规范1.Rowkey是什么可以理解为关系型数据库MySQL Oracle的主键,用于标识唯一的行。完全是由用户指定的一串不重复的字符串。HBase中的数据永远是根据Rowkey的字典排序来排序的。2.Rowkey的作用读写数据时 通过 RowKey 找到 对应 的 Region,例如需要查找一条数据肯定需要知道他的RowKey ,写数据的时候也要根据R...
Spark中Cache跟Persist的初探 Spark中Cache跟Persist的初探1.Cache的产生背景我们先做一个简单的测试读取一个本地文件做一次collect操作:val rdd=sc.textFile("file:///home/hadoop/data/input.txt")val rdd=sc.textFile("file:///home/hadoop/data/input.txt")上面我们进行了两次相同的操作,...
Spark内存管理再探 Spark内存管理再探之前写过一篇Spark on yarn的内存管理分配,初探,这次再来深入了解它更加底层的一些东西,之前博客的连接 Spark on yarn 内存管理分配初探1. 静态内存管理1.1存储内存分配通过代码可以看出,存储空间可用内存 = 运行时最大内存 x 分配给存储空间的比例 x 安全系数// 默认最小内存为32M,单位为字节private val MIN_MEM...
Kafka数据可靠性及一致性的机制初探 Kafka数据可靠性及一致性的机制初探Apache Kafka是大数据项目中使用较多的一个消息中间件,是分布式消息订阅系统,有非常好的横向扩展性,可实时存储海量数据,并且Kafka的数据可靠新以及一致性做的非常好,本文是对Kafka的数据可靠性及一致性的机制做了一个初步的探究.1.数据可靠性1.1 Topic 分区副本kafka的早期版本并没有副本这个概念,所以只是用来存储不常用的数据,所...
Spark-Core(MapPartitions内存优化) Spark-Core(MapPartitions/内存优化)1.mapmap是对RDD中的每个一元素作用一个函数或者是算子,简单理解就是对每个元素进行一个f(x)的操作Return a new RDD by applying a function to all elements of this RDD.2.mapPartitionRDD:n Partition :N RecordR...
Spark-Core(共享变量) Spark-Core(共享变量)1.Shared Variables 当在远程集群节点上执行传递给Spark操作(例如map或reduce)的函数时,它将在函数中使用的所有变量的单独副本上工作。这些变量将复制到每台计算机,并且远程计算机上的变量的更新不会传播回驱动程序。支持跨任务的通用,读写共享变量效率低下。但是,Spark确实为两种常见的使用模式提供了两种有限类型的共享变量:广播变量和...
Spark on Yarn Spark on Yarn1.Yarn的产生背景HadoopSpark StandaloneMPI…等分布式的框架集群的资源利用率不够,就需要统一的资源管理和调度。使用Yarn的话,多种计算框架可以共享集群资源,按需分配,这样可以提升集群资源的利用率。2.Yarn架构各自的职责以及重试的机制(挂了之后如何重新执行)RM:NM:AM:Container:3.Yarn的执行...