大数据
文章平均质量分 94
scx_white
这个作者很懒,什么都没留下…
展开
-
关于如何在 Grafana 绘制 Apache Hudi Metrics 仪表盘的教程
对许多监控组件都支持metrics推送,如JMXDatadogPrometheus等等。具体可以进入查看。本文主要叙述下如何将接入Prometheus,开发人员通过对监控指标的观察能够预判可能出现的问题,从而对潜在的不确定因素进行优化,使我们的数据湖任务运行更加健康。原创 2023-02-20 11:14:26 · 733 阅读 · 1 评论 -
基于Apache Hudi 和 Apache Spark Sql 的近实时数仓架构之宽表建设
无论是在lamda架构还是kappa架构中,实时计算通常是使用flink+mq来实现的,而在这些场景中涉及到多张表join时,一般我们的使用方法是多张流表join,或者流表维表的方式join。但无论是那种方式都会存在一些问题,比如窗口开的过小,数据晚到导致数据丢失。窗口开的过大,内存占用过高,成本高,有被打爆的风险。上篇文章介绍了我们使用做的近实时数仓架构,在这里主要讲下在近实时数仓建设时遇到多表join怎么以宽表部分列更新的方式解决离线数仓高延迟join。原创 2023-01-10 16:17:17 · 2676 阅读 · 4 评论 -
基于 Apache Hudi 和 Apache Spark Sql 的近实时数仓架构分享
在大数据的计算场景中,根据数据的延迟情况,数据的时效性一般分为离线、准实时、实时。离线计算一般是以天(T)为界限,比如离线场景最多的就是T-1计算,也就是今天计算昨天产生的数据。准实时计算一般以小时(H)为界限,比如H-1的计算,即当前小时处理上个小时的数据,当然某些业务场景下也有(0.5H-1)计算的存在。而实时计算一般是以秒为界限,即数据的延迟最大粒度为秒级。对于离线和准实时计算,我们可以在调度系统中通过不同的调度周期实现,而实时计算通常需要一个常驻的任务来进行。原创 2022-11-04 10:16:47 · 1068 阅读 · 0 评论 -
【Apache Hudi】一种基于增量日志文件数的压缩策略
Hudi 提供了一种新的表类型:MOR 表。该表在每次的 upsert 操作时,并不会实时的和基础数据文件进行合并,而是生成新的增量日志文件,而增量文件和基础文件的合并就叫做压缩(compaction)。所以当一个读操作读取 MOR 表时,此时会读取该表的基础数据文件和所有的增量日志文件,然后进行一个合并操作(比如根据主键聚合取更新时间最新的那条数据),最后将合并后的结果返回给终端。原创 2022-09-21 17:19:32 · 908 阅读 · 0 评论 -
数据准备之日志采集发展历程
大家都听说过大数据计算,可能大家没想过大数据计算的数据来源自哪里呢?是怎么被抽取到数据仓库的呢?实际上数仓/数据湖的数据主要来源于日志、业务数据、第三方接口、 和 等其它存储。大数据这边有专门的数据集成工具(类似:,,,),就像一只八爪鱼把各种数据采集到大数据的数据仓库来。由于我们公司的日志数据在国外分散于多个可用区,采集日志也就不能使用一些开源的方案。在这里由我给大家简单介绍下我们公司大数据的数据准备之日志采集的发展历程。应该是在 年之前,日志采集方式还是应用使用指定的 配置文件,该配置除了指定日志原创 2022-07-04 15:53:57 · 461 阅读 · 0 评论 -
spark剖析:spark读取parquet文件会有多少个task
前言做大数据开发的肯定都知道小文件的弊端读取阶段:spark在读取文件时会根据文件的数量以及文件的大小来切分文件生成task。一般 task 数是大于等于文件数的,如果都是小于128M的文件就是等于文件数。小文件越多,task数越多,单个task处理的数据量就少,如果并行度不够会导致查询数据过慢。写入阶段:如果你的数据是存储到类似于cosn、oss、s3等对象存储中,spark 最后移动文件的rename阶段如果出现大量的小文件,性能低的会让你疯掉(毕竟 rename 在这些对象存储底层分两步 co原创 2021-06-19 16:33:03 · 3657 阅读 · 8 评论 -
深入剖析 Delta Lake: MySQL CDC 实战
前言在初建大数据平台时,我想大家都遇到过这样一个需求,mysql 的数据如何同步到 hdfs 中供数仓分析使用在早期,业务可能对实时性的要求还不高,大家的计算也都是 T+1 的离线计算,当然也可能有 H+1 的准实时计算。大家的选型可能是 sqoop、datax 等工具。此时只需要在离线调度平台上配置每天/每小时拉取 mysql 数据同步到 hive 的任务即可。但该方式也有一些弊端,如:实时性较差全量抽取、尤其是每小时一次的抽取对 mysql 的压力很大...原创 2020-11-06 17:45:12 · 1791 阅读 · 5 评论 -
hera源码剖析:项目启动之分布式锁
文章目录前言获取当前机器ip分布式锁知识点总结master服务work服务work连接master前言本文章主要是为了让使用者能够更加了解 hera 的原理,并且能够在之基础上进行改进所进行。hera 是一款分布式任务调度与开发平台,具体不再描述,开源地址:https://github.com/scxwhite/hera获取当前机器ip在 hera 中,有一些静态代码块,这里只说一个很重要的部分,WorkContext 类中有这样一部分代码 static { host原创 2020-09-29 17:41:53 · 747 阅读 · 0 评论 -
atlas 初体验
atlas是由apache开源的数据血缘解析平台 布拉布拉2020-08-27T06:11:21,978 ERROR [3cf21166-5613-4313-a607-d6b77d305de3 main] hook.HiveHook: HiveHook.run(): failed to proceoperation QUERYjava.lang.NoSuchMethodError: org.apache.hadoop.hive.metastore.api.Database.getCatalogName原创 2020-09-07 20:20:24 · 4804 阅读 · 6 评论 -
spark sql 数据倾斜案例实操
最近数仓同学有个离线任务跑不动了,问题是总是出现MetadataFetchFailedException 的异常,最后导致任务被 kill。于是就帮忙解决一下。问题排查查看了下该任务的历史执行记录(如下图),其实最近几天一直在失败,只是在重试后偶尔会成功一下查看具体的报错日志,是shuffle 数据丢失导致的任务失败,已经询问过该同事,已经对该 spark sql 任务进行了多次调参,executor-memory 很大了任务也是同样的错误。AY.hera.spark.conf=--master原创 2020-08-18 21:02:17 · 3973 阅读 · 5 评论 -
记一次大数据跨区域流量排查及修复
最近公司在降成本,发现了欧州、美国区两个区每天存在 300$ 的跨区流量费用,经过运维同学定位后发现绝大部分流量在 emr 机器上。于是排查就开始了。前言首先附上我们的任务调度架构我们大数据计算使用的是 AWS 的 EMR(Elastic MapReduce) 集群,由于 AWS EMR 天然支持读写 S3,并且 S3 相比较硬盘尤其便宜,所以我们的离线数据都是存储在 S3。即:计算...原创 2020-04-22 20:05:51 · 1070 阅读 · 0 评论 -
presto sql输入表、输入字段、limit、join操作解析
前言一段时间没有写文章了,写下最近做的事情。目前我们这边有一个metabase 查询平台供运营、分析师、产品等人员使用,我们的查询都是使用 presto 引擎。并且我们的大数据组件都使用的是 emr 组件,并且涉及到中国、美西、美东、印度、欧洲、西欧等多个区域,表的权限管理就特别困难。所以就需要一个统一的权限管理来维护某些人拥有那些表的权限,避免隐私的数据泄漏。于是我们就需要一款sql解析工具...原创 2020-03-18 20:50:20 · 5223 阅读 · 0 评论 -
Flink实战之StreamingFileSink如何写数据到其它HA的Hadoop集群
前言我们公司使用的集群都是 EMR 集群,于是就分别创建了一个 flink 集群专门用户实时计算,一个 hadoop 集群专门用于 spark、hive 的离线计算。两个集群是完全隔离的。但是有一些实时数据的采集需求,需要把数据写入到我们做离线计算的集群,有人说我只需要在 StreamingFileSink 需要传入的hdfs 路径前加上离线集群的 ip 就好了,比如:hdfs://otherI...原创 2019-12-03 21:16:06 · 5008 阅读 · 36 评论 -
hive访问不在同一集群的hbase表数据
最近有个需求,有一些数据会实时写入到 hbase,但是又需要在 hive 中计算这些数据,最后把结果同步到 mysql。如果对于 hbase 与hive 在同一个集群,是很简单的操作,直接在 hive 中创建一个 hbase 的外部映射表就好了。但是我这边有些不一致,我们这边 hbase 和 hive 在两个不同的集群,需要了一些额外的操作开启白名单限制由于 hbase 集群与 hive ...原创 2019-09-25 16:58:17 · 2162 阅读 · 0 评论 -
使用java在aliyun/aws创建E-MapReduce (emr)集群
背景在上个公司,我的 hera 任务调度系统是运行在本地 cdh 机器上的,并没有使用 aws/aliyun 提供的 emr 服务。所以为了使 hera 能够兼容 emr,就需要使用 java 创建 emr 集群.功能点既然要创建集群,肯定也要有等待集群创建完成、销毁集群等操作。所以功能点大概有判断集群是否已经创建过创建集群等待集群创建完成集群销毁获得集群的登录脚本集...原创 2019-04-10 19:59:02 · 997 阅读 · 0 评论