自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

苏苏爱自由

生如夏花之绚烂,死如秋叶之静美。

  • 博客(661)
  • 资源 (12)
  • 问答 (4)
  • 收藏
  • 关注

原创 赫拉(hera)分布式任务调度系统之操作文档

前言最近发现我总是站在我的角度来使用hera,每个功能都很清楚,但是对于使用者,他们是不清楚的,所以提供一篇hera操作文档。有问题可以在下面回复操作文档登录、注册在hera上登录和注册其实分为两个部分,即用户和用户组(如果使用的是hera2.4版本以下的没这个功能)用户用户的登录url地址为 /login,页面效果如图请注意看提示,用户名为你注册的邮箱的前缀。邮箱:任务...

2019-10-31 21:10:05 9603 5

原创 赫拉(hera)分布式任务调度系统之版本发布功能页面

文章目录前言往期目录hera2.2-beta版本任务编辑时支持修改任务类型任务组添加管理员bug修复修复centos7机器组监控不显示的bug对于只有一台work时,降低任务的分发频率,尽量避免crash修复任务重试时hostGroupId为空新增一键开启/关闭上游所有任务的接口修复任务异常退出时,退出码为0的情况修复脚本改变后,任务在未全量生成版本时,而执行脚本内容还是老脚本的情况work断线时...

2019-01-26 15:30:41 2410 4

原创 赫拉(hera)分布式任务调度系统之Q&A(五)

文章目录q:依赖任务的周期怎么填?q:新加的任务什么时候会加入调度q:想立刻加入调度怎么办q:资源文件怎么上传不成功q:开启/关闭/失效按钮的区别q:如何控制任务的并行数量q:任务执行会冲突吗q:什么是漏跑检测重试q:什么是任务信号丢失重试q:为什么任务无法关闭q:为什么任务无法开启q:`master`挂了,`work`会抢占`master`吗q:`master`挂了,哪些`work`会抢占`ma...

2019-01-08 15:51:29 3620 3

原创 赫拉(hera)分布式任务调度系统之版本(四)

文章目录赫拉文章版本介绍版本的使用加入群聊赫拉文章赫拉(hera)分布式任务调度系统之架构,基本功能(一)赫拉(hera)分布式任务调度系统之项目启动(二)赫拉(hera)分布式任务调度系统之开发中心(三)版本介绍在hera系统中支持历史版本的数据重跑。每一个任务都会生成版本,版本时间根据cron表达式来产生。其中版本在脚本中没有使用内置变量时无用。版本号的生成规则为:yyyyMM...

2019-01-04 15:21:26 3179

原创 赫拉(hera)分布式任务调度系统之开发中心(三)

简介开发中心,顾名思义。我们进行开发的地方(当然我们也可以直接在调度中心加任务,建议任务首先在开发中心测试,通过之后再加到调度中心)。目录介绍如图所示,开发中心有两个文件夹。分别是个人文档、共享文档。这两个文件夹不允许删除。个人文档提供给账户登录者使用的,私人目录可以在这里创建,执行任务时的用户,以创建者为准共享文档文件夹内的脚本对所有用户可见,执行时任务的用户以实际的登录者...

2018-12-29 11:30:09 3938

原创 赫拉(hera)分布式任务调度系统之项目启动(二)

创建表克隆hera暂时还未开源 后面补上。当使用git把hera克隆到本地之后,首先在hera/hera-admin/resources目录下找到hera.sql文件,在自己的数据库中新建这些必要的表,并插入初始化的数据。克隆到本地后,即可使用maven的打包命令进行打包mvn clean package -Dmaven.test.skip -Pdev打包后可以进入hera-admi...

2018-12-22 11:25:00 6949 1

原创 赫拉(hera)分布式任务调度系统之架构,基本功能(一)

前言在大数据平台,随着业务发展,每天承载着成千上万的ETL任务调度,这些任务集中在hive,shell脚本调度。怎么样让大量的ETL任务准确的完成调度而不出现问题,甚至在任务调度执行中出现错误的情况下,任务能够完成自我恢复甚至执行错误告警与完整的日志查询。hera任务调度系统就是在这种背景下衍生的一款分布式调度系统。随着hera集群动态扩展,可以承载成千上万的任务调度。它是一款原生的分布式任务调...

2018-12-20 17:14:38 13076 4

原创 关于如何在 Grafana 绘制 Apache Hudi Metrics 仪表盘的教程

对许多监控组件都支持metrics推送,如JMXDatadogPrometheus等等。具体可以进入查看。本文主要叙述下如何将接入Prometheus,开发人员通过对监控指标的观察能够预判可能出现的问题,从而对潜在的不确定因素进行优化,使我们的数据湖任务运行更加健康。

2023-02-20 11:14:26 630 1

原创 基于Apache Hudi 和 Apache Spark Sql 的近实时数仓架构之宽表建设

无论是在lamda架构还是kappa架构中,实时计算通常是使用flink+mq来实现的,而在这些场景中涉及到多张表join时,一般我们的使用方法是多张流表join,或者流表维表的方式join。但无论是那种方式都会存在一些问题,比如窗口开的过小,数据晚到导致数据丢失。窗口开的过大,内存占用过高,成本高,有被打爆的风险。上篇文章介绍了我们使用做的近实时数仓架构,在这里主要讲下在近实时数仓建设时遇到多表join怎么以宽表部分列更新的方式解决离线数仓高延迟join。

2023-01-10 16:17:17 2540 4

原创 基于 Apache Hudi 和 Apache Spark Sql 的近实时数仓架构分享

在大数据的计算场景中,根据数据的延迟情况,数据的时效性一般分为离线、准实时、实时。离线计算一般是以天(T)为界限,比如离线场景最多的就是T-1计算,也就是今天计算昨天产生的数据。准实时计算一般以小时(H)为界限,比如H-1的计算,即当前小时处理上个小时的数据,当然某些业务场景下也有(0.5H-1)计算的存在。而实时计算一般是以秒为界限,即数据的延迟最大粒度为秒级。对于离线和准实时计算,我们可以在调度系统中通过不同的调度周期实现,而实时计算通常需要一个常驻的任务来进行。

2022-11-04 10:16:47 971

原创 【Apache Hudi】一种基于增量日志文件数的压缩策略

Hudi 提供了一种新的表类型:MOR 表。该表在每次的 upsert 操作时,并不会实时的和基础数据文件进行合并,而是生成新的增量日志文件,而增量文件和基础文件的合并就叫做压缩(compaction)。所以当一个读操作读取 MOR 表时,此时会读取该表的基础数据文件和所有的增量日志文件,然后进行一个合并操作(比如根据主键聚合取更新时间最新的那条数据),最后将合并后的结果返回给终端。

2022-09-21 17:19:32 816

原创 数据准备之日志采集发展历程

大家都听说过大数据计算,可能大家没想过大数据计算的数据来源自哪里呢?是怎么被抽取到数据仓库的呢?实际上数仓/数据湖的数据主要来源于日志、业务数据、第三方接口、 和 等其它存储。大数据这边有专门的数据集成工具(类似:,,,),就像一只八爪鱼把各种数据采集到大数据的数据仓库来。由于我们公司的日志数据在国外分散于多个可用区,采集日志也就不能使用一些开源的方案。在这里由我给大家简单介绍下我们公司大数据的数据准备之日志采集的发展历程。应该是在 年之前,日志采集方式还是应用使用指定的 配置文件,该配置除了指定日志

2022-07-04 15:53:57 432

原创 Apache Hudi 数据湖概述

前言介绍本文之前,先给大家说一些简单的大数据概念。在大数据体系中,我们常用的存储是 HDFS(Hadoop Distributed File System),常用的计算是 map-reduce、spark、flink。对于 HDFS(Hadoop Distributed File System),是一个分布式的文件系统,数据平台的所有数据都存储在里面,最佳的使用实践是:一次写入,多次读取。所以大数据的计算基本上都是批处理计算(对有界的、确定数据范围的数据进行计算,不具备实时性),也就是 T-1 的计算,T

2022-04-02 11:15:15 2873

原创 spark剖析:spark读取parquet文件会有多少个task

前言做大数据开发的肯定都知道小文件的弊端读取阶段:spark在读取文件时会根据文件的数量以及文件的大小来切分文件生成task。一般 task 数是大于等于文件数的,如果都是小于128M的文件就是等于文件数。小文件越多,task数越多,单个task处理的数据量就少,如果并行度不够会导致查询数据过慢。写入阶段:如果你的数据是存储到类似于cosn、oss、s3等对象存储中,spark 最后移动文件的rename阶段如果出现大量的小文件,性能低的会让你疯掉(毕竟 rename 在这些对象存储底层分两步 co

2021-06-19 16:33:03 3432 8

原创 定时任务的实现原理:时间轮算法

前言最近在思考实现定时任务的几种方式,比如 quartz,delay queue,scheduleThreadPool,时间轮。在对比的同时,也了解了下其简单原理,在这里描述下我对时间轮算法实现定时任务的理解。时间轮定时使用方式 @Test public void test3() throws InterruptedException { DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-d

2021-04-15 09:51:40 7908 2

原创 深入剖析 Delta Lake: MySQL CDC 实战

前言在初建大数据平台时,我想大家都遇到过这样一个需求,mysql 的数据如何同步到 hdfs 中供数仓分析使用在早期,业务可能对实时性的要求还不高,大家的计算也都是 T+1 的离线计算,当然也可能有 H+1 的准实时计算。大家的选型可能是 sqoop、datax 等工具。此时只需要在离线调度平台上配置每天/每小时拉取 mysql 数据同步到 hive 的任务即可。但该方式也有一些弊端,如:实时性较差全量抽取、尤其是每小时一次的抽取对 mysql 的压力很大...

2020-11-06 17:45:12 1707 5

原创 hera源码剖析:一次任务触发的执行流程

文章目录触发任务work端master端run方法在 hera 中,任务被触发的方式有多种,比如分析师在前端手动执行触发、定时任务触发、依赖任务触发、重跑任务触发、信号丢失的触发等等。但是不管是哪种触发方式最后的入口都是在 Master#run 方法(开发中心任务触发接口在 Master#debug )。这里就讲一下手动执行的任务触发流程触发任务在最新版本中,任务手动触发类型分为手动执行、手动恢复、超级恢复三种,具体区别就不再赘述,可以通过 hera 操作文档查看,这里以手动恢复为例当我们点

2020-09-30 17:30:02 875

原创 hera源码剖析:项目启动之分布式锁

文章目录前言获取当前机器ip分布式锁知识点总结master服务work服务work连接master前言本文章主要是为了让使用者能够更加了解 hera 的原理,并且能够在之基础上进行改进所进行。hera 是一款分布式任务调度与开发平台,具体不再描述,开源地址:https://github.com/scxwhite/hera获取当前机器ip在 hera 中,有一些静态代码块,这里只说一个很重要的部分,WorkContext 类中有这样一部分代码 static { host

2020-09-29 17:41:53 672

原创 深入剖析 Delta Lake: schema validation

介绍Delta Lake 是 Spark 的开源存储层,可提供 ACID 事务和其他数据管理功能,用于机器学习和其他大数据工作,其通过写和快照隔离之间的乐观并发控制,在写入数据期间提供一致性的读取,从而为构建在 HDFS 和云存储上的数据湖(data lakes)带来可靠性。Delta Lake 内置数据版本控制,方便读取历史数据以及版本回滚。Spark 的每一个 DataFrame 都包含一个 schema,用来定义数据的形态,例如数据类型、列信息以及元数据。在 Delta Lake 中,表的 s

2020-09-11 15:56:47 684

原创 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 4672 6

原创 spark sql 数据倾斜案例实操

最近数仓同学有个离线任务跑不动了,问题是总是出现MetadataFetchFailedException 的异常,最后导致任务被 kill。于是就帮忙解决一下。问题排查查看了下该任务的历史执行记录(如下图),其实最近几天一直在失败,只是在重试后偶尔会成功一下查看具体的报错日志,是shuffle 数据丢失导致的任务失败,已经询问过该同事,已经对该 spark sql 任务进行了多次调参,executor-memory 很大了任务也是同样的错误。AY.hera.spark.conf=--master

2020-08-18 21:02:17 3820 3

原创 记一次 spark rdd 写数据到 hbase 报 NPE 的问题排查

文章目录前言问题排查前言最近我们的 EMR 集群要从 spark2.3.2 升级到 spark2.4.3 来解决 spark 小文件多的问题。但是在升级后发现之前 spark rdd 写 hbase 正常的任务报错了,花费一番功夫才解决,所以写篇文章记录下。首先看下报错内容CONSOLE# 20/06/09 14:26:48 ERROR Start: 同步数据异常CONSOLE# java.lang.NullPointerExceptionCONSOLE# at org.apache.

2020-06-10 15:35:32 964

原创 使用Tomcat+腾讯云主机把你的项目发布到外网上

随便说说:想必一些学习做网页的同学和我有同样的想法,把自己的项目发布到外网上,让别人也能看到。既然有了想法,那就不能想想而已,要努力去实现它。 在发布我们的java web项目时,我们使用http://localhost:8080或者http://127.0.0.1:8080在本地主机上访问我们的项目。如果想将其发布到外网,让别人也能看到,要用到地址映射工具(因为我们的电脑都使用的局域网,大部分都

2020-05-08 14:06:05 19863 9

原创 记一次大数据跨区域流量排查及修复

最近公司在降成本,发现了欧州、美国区两个区每天存在 300$ 的跨区流量费用,经过运维同学定位后发现绝大部分流量在 emr 机器上。于是排查就开始了。前言首先附上我们的任务调度架构我们大数据计算使用的是 AWS 的 EMR(Elastic MapReduce) 集群,由于 AWS EMR 天然支持读写 S3,并且 S3 相比较硬盘尤其便宜,所以我们的离线数据都是存储在 S3。即:计算...

2020-04-22 20:05:51 1045

原创 关于dubbo 占位符无法解析问题

不知道大家有没有遇到过,你要开发一个新应用要使用 dubbo 、 apollo 等组件,在集成的过程中发现 dubbo 配置文件的占位符无法替换,wtf,配置明明和以前的项目一样,为啥就不行了。我前两天也遇到了这个问题,就一起来分析下。文章目录简单配置介绍问题复现排查apollo排查PropertySourcesPlaceholderConfigurer排查dubbo思考验证想法两个项目为什...

2020-03-28 17:16:29 4658 12

原创 presto sql输入表、输入字段、limit、join操作解析

前言一段时间没有写文章了,写下最近做的事情。目前我们这边有一个metabase 查询平台供运营、分析师、产品等人员使用,我们的查询都是使用 presto 引擎。并且我们的大数据组件都使用的是 emr 组件,并且涉及到中国、美西、美东、印度、欧洲、西欧等多个区域,表的权限管理就特别困难。所以就需要一个统一的权限管理来维护某些人拥有那些表的权限,避免隐私的数据泄漏。于是我们就需要一款sql解析工具...

2020-03-18 20:50:20 5131

原创 Flink实战之StreamingFileSink如何写数据到其它HA的Hadoop集群

前言我们公司使用的集群都是 EMR 集群,于是就分别创建了一个 flink 集群专门用户实时计算,一个 hadoop 集群专门用于 spark、hive 的离线计算。两个集群是完全隔离的。但是有一些实时数据的采集需求,需要把数据写入到我们做离线计算的集群,有人说我只需要在 StreamingFileSink 需要传入的hdfs 路径前加上离线集群的 ip 就好了,比如:hdfs://otherI...

2019-12-03 21:16:06 4926 36

原创 记一次JAVA使用ProcessBuilder执行Shell任务卡死问题分析

背景最近由于某些原因需要把一些原本 location 在 oss (阿里云云对象存储)上的 hive 数据迁移到cosn(腾讯云对象存储)。目前一直在增量进行同步,在迁移之前需要进行数据的对比。至于对比的方法计划有两种,一种是对比 oss 和 cosn 对应文件下的文件所占磁盘空间大小,即使用 hadoop fs -du -s -h 路径 命令,然后对比相应表 location 的数据大小是否一...

2019-11-20 21:03:04 6057

原创 hdu2191

#include <stdio.h>#include <string.h>#include <algorithm>using namespace std;int main(){ int ncase,p[105],w[105],c[105],dp[105]; scanf("%d",&ncase); while(ncase--)...

2019-10-11 17:16:29 2460

原创 hive访问不在同一集群的hbase表数据

最近有个需求,有一些数据会实时写入到 hbase,但是又需要在 hive 中计算这些数据,最后把结果同步到 mysql。如果对于 hbase 与hive 在同一个集群,是很简单的操作,直接在 hive 中创建一个 hbase 的外部映射表就好了。但是我这边有些不一致,我们这边 hbase 和 hive 在两个不同的集群,需要了一些额外的操作开启白名单限制由于 hbase 集群与 hive ...

2019-09-25 16:58:17 2116

原创 syntax error near unexpected token `(‘ 异常解决

问题的发现今天执行一个shell脚本时发现报错了,报错内容如下:syntax error near unexpected token `('脚本内容排查了很多遍都没有找到原因,执行的方式为 sh xx.sh然后使用 source xx.sh 执行和 bash xx.sh执行都是 ok 的。知识的了解此时就需要了解 sh source bash 执行文件的区别。首先看两张图...

2019-06-11 19:51:27 154117 4

原创 使用java在aliyun/aws创建E-MapReduce (emr)集群

背景在上个公司,我的 hera 任务调度系统是运行在本地 cdh 机器上的,并没有使用 aws/aliyun 提供的 emr 服务。所以为了使 hera 能够兼容 emr,就需要使用 java 创建 emr 集群.功能点既然要创建集群,肯定也要有等待集群创建完成、销毁集群等操作。所以功能点大概有判断集群是否已经创建过创建集群等待集群创建完成集群销毁获得集群的登录脚本集...

2019-04-10 19:59:02 972

原创 关于 mysql 的共享锁 排它锁以及锁的实现方式 行锁 间隙锁 Next-Key Lock

在 mysql 中有事务四大基本特性,隔离级别,锁类型,b+ 树等各种需要我们学习的知识,这里简单分享一下 mysql 中的锁。使用 mysql 数据库的都知道我们经常使用的数据库引擎有 MyISAM 和 InnoDB。MyISAM默认表类型,它是基于传统的 ISAM 类型,它是存储记录和文件的标准方法。不是事务安全的,而且不支持外键,如果执行大量的 select,insert时, M...

2019-02-13 16:20:59 1381 4

原创 Dubbo 源码分析之服务降级

前言关于服务降级,相信很多小伙伴都听说过或者操作过。比如最近我们在 12306 上抢票回家,明明看到剩余的有票,可就是买不到,这就是很明显的一个(读)服务降级例子。再比如双十一时我们付款时偶尔出现付款失败,重新支付,也是(限流)服务降级的一种,也有许多其它降级的例子,大家可以自行搜索。具体来说就是:当服务器压力剧增的情况下,根据当前业务情况及流量对一些服务和页面有策略的降级,以此释放服务器资源...

2019-01-24 19:49:55 730

原创 Dubbo 源码分析之线程池

文章目录前言Dubbo 线程池分类Dubbo 线程工厂线程池拒绝策略CachedThreadPoolFixedThreadPoolLimitedThreadPool前言相信学过 netty 的都知道,每一个 ChannelHandler 都是通过它的 EventLoop(I/O线程) 来处理传递给它的事件,所以至关重要的是不要阻塞这个线程,因为这会对整体的 I/O 产生负面的影响。Dubbo...

2019-01-19 14:46:25 1861

原创 Dubbo 源码分析之 SPI 详解

我使用的是dubbo2.5.3的源码,有中文注释。为了更方便的学习,可以慢慢来,等这个版本掌握差不多了就可以看更高的版本了。在Protocol接口的实现类中不存在@Adaptive注解的实现类,所以在使用Protocol protocol = ExtensionLoader.getExtensionLoader(Protocol.class).getAdaptiveExtension()这...

2019-01-18 20:09:44 845

原创 Dubbo 源码分析之自定义线程池拒绝策略(使用 Java 程序 Dump 线程堆栈信息)

最近在看dubbo源码,真的学习了很多知识,记得上次看dubbo源码是在半年前了,看到dubbo自定义的spi就看不下去了,完全看不懂。上周又看了看,顿时茅塞顿开,有时间会分享出来。废话不多说,在dubbo内部有几种线程模型,都是使用java线程池实现的,任务被拒绝后会输出堆栈信息。我们可以看它是怎么实现的。package org.apache.dubbo.common.threadpoo...

2019-01-14 11:15:10 1758

原创 Java设计模式(三)模板方法模式

模版方法:在抽象类中定义了一个模版方法,在模版方法中使用了一些该抽象类中定义的空方法,而这些空方法可以供子类实现。我们在查看源码时经常能够看到在执行一些重要的方法时,往往调用了一些看似没有什么意义的空方法。其实这就是模版方法。abstract class ThreadHolder { /** * 模版方法 * @param runnable */ ...

2019-01-09 10:59:46 450 2

原创 spark streaming被压分析

在我们使用spark-streaming处理实时数据时,通常在Dstream端的rdd操作较为耗时,此刻的实时数据还在receiver端不断的store。由于数据的处理不及时,即Processing Time &amp;amp;lt; blockInterval也就造成了数据的积压。此时就需要一种机制来解决receiver端store数据的“速率”。在spark streaming中就是被压(backpress...

2018-12-18 19:03:27 941

原创 解析一行gc日志

线上某个项目 ,启动参数-verbose:gc -XX:+PrintGCTimeStamps -XX:+PrintGCDetails -Xloggc:/opt/logs/spring-boot/gc.log在gc.log里面发现了这些gc信息315201.296: [GC (Allocation Failure) 315201.296: [ParNew: 1751390K-&gt;807...

2018-12-18 11:12:28 453

苏苏爱自由-java扫雷小游戏

参考文章:https://blog.csdn.net/su20145104009/article/details/52152514

2019-02-13

dubbo-admin-2.5.4

dubbo-admin-2.5.4dubbo-admin-2.5.4dubbo-admin-2.5.4dubbo-admin-2.5.4dubbo-admin-2.5.4

2017-12-18

锐捷破解版

锐捷客户端总是自动关闭VMware NAT Service 解决办法 破解版锐捷

2017-08-02

jquery-1.10.2.min.js

jquery-1.10.2.min.js

2017-04-01

eclipse\myeclipse字体插件

eclipse和myeclipse字体插件

2017-03-15

ftp server

FTP服务端

2017-03-06

ssh整合jar包

struts:2.3.15.3 hibernate : 3.6.10 spring: 3.2.0

2017-02-23

socketdemo

慕课网随堂练习代码

2016-12-30

Socket实例之客户端向服务端数据库上传文件UI版

2016-12-12

java版扫雷源代码+图片素材

java扫雷源代码+扫雷素材

2016-08-08

动态图片录制软件

勾选显示区域,然后选择区域,再点击开始就能开始录制,停止结束录制。最后保存就行,注意要修改一下gif图片的名称 否则无法保存的哦

2016-02-16

算法导论中文第二版

这本书全面论述了算法的内容,从一定深度上涵盖了算法的诸多方面,同时其讲授和分析方法又兼顾了各个层次读者的接受能力。各章内容自成体系,可作为独立单元学习。所有算法都用英文和伪码描述,使具备初步编程经验的人也可读懂。全书讲解通俗易懂,且不失深度和数学上的严谨性。第二版增加了新的章节,如算法作用、概率分析与随机算法、线性编程等,几乎对第一版的各个部分都作了大量修订。

2015-07-18

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除