- 博客(94)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 大数据开发-表数据波动、码值分布波动监控
经历一番推理演算,每个字段逐字分析,接着https://blog.csdn.net/hu_lichao/article/details/110358607 前面的理论,本篇对前面的监控做了更进一步的设计产出,看完绝对不会浪费您的时间。设计摘要:任务执行、监控和报警从设计上是可以完全分开的,分开可以让任务执行尽可能只做任务执行的事情,监控可以根据多种监控规则来进行数据统计,数据分布,而报警则专注于如何根据监控的结果进行自定义灵活地报警。其中在设计上可以以监控为主体,任务执行和报警可以依据需求来定制,从而更
2020-12-09 00:53:38
547
1
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 基于done文件的数据监控-理论
1 问题除了像Alibaba 的 Dataworks 外,很难有另外的公司能够把数据调度,数据监控,数据血缘,元数据管理等作为一体化的平台了,包括我司在内的一些厂,往往把这些建设独立开来,由不同的团队负责,其中数据平台调度功能是绝大多数公司都有的基础平台,但是调度的功能程度就各不同了,下面的问题当作抛砖引玉,指出在生产环境中常遇到的问题,如果后续有产出,后面尽量开源一些代码出来,贴到本博客最后面。监控从大的层面来说有两种,一种是监控用来拦截的,即有依赖的,一种只是用来报警和分析的。由于依赖接入源较多,
2020-11-30 00:11:17
435
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 基于vue(element ui) + ssm + shiro 的权限框架
基于vue(element ui) + ssm + shiro 的权限框架。领悟,理解,消化它!引言心声现在的Java世界,各种资源很丰富,不得不说,从分布式,服务化,orm,再到前端控制,权限等等玲琅满目,网上有句话说,语言框架迭代太快了,我学不动了,不如回去搬砖吧,可是天这么热,砖烫手啊。程序搞起来很容易,就是有点头冷。 程序员的两大世界难题...
2018-08-15 18:00:53
14519
9
原创 Java设计模式
九个OO原则OO原则是目的、设计模式是手段书中概念解释组合composition:两个对象组合在一起=HAS A的关系在设计模式中。所谓的“实现一个接ロ”并不ー定表示“写一个类,并利用immplement关健词来实现基个java接口“。实现一个接ロ”泛指“实现个超类型(可以是类或接口)设计原则:多用组合,少用继承继承:某些方法一部分子类有一部分没有时会出错接口:可以解决上面的问题,但是造成代码无法复用设计原则:把会变化的部分封装起来,让其他部分不受影响把fly和quark从Duck类中
2022-03-06 18:52:23
515
原创 大数据开发-Go-新手常遇问题
真正在工作中用Go的时间不久,所以也作为新手,总结了一些常见的问题和坑Go 中指针使用注意点// 1.空指针反向引用不合法package mainfunc main() { var p *int = nil *p = 0}// in Windows: stops only with: <exit code="-1073741819" msg="process crashed"/>// runtime error: invali
2021-08-08 14:09:19
243
原创 大数据开发--Zookeeper实现简易配置中心
大数据开发——Zookeeper实现简易配置中心为什么使用ZookeeperZookeeper是一个分布式的,开放源码的分布式协调服务,常在Ha架构,比如Hadoop、Hbase中使用,它是一个分布式应用提供一致性服务的软件,提供的功能有:配置维护,域名服务,分布式同步,注册中心等,作为配置中心,需要的就是一个稳定的全局一致的配置化中心,而Zk本身提供的原语正好可以满足需求。1.实现思路1.创建要给Web项目,将数据库连接池信息交给Zookeeper配置中心来管理,即把配置参数放到Zk的节点信息中.
2021-08-08 12:58:17
548
原创 大数据开发-Go-数组,切片
new()和make的区别二者看起来没什么区别,但是他们的行为不同,分别适用于不同的类型new (T) 为每个新的类型 T 分配一片内存,初始化为 0 并且返回类型为 * T 的内存地址:这种方法 返回一个指向类型为 T,值为 0 的地址的指针,它适用于值类型如数组和结构体;它相当于 &T{}。make(T) 返回一个类型为 T 的初始值,它只适用于 3 种内建的引用类型:切片、map 和 channelbytes包类型 []byte 的切片十分常见,Go 语言有一个 bytes
2021-06-14 23:28:42
8880
3
原创 大数据开发-Flink-窗口全解析
Flink窗口背景Flink认为Batch是Streaming的一个特例,因此Flink底层引擎是一个流式引擎,在上面实现了流处理和批处理。而Window就是从Streaming到Batch的桥梁。通俗讲,Window是用来对一个无限的流设置一个有限的集合,从而在有界的数据集上进行操作的一种机制。流上的集合由Window来划定范围,比如“计算过去10分钟”或者“最后50个元素的和”。Window可以由时间(Time Window)(比如每30s)或者数据(Count Window)(如每100个元素)驱动
2021-05-31 00:19:18
313
原创 大数据开发-Flink-1.13新特性
介绍大概4月,Flink1.13就发布了,参加 了Flink1.13 的Meetup,收获还是挺多,从大的方面讲就是FlingSql的改进和优化,资源调度管理方面的优化,以及流批一体Flink在运行时与DataStream API的优化,另外就是State backend 模块的优化,本篇文章既是当时做的笔记,又是在后续查阅官网等做的补充,Flink 的一个主要目标取得了重要进展,即让流处理应用的使用像普通应用一样简单和自然。Flink 1.13 新引入的被动扩缩容使得流作业的扩缩容和其它应用一样简单,
2021-05-22 23:38:09
733
1
原创 大数据开发-Flink-CEP的主要原理和使用
总结就是:输入-规则-输出就是单事件的自关联,其实匹配的也是时间序列的定义基础(1)定义 复合事件处理(Complex Event Processing,CEP)是一种基于动态环境中事件流的分析技术,事件在这里通常是有意义的状态变化,通过分析事件间的关系,利用过滤、关联、聚合等技术,根据事件间的时序关系和聚合关系制定检测规则,持续地从事件流中查询出符合要求的事件序列,最终分析得到更复杂的复合事件(2)特征CEP的特征如下: 目标:从有序的简单事件流中发现一些高阶特征; 输入:一个或多个简单事
2021-05-17 01:04:54
587
原创 大数据开发-Flink-数据流DataStream和DataSet
Flink主要用来处理数据流,所以从抽象上来看就是对数据流的处理,正如前面大数据开发-Flink-体系结构&& 运行架构提到写Flink程序实际上就是在写DataSource、Transformation、Sink.DataSource是程序的数据源输入,可以通过StreamExecutionEnvironment.addSource(sourceFuntion)为程序添加一个数据源Transformation是具体的操作,它对一个或多个输入数据源进行计算处理,比如Map、Fla.
2021-05-10 01:31:52
386
2
原创 大数据开发-Go-Go中的方法
我们知道Go中没有继承,接口的用法也与Java中的用法大相径庭,很多适合,我们需要使用OO的思想来组织我们达到项目,但是将Java的oo思想在Go中会比较痛苦,Go中的方法和面向对象的类似,但是定义上也是很多初学者不好理解的,比如方法的定义竟然在结构体外部,组装起来看起来也很随意,其实Go只是有面向对象特性,其实不算是面向对象语言。方法Go支持一些面向对象编程特性,方法是这些所支持的特性之一。 本篇文章将介绍在Go中和方法相关的各种概念方法声明在Go中,我们可以为类型T和*T显式地声明一个方法,其中
2021-05-03 01:12:15
304
原创 大数据开发-Go 基础入门-包,函数,通道
包引用和包说明一个代码包可以由若干Go源文件组成。一个代码包的源文件须都处于同一个目录下。 一个目录(不包含子目录)下的所有源文件必须都处于同一个代码包中,亦即这些源文件开头的package pkgname语句必须一致。 所以,一个代码包对应着一个目录(不包含子目录),反之亦然。 对应着一个代码包的目录称为此代码包的目录,但是规定了对于Go官方工具链来说,含有internal目录名的代码包被视为一个特殊的代码包,它只能被此internal目录的直接父目录(和此父目录的子目录)中的代码包所引入。 比如,代码
2021-04-26 01:51:50
325
原创 大数据开发-Go-初始Go && 常见特点
Go提供了几种基本但非必需的类型,比如切片,接口和通道。Go简单不是它的主要卖点,做为一门静态语言,Go却和很多动态脚本语言一样得灵活是Go的主要卖点,节省内存、程序启动快和代码执行速度快合在一块儿是Go的另一个主要卖点,Go是一门编译型的和静态的编程语言。 Go诞生于谷歌研究院内置并发编程支持:使用协程(goroutine)做为基本的计算单元。轻松地创建协程。使用通道(channel)来实现协程间的同步和通信。内置了映射(map)和切片(slice)类型。支持多态(polymor
2021-04-18 19:39:13
547
原创 大数据开发-实时范围-统计系统设计
1.背景在大数据生产环境下,往往需求是越快越好,对于实时系统开发,需求往往是一个状态值,比如多少次,多少个,而对于离线数据开发,因为不是实时,所以可以开发各种复杂需求,另外一种基于Lambda架构或者Kappa架构的,往往场合时实时统计系统,实时统计系统在前面Lambda架构的设计中已经谈过,本文时另外一种更复杂的应用场景,对于Lambda架构中产生的流水,要尽可能快地满足范围查询,什么意思呢,Lambda架构中,虽说可以查询一个范围统计的流水,但是为了尽可能地快,将离线计算结果是count,count(
2021-04-11 23:14:45
489
原创 大数据开发-职位分类
如何跟一个非相关性的人解释你是做大数据的,你是做大数据的哪一部分工作,从求职者角度,如何从jd描述中估摸大概率做哪一块,从猎头角度,如何从一份简历中看出你更匹配哪个jd1.相关技术大数据开发的技术名词无非是下面几种,Hadoop,Hive,Spark,Kafka,Sqoop,Flink,Oozie,Hbase,hue但是大数据架构根据每个厂的基础建设不同,可能会有不同的方案,但是总的流程是大致一致的涉及的语言一般是:Java, Scala, Python, Go 其中前两者是必须掌握的主语言,后
2021-04-05 01:06:28
1050
1
原创 大数据开发-Flink-体系结构 && 运行架构
Flink体系结构以及主要组成像大多数大数据框架一样,Flink是非常经典的Master/Slave结构实现,JobManager是Master,TaskManager是Slave。JobManager处理器(Master)协调分布式执行,它们用来调度task,协调检查点(CheckPoint),协调失败时恢复等,Flink运行时至少存在一个master处理器,如果配置高可用模式则会存在多个master处理器,它们其中有一个是leader,而其他的都是standby。JobManager接收的应用包括
2021-03-28 23:14:08
253
2
原创 时间管理-我的工作流-操作系统简介
1.问题像一些效率工具,比如滴答清单,Notion/我来,Xmind,Cubox等这些,差不多都有两年以上的使用基础,但是苦于一直还是沦为了工具人,而不是用工具解决问题的人,像Notion的Database, 维格表/飞书表格的很好解决了信息系统数据冗余的却没有关联的问题,Cubox解决了截切 收藏的问题,滴答清单在ToDo方面很好地指引了我,另外在我来这款工具上,我也花了很多心力做了知识系统,其他还有Flomo,可以解决Memo无压力记录,但是慢慢地也发现很多问题,比如多个系统的交互关联问题,这是一个头
2021-03-21 22:49:29
282
原创 大数据开发-数据表监控-实现
1.简介大数据开发-表数据波动、码值分布波动监控&& 报警,是关于理论和设计部分,初步计算已经写完,管理平台部分,后续完善,本文主要针对模块设计部分,整体模块实现上是离线数据源的异步模块,分为指标跑批模块,监控报警模块,平台管理模块,指标跑批模块和监控报警模块主要是基于离线数据的表的通讯,即不是耦合的架构,分别是两个例行的任务,看下面的图,2.说明其中表设计了五张表,分别是指标跑批记录表,报警跑批记录表,和mysql表监控配置表,报警配置表,分布字段配置表,指标跑批和监控跑批不直接.
2021-03-21 22:46:54
584
原创 大数据开发-Flink-Flink简介和入门
Flink作为大数据生态中重要的一个组件,现在在实时流处理方面占据着很重要的地位,其实时流处理方面支持基于事件的时间流处理方式,另外也推荐流批一体化,而现在处理实时数据较常用的架构 Flink + Kafka,当然市面上的流处理引擎不止Flink一种,其他的比如Storm、SparkStreaming、Trident等,实际应用时如何进行选型,下面是一些建议参考流数据要进行状态管理,选择使用Trident、Spark Streaming或者Flink消息投递需要保证At-least-once(至少一
2021-03-21 22:45:10
260
原创 大数据开发-Flink-Flink简介和入门
Flink作为大数据生态中重要的一个组件,现在在实时流处理方面占据着很重要的地位,其实时流处理方面支持基于事件的时间流处理方式,另外也推荐流批一体化,而现在处理实时数据较常用的架构 Flink + Kafka,当然市面上的流处理引擎不止Flink一种,其他的比如Storm、SparkStreaming、Trident等,实际应用时如何进行选型,下面是一些建议参考流数据要进行状态管理,选择使用Trident、Spark Streaming或者Flink消息投递需要保证At-least-once(至少一
2021-03-21 22:42:12
366
原创 大数据开发-深入理解大数据Lambda架构
1.大数据处理的挑战缕一缕it的发展,第一阶段是各大系统各大平台的出现,解决的是线下搬到线上的效率问题,而下一个阶段是数据时代,处理这些各大平台积累的数据,积累的数据,一般比较大,大数据做的是什么,大规模的数据处理,主要是离线为主,所以就出现了hadoop的三大基础组件,分别解决大数据存储,计算,大表存储,这个阶段基本解决了大数据的计算,也即可以编写出程序,完成大数据的大规模运算,后面又出现了实时处理,第一个出现的就是storm,可以处理实时的单个数据,这样就展现了最新的数据,但是同时也看到了,如果既想要
2021-03-14 23:35:32
285
3
原创 大数据实战-Spark实战技巧
1.连接mysql--driver-class-path mysql-connector-java-5.1.21.jar在数据库中,SET GLOBAL binlog_format=mixed;2.Spark中 使用Hive的udf同样使用—jars 才行3.Spark jupyter使用https://www.jb51.net/article/163641.htmhttps://my.oschina.net/albert2011/blog/754174使用jupyter-notebook
2021-03-07 22:49:41
147
原创 大数据实战-Hive-技巧实战
1.union 和 union all前者可以去重select sex,address from test where dt='20210218' union all select sex,address from test where dt='20210218';+------+----------+--+| sex | address |+------+----------+--+| m | A || m | A
2021-03-07 19:46:02
99
原创 linux-基础命令-实战技巧
linux 命令大全:https://www.runoob.com/linux/linux-command-manual.html1.xargs常用xargs -l1 -P5 -i 行,线程,-i命名2.wait等待等待主脚本内的所有进程跑完,才继续跑function await() { for pid in $(jobs -p) do wait $pid || exit 1 done}3.查看目录查看目录大小之du(使用了多少)du -sh 目录占用大小df -h
2021-03-07 19:44:53
140
原创 大数据实战-Hive-技巧实战
1.union 和 union all前者可以去重select sex,address from test where dt='20210218' union all select sex,address from test where dt='20210218';+------+----------+--+| sex | address |+------+----------+--+| m | A || m | A
2021-03-07 19:43:16
68
原创 大数据开发-Spark-Streaming处理数据到mysql
前面一篇讲到streamin读取kafka数据加工处理后写到kafka数据,大数据开发-Spark-开发Streaming处理数据&& 写入Kafka是针对比如推荐领域,实时标签等场景对于实时处理结果放到mysql也是一种常用方式,假设一些车辆调度的地理位置信息处理后写入到mysql1.说明数据表如下:create database test;use test;DROP TABLE IF EXISTS car_gps;CREATE TABLE IF NOT EXISTS car.
2021-02-27 23:36:09
308
原创 开发工具-scala处理json格式利器-json4s
1.为什么是json4s从json4s的官方描述At this moment there are at least 6 json libraries for scala, not counting the java json libraries. All these libraries have a very similar AST. This project aims to provide a single AST to be used by other scala json libraries.
2021-02-22 00:53:32
662
原创 Hive-常见调优方式 && 两个面试sql
Hive作为大数据领域常用的数据仓库组件,在设计和开发阶段需要注意效率。影响Hive效率的不仅仅是数据量过大;数据倾斜、数据冗余、job或I/O过多、MapReduce分配不合理等因素都对Hive的效率有影响。对Hive的调优既包含对HiveQL语句本身的优化,也包含Hive配置项和MR方面的调整。从以下三个方面展开:架构优化参数优化SQL优化1.架构方面执行引擎方面针对公司内平台的资源,选择更合适的更快的引擎,比如MR、TEZ、Spark等,如果选择是TEZ引擎,可以在优化器时候开启向量化
2021-02-22 00:53:02
446
原创 算法 - 链表操作思想 && case
算法- 链表操作题目套路 前面这一篇文章主要讲链表操作时候的实操解决方式,本文从本质讲解链表操作的元信息,学完后,再也不怕链表操作题目了。1.链表的基本操作链表的基本操作无外乎插入,删除,遍历插入的化,要考虑到前驱节点和后继节点,记住下面的伪代码nex = 当前节点.next当前节点.next = 插入的指针插入指针.next = tmp 对于删除,是否会觉得需要备份一下next的指针,答案是不用,执行语句是先取右边的值存起来然后赋值给左边的,所以直接下面一句话即可cur.next = c.
2021-02-22 00:52:12
298
原创 大数据开发--Hbase协处理器案例
大数据开发--Hbase协处理器案例1. 需求描述在社交网站,社交APP上会存储有大量的用户数据以及用户之间的关系数据,比如A用户的好友列表会展示出他所有的好友,现有一张Hbase表,存储就是当前注册用户的好友关系数据,如下需求使用Hbase相关API创建一张结构如上的表删除好友操作实现(好友关系双向,一方删除好友,另一方也会被迫删除好友)例如:uid1用户执行删除uid2这个好友,则uid2的好友列表中也必须删除uid12.需求分析实现2.1 考虑到需求是个双向删除,第一想法是客
2021-02-15 16:11:11
313
原创 大数据开发-linux下常见问题详解
1.user ss is currently user by process 3234问题原因:root --> ss --> root 栈递归一样解决方式:exit 退出当前到ss再退出到root 然后执行命令即可。2.列出某目录下的目录而不是文件参考:ls --https://jingyan.baidu.com/article/e8cdb32b100dd537052badc5.html3.登录用户与当前用户whoami 当前用户who am i 登录用户其中有root权限才
2021-02-14 19:45:22
126
原创 大数据开发-linux后台运行,关闭,查看后台任务
在日常开发过程中,除了例行调度的任务和直接在开发环境下比如Scripts,开发,很多情况下是shell下直接搞起(小公司一般是这样),看一下常见的linux后台运行和关闭的命令,这里做一个总结,主要包括:fg、bg、jobs、&、nohup、ctrl+z、ctrl+c 命令等一、&加在一个命令的最后,可以把这个命令放到后台执行,如watch -n 10 shtest.sh& #每10s在后台执行一次test.sh脚本回到顶部二、ctrl + z可以将一个正在前台执行的
2021-02-14 19:43:02
172
原创 大数据开发-从cogroup的实现来看join是宽依赖还是窄依赖
前面一篇文章提到大数据开发-Spark Join原理详解,本文从源码角度来看cogroup 的join实现1.分析下面的代码import org.apache.spark.rdd.RDDimport org.apache.spark.{SparkConf, SparkContext}object JoinDemo { def main(args: Array[String]): Unit = { val conf = new SparkConf().setAppName(this.get
2021-02-12 21:50:39
163
原创 大数据开发-Spark-初识Spark-Graph && 快速入门
1.Spark Graph简介GraphX 是 Spark 一个组件,专门用来表示图以及进行图的并行计算。GraphX 通过重新定义了图的抽象概念来拓展了 RDD: 定向多图,其属性附加到每个顶点和边。为了支持图计算, GraphX 公开了一系列基本运算符(比如:mapVertices、mapEdges、subgraph)以及优化后的 Pregel API 变种。此外,还包含越来越多的图算法和构建器,以简化图形分析任务。GraphX在图顶点信息和边信息存储上做了优化,使得图计算框架性能相对于原生RDD实现
2021-02-07 23:20:29
283
原创 大数据开发-Spark-开发Streaming处理数据 && 写入Kafka
1.Spark Streaming简介Spark Streaming从各种输入源中读取数据,并把数据分组为小的批次。新的批次按均匀的时间间隔创建出来。在每个时间区间开始的时候,一个新的批次就创建出来,在该区间内收到的数据都会被添加到这个批次中。在时间区间结束时,批次停止增长,时间区间的大小是由批次间隔这个参数决定的。批次间隔一般设在500毫秒到几秒之间,由开发者配置。每个输入批次都形成一个RDD,以 Spark 作业的方式处理并生成其他的 RDD。 处理的结果可以以批处理的方式传给外部系统,Spark S
2021-02-07 23:18:21
558
原创 大数据开发-Sql-涉及迭代数据的sql问题处理思路
在前面一篇里面,算法-一个经典sql 题和一个Java算法题 大数据开发-Hive-常用日期函数&&日期连续题sql套路有一道经典sql题目,解决连续问题,本文继续总结关于连续性的套路,来自于实际生产项目的问题,本文略去其他不重要信息字段,来从更深地层次解决问题,由于在生产中,常常是理解需求,转换需求,让需求拆解为更通用的处理方式,同时从解决难题中提高自己,解决这些问题,也是快乐的源泉之一????。1.生产问题原始描述关于给用户打标签的问题,对于标签的数据源在实际环境下几乎是覆盖全部门甚
2021-02-07 23:14:25
294
原创 大数据开发-Spark-拷问灵魂的5个问题
1.Spark计算依赖内存,如果目前只有10g内存,但是需要将500G的文件排序并输出,需要如何操作? ①、把磁盘上的500G数据分割为100块(chunks),每份5GB。(注意,要留一些系统空间!) ②、顺序将每份5GB数据读入内存,使用quick sort算法排序。 ③、把排序好的数据(也是5GB)存放回磁盘。 ④、循环100次,现在,所有的100个块都已经各自排序了。(剩下的工作就是如何把它们合并排序!) ⑤、从100个块中分别读取5G/100=0.05 G入...
2021-01-31 15:51:16
180
原创 大数据开发-Spark Join原理详解
数据分析中将两个数据集进行 Join 操作是很常见的场景。在 Spark 的物理计划阶段,Spark 的 Join Selection 类会根据 Join hints 策略、Join 表的大小、 Join 是等值 Join 还是不等值以及参与 Join 的 key 是否可以排序等条件来选择最终的 Join 策略,最后 Spark 会利用选择好的 Join 策略执行最终的计算。当前 Spark 一共支持五种 Join 策略:Broadcast hash join (BHJ)Shuffle hash
2021-01-31 15:41:33
465
原创 大数据开发-Spark-RDD实操案例-http日志分析
1.在生产环境下,如何处理配置文件 && 表的数据处理配置文件,或者配置表,一般是放在在线db,比如mysql等关系型数据库,或者后台rd直接丢给你一份文件,数据量比起整个离线数据仓库的大表来说算很小,所以这种情况下,一般的做法是将小表,或者小文件广播出去,那么下面一个例子来看,广播表的使用解决ip地址映射问题数据地址:链接:https://pan.baidu.com/s/1FmFxSrPIynO3udernLU0yQ提取码:hell2.日志分析案例12.1 数据说明http.lo
2021-01-31 15:38:21
1082
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人