大数据
文章平均质量分 82
IT大狮兄
数据开发,数据治理,数据分析,架构设计
展开
-
构建工具之Maven的使用(二)
一、前言上篇文章构建工具之maven的使用(一)讲了关于maven配置的一些技巧,通过对maven相关的配置达到我们想要的目的。今天这篇就讲一些关于命令行的命令技巧,通过敲命令来使用maven提供的一些功能。大狮兄想说的是今天讲的有些内容通过idea的maven插件操作同样能达到目的,但大狮兄习惯了各种敲键盘,所以今天的命令行技巧都是手敲命令的。放开双手,让它尽情的在键盘上翩翩起舞吧!二、命令行技巧1. 构建jar包到本地仓库命令行技巧开发中我们会自定义开发或修改某些jar包,同时其他工程会依赖这个原创 2021-08-20 08:02:26 · 78 阅读 · 0 评论 -
如何远程调试自定义开发的Flume应用
一、前言Flume作为当下最流行的大数据采集组件之一。其本身拥有分布式/高可靠/高可用等优点,但相比较于Flink/Spark/Kafka等大数据组件,其对于本地调试的功能支持度并不高,如果我们没有掌握Flume的远程调试要领,就只能不停的进行打日志,部署,打日志,部署这样低效的工作,而这对于程序员来说无异于折磨。所以今天小编就和大家一起来探究Flume的远程调试方法。二、环境准备flink官网下载上传服务器并解压。开发自定义Source,这里以简单的读取mysql表数据为demo,部分代码原创 2021-08-16 07:18:24 · 314 阅读 · 2 评论 -
ElasticSearch版本控制--java实现
一、前言最近工作中有这样一个ElasticSearch(以下简称ES)写入的场景,Flink处理完数据实时写入ES。现在需要将一批历史数据通过Flink加载到到ES,有两个点需要保证:对于历史数据,ES已有文档,则舍弃旧数据,ES没有则插入历史数据。对于新数据,能对现有的ES数据进行更新。参考ElasticSearch进阶篇(一)–版本控制,可以使用ES的版本实现该需求的开发。二、代码实现及验证代码实现请求写数据时加入version和version_type参数,主要代码如下:Index原创 2021-08-12 08:22:57 · 1503 阅读 · 0 评论 -
ElasticSearch进阶篇(一)--版本控制
一、前言ElasticSearch(以下简称ES)的数据写入支持高并发,高并发就会带来很普遍的数据一致性问题。常见的解决方法就是加锁。同样,ES为了保证高并发写的数据一致性问题,加入了类似于锁的实现方法–版本控制。锁从其中的一个角度可分为乐观锁和悲观锁。对于同一个数据的并发操作,悲观锁认为自己在使用数据的时候一定会有别的线程过来修改数据,因此在获取数据的时候会先加锁,确保数据不会被别的线程修改。而乐观锁则认为自己在使用数据时不会有别的线程来修改数据,所以不会添加锁,只是在更新或者提交数据的时候去判断之前原创 2021-08-11 15:21:40 · 452 阅读 · 0 评论 -
Flink EOS--整合MySQL验证2PC
一、前言假设当前Flink应用已实现EOS(即 Exactly-Once Semantics)语义,现在需要增加Flink处理数据持久化到MySQL,前提条件不能打破Flink EOS的生态。官方提供的flink-connector-jdbc并没有提供事务和checkpoint的相关操作,自定义sink需要考虑和CheckPoint复杂的配合。参考Flink EOS如何防止外部系统乱入,可自定义实现TwoPhaseCommitSinkFunction类,完成MySQL外部系统组件的完美嵌入。本次模拟原创 2021-08-09 20:52:27 · 608 阅读 · 0 评论 -
Flink EOS如何防止外部系统乱入--两阶段提交源码
一、前言根据维基百科的定义,两阶段提交(Two-phase Commit,简称2PC)是巨人们用来解决分布式系统架构下的所有节点在进行事务提交时保持一致性问题而设计的一种算法,也可称之为协议。在Flink 1.4版本中,社区将两阶段提交协议中的公共逻辑进行提取和封装,发布了可供用户自定义实现特定方法来达到flink EOS特点的TwoPhaseCommitSinkFunction。本文基于Flink 1.12.4,和大家一起拜读Flink两阶段提交的源码。二、2PC简介1. 定义根据维基百科的原创 2021-08-08 23:19:08 · 153 阅读 · 0 评论