自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(81)
  • 收藏
  • 关注

原创 Apache Flume

官方文档:http://flume.apache.org1、概述Flume是一个分布式、可靠、高可用的高效的日志数据收集、聚合以及传输系统,它简单和灵活的架构是基于数据流的。Flume具备强大的容错保证机制,有多种容错和恢复保证。Flume使用简单可扩展的数据模型允许开发在线分析处理应用。Flume Event:事件对象被定义数据流中一个单元,Event数据流的有效载荷(body)为采集到的一条记录,Event Head中可以添加一些可选的KV的描述信息。Flume Agent:Agent实例是一

2021-02-23 17:20:08 249

原创 kafka(三)kafka steaming high-level api

接上一篇文章 https://blog.csdn.net/qq_44962429/article/details/1138099111、 high level apiKafka Streams DSL(Domain Specific Language)构建于Streams Processor API之上。它是大多数用户推荐的,特别是初学者。大多数数据处理操作只能用几行DSL代码表示。在 Kafka Streams DSL 中有这么几个概念KTable、KStream和GlobalKTableKStr

2021-02-22 17:15:56 308

原创 kafka(二)幂等性、事务、kafka Streaming

1、kafka生产批(优化)producer会尝试缓冲record,实现批量发送,通过以下配置控制发送时机。batch.size:当多条消息发送到一个分区时,生产者会进行批量发送,这个参数指定了批量消息的大小上限(以字节为单位)。linger.ms:这个参数指定生产者在发送批量消息前等待的时间,当设置此参数后,即便没有达到批量消息的指定大小,到达时间后生产者也会发送批量消息到broker。properties.put(ProducerConfig.BATCH_SIZE_CONFIG,2048);

2021-02-14 18:55:03 343

原创 kafka(一)基本概念、集群搭建及API使用及框架整合

官网:http://kafka.apache.org/1、kafka概念及原理Apache Kafka® is a distributed streaming platform——分布式的流数据平台1.1 kafak简介kafka具备三项关键能力:①发布、订阅记录流,类似于消息队列或者企业级消息系统。②以一种容错持久化的方式存储记录流(默认可以保存7天)。③实时处理加工流数据(kakfa streaming)。kafka的应用场景:①构建实时的流数据管道,可靠的在系统和应用之间获取数据。

2021-02-10 10:34:03 381 2

原创 redis之全面解析

1、什么是redis?redis是一种基于内存并且可以持久化到硬盘的key-value型noSql数据库,支持丰富的数据类型如:String、List、Set、ZSet、Hash五种数据类型。是单线程,单进程,不支持并发操作,因为速度非常之快(Redis读的速度是110000次/s,写的速度是81000次/s), 所以也可称做宏观并行,微观串行。2、单机和集群搭建2.1 单机版(仅仅入门学习使用)环境准备:centos7、redis-4.0.10.tar.gz①关闭防火墙systemctl st

2021-02-08 18:30:24 699

原创 Redis高级客户端Lettuce

使用注意:要求JDK8及以上,redis版本至少为2.6官方文档:https://lettuce.io/core/release/reference/index.html#getting-started.get-it1、Lettuce简介Lettuce是一个基于netty和Reactor的可伸缩线程安全Redis客户端。Lettuce提供了同步、异步、反应式API来与Redis进行交互。2、基本使用Lettuce使用的时候主要依赖于以下四个组件:① redisURI:连接信息。② redisC

2021-02-05 17:16:16 1143

原创 flink window之Window Join

基本语法:stream.join(otherStream) .where(<KeySelector>) .equalTo(<KeySelector>) .window(<WindowAssigner>) .apply(<JoinFunction>)1、Tumbling Window Join案例:val fsEnv = StreamExecutionEnvironment.getExecutionEnvironmen

2021-01-20 23:32:52 536

原创 flink window之Triggers、evictor以及基于Event Time的window对于迟到数据的处理

1、Trigger触发器(Trigger)决定何时由“Window Function”处理窗口, 每个WindowAssigner都带有一个默认Trigger。 如果默认触发器不符合您的需求,则可以使用trigger(...)指定自定义触发器。WindowAssigners触发器global windowNeverTriggerevent-time windowEventTimeTriggerprocessing-time windowProcessingTimeT

2021-01-20 23:27:46 758

原创 flink window之四大window functions

在前面的文章中,博主分享了flink的四大assigner,有需要的发烧友点击链接https://blog.csdn.net/qq_44962429/article/details/112912432查询,欢迎指出问题,交流分享!本文主要介绍flink的window functionswindow functions当系统认定窗口就绪之后会调用Window Functions对窗口实现聚合计算。常见的Window Functions有以下形式: ReduceFunction, AggregateFun

2021-01-20 22:58:21 243

原创 flink window之四大WindowAssigner

Windows是流计算的核心。Windows将流分成有限大小的“buckets”,我们可以在其上应用聚合计算(ProcessWindowFunction,ReduceFunction,AggregateFunction或FoldFunction)等。在Flink中编写一个窗口计算的基本结构如下:Keyed Windowsstream .keyBy(...) .window(...) <- 必须制定: 窗口类型 [

2021-01-20 22:40:49 870

原创 flink之checkpoint、savepoint,Flink计算发布之后是否还能够修改计算算子?(指状态恢复)

1、chekpoint、savepointCheckPoint是Flink实现故障容错的一种机制,系统会根据配置的检查点定期自动对程序计算状态进行备份。一旦程序在计算过程中出现故障,系统会选择一个最近的检查点进行故障恢复。SavePoint是一种有效的运维手段,需要用户手动触发程序进行状态备份,本质也是在做CheckPoint。./bin/flink cancel -m centos:8081 -s hdfs:///savepoints f21795e74312eb06fbf0d48cb8d90489

2021-01-20 22:11:12 789

原创 flink之Operator State(non-keyed state)

flink介绍,flink对所有的算子都支持有状态计算,在博主之前分享的文章中,关于keyed state已经做过很详细的介绍,欢迎各位发烧友点击https://blog.csdn.net/qq_44962429/article/details/104428236交流虽然在我们平时的生产环境中,关于keyed state应用的比较多,但是对于那些基于窗口输出到外部系统的需要,为了数据不丢失或者重复输出到外部系统,sink算子也是需要进行保存状态的,接下来本文主要介绍Operator state1、Ope

2021-01-20 22:01:08 1222

原创 flink之TTL(Time To Live),State Backend,How to Clear State?

Flink在管理状态方面,使用Checkpoint和Savepoint实现状态容错。Flink的状态在计算规模发生变化的时候,可以自动在并行实例间实现状态的重新分发,底层使用State Backend策略存储计算状态,State Backend决定了状态存储的方式和位置。Flink在状态管理中将所有能操作的状态分为Keyed State和Operator State。Keyed State类型的状态同key一一绑定,并且只能在KeyedStream中使用。所有non-KeyedStream状态操作都叫做

2021-01-20 21:29:31 732

原创 hive开启动态分区,文件压缩

开启动态分区set hive.exec.dynamic.partition.mode=nonstrict;set hive.exec.dynamic.partition=true;开启压缩set hive.exec.compress.output=true;set mapred.output.compression.codec=org.apache.hadoop.io.compress.GzipCodec;开启文件合并默认大小为128Mset hive.merge.tezfiles=tru

2021-01-18 09:13:11 351

原创 flink之Timer定时器

一、Timer简介Timer(定时器)是Flink Streaming API提供的用于感知并利用处理时间/事件时间变化的机制。最常见的使用Timer的地方就是KeyedProcessFunction。我们在其processElement()方法中注册Timer,然后覆写其onTimer()方法作为Timer触发时的回调逻辑。根据时间特征的不同:(1)处理时间——调用Context.timerService().registerProcessingTimeTimer()注册;onTimer()在系统时

2020-12-08 16:16:56 2969

原创 flink table & sql(二)tableAPI

接上篇博客,本篇文章介绍一下tableAPI的基本使用8、table api1、Scan, Projection, and Filter(1)filter,isNotNull(),and,lowerCase(),as,count(),avg(),end,startpackage com.flink.sql.environment.tableAPI;import org.apache.flink.api.common.functions.MapFunction;import org.apache

2020-09-23 14:13:06 408

原创 flink table & sql(一)table基础概念、环境搭建、source、sink

一、concepts1、表表可以是虚拟(VIEWS)或常规(TABLES)。VIEWS可以从现有Table对象创建,通常是Table API或SQL查询的结果。TABLES描述外部数据,例如文件,数据库表或消息队列。表三部分标识符:目录、数据库、表名。其中,目录、数据库是可选的。tEnv.useCatalog("custom_catalog");tEnv.useDatabase("custom_database");1.1 临时表与永久表表可以是临时的,并与单个Flink会话的生命周期相关,

2020-09-23 11:31:01 1820

原创 Apache Hbase基本概念及Java API

一、Apache Hbase基本概述Apache Hbase是一个基于Hadoop的数据库,它可靠、数据多版本、分布式适合结构化大数据的存储,Apache Hbase是Google BigTable开源实现,基于列储存的菲关系型数据库。(1)列储存和行储存的区别列储存和行储存是指数据子存储介质中的额储存方式**·**关系型数据库(行储存):Oracle、mysql等**·**非关系型数据库(列储存):Hbase、Redis(2)Hbase数据模型及概念(1)主键rowkey:获取数据的唯一

2020-09-21 10:07:16 523

原创 基于flink broadcast实现目标用户的智能筛选

1、broadcast简介支持Operator State的第三种类型是广播状态,其中需要将来自一个流的某些或者全部数据广播到所有下游任务,广播的状态将存储在本地,用于处理另一个流上所有传入的元素。2、API使用博主分享两个案例分别描述key_broadcast和nonKeyed_broadcast。需求描述:某电商系统,需要通过监控用户的浏览记录,根据不同商品的营销活动规则,筛选出目标用户,实现促销。案例一: nonKeyed_broadcast(1) 实体类准备package com.le

2020-08-19 15:25:08 462 1

原创 flink批量(batch)写入mysql/oracle

1、前言博主之前分享过一篇文章,是flink高性能写入关系型数据库,那篇文章的效果虽然可以实现写入数据的高性能,但是牺牲了程序的健壮性,比如遇到不可控因素:数据库重启,连接失效,连接超时等,这样线上运行的程序可能就会出现问题,并且这样的问题可能只会日志打印error,并不会导致程序的挂掉,所以如果出现这样的问题,很难被发现。接下来,博主分享一波源代码,实现流式处理批量写入关系型数据库。整个程序的流量是这样的: kafka->flink->mysql2、driver类描述:flink消费k

2020-08-17 15:48:57 9887 6

原创 一篇由flink akka timeoutException引发的slot和parallelism

首先来看下程序错误信息:caused by: akka.pattern.AskTimeoutException: Ask timed out on [Actor[akka://flink/user/taskmanager_0#15608456]] after [10000 ms]. Sender[null] sent message of type "org.apache.flink.runtime.rpc.messages.LocalRpcInvocation".跟着这问题在 Flink官网 的

2020-08-17 14:37:15 781

原创 flink之内存分配与内存管理

Apache Flink 1.10对任务管理器的内存模型和Flink应用程序的配置选项进行了重大更改。这些最近引入的更改使Flink更适合于各种部署环境(例如Kubernetes,Yarn,Mesos),从而对其内存消耗进行了严格控制。本文将介绍Flink 1.10中的Flink内存模型,如何设置和管理Flink应用程序的内存消耗。1、Flink内存模型简介对Apache Flink的内存模型有清晰的了解,可以使开发者更有效地管理各种工作负载的资源。下图说明了Flink中的主要内存组件:任务管理器进

2020-08-17 11:19:22 1900 1

原创 那些年,我们一起使用过的case...when

1、case…when的用法case具有两种用法,一种是case函数,另一种是case搜索函数(1)第一种 格式 : 简单Case函数 :格式说明:    case 列名    when 条件值1 then 选项1    when 条件值2 then 选项2…    else 默认值 end示例:    select    case job_level    when ‘1’ then ‘1111’    when ‘2’

2020-08-06 15:24:02 334

原创 flink state TTL(Time To Live) 如何应对飞速增长的状态?checkpoint机制原理?

在Flink的流式计算作业中,经常会遇到一些状态数不断累积,导致状态量越来越大的情形。例如,作业中定义了超长的时间窗口。对于这些情况,如果处理不好,经常导致堆内存出现 OOM,或者堆外内存(RocksDB)用量持续增长导致超出容器的配额上限,造成作业的频繁崩溃,业务不能稳定正常运行。从 Flink 1.6 版本开始,社区引入了 State TTL 特性,该特性可以允许对作业中定义的 Keyed 状态进行超时自动清理(通常情况下,Flink 中大多数状态都是 Keyed 状态,只有少数地方会用到 Opera

2020-07-30 15:30:25 1724 2

原创 flink配合druid连接池的使用

博主之前在flink集成连接池的使用,一直存在一个误区,就是为了减少程序对资源的创建,所有加载资源或者获取连接都放在了flink的open方法中,虽然这样可以减少资源的使用,也可以满足大多数场景,但是如:mysql的connection长时间不用,该connection 会被mysql数据库本身给回收。先简单介绍一下Druid:DRUID是阿里巴巴开源平台上一个数据库连接池实现,它结合了C3P0、DBCP、PROXOOL等DB池的优点,同时加入了日志监控,可以很好的监控DB池连接和SQL的执行情况,可以

2020-05-28 16:14:49 8435 8

原创 解决Mysql连接8小时空闲失效问题

博主在之前的博文中发过一篇博客,是关于flink高性能写入mysql或者Oracle的问题,虽然写入的性能提高了,但是在接下来其他项目的开发过程中,遇到过连接connection失效的问题。博主的使用场景是这样的:博主的项目是做的实时推送的工程,每推送成功一条,就插入mysql一条数据,考虑到夜晚对用户推送,可能会对用户有打扰,所以在22~07不对用户进行推送,因此在这个空档期,mysql的连接是没有使用的,所以会报connection连接失效,至此,博主之前提到的高性能写入mysql的方案就行不通了,

2020-05-24 21:08:55 1094

原创 flink以gz格式写入hdfs

在flink的官方文档中,有读取gz文件的API,但是没有写入hdfs以gz格式写入的API,如果我们存储的数据量比较大,严重的占用我们的存储空间怎么办?博主在这里分享一下本人的做法。注意:博主的hdfs文件生成依赖于flink的checkpoint,如果在程序中不配置flink的checkpoint,该功能时无法实现的。package com.push.redis;import org.apache.flink.api.common.serialization.BulkWriter;import

2020-05-21 17:22:25 1139

原创 关于时序数据流经Kafka之后可能产生乱序的原因和解决方法

博主最近在做数据迁移的工作,但是在迁移的过程中遇到了一个问题,数据总是无缘无故的丢失,而且我的日志也没有报任何的错误异常信息,后经过排查,flink在消费kafka的时候我是通过事件时间处理数据的,有水位线的概念,由于kafka中的数据有大量的乱序现象,而且乱序的时间也比较严重,虽然写入数据的工作不是博主做的,但是抱着求知的心态,还是差了一下是什么原因会导致kafka中的数据出现乱序。kafka简介:Kafka 作为一个流行的消息队列,以分布式高性能,高可靠性等特点已经在多种场景下广泛使用。但在实际部署

2020-05-11 14:53:24 4337

原创 flink高性能写入关系型数据库Oracle或者MySql

相信从事大数据开发的人员,越来越多的人从事实时计算方向,flink技术就显示十分重要,说该技术重要,不仅仅是因为它的流式计算,更多的是和其他技术的整合比较强大,在开发过程中,除了写入消息中间件等场景,有的时候也需要写入传统的数据库,如Oracle或者MySql。我们习惯于连接关系型数据库的时候采用一些连接池如c3p0,在传统的业务开发或者数据量不是很大的时候,是没有问题的,但是在大数据量的情况,...

2020-05-07 18:16:49 3298 5

原创 听说redis集群没有pipeLine,看这里,博主带你重构redisCluter pipeLine

redis单机的管道模式,博主在这里就不给大家分享了,百度一下,单机redis的使用教程很多,但是redisCluster模式下,却没有自带的管道功能,因为博主最近做的写入redis的数据量比较大,多线程写入有时候会出现空指针异常,所以只能考虑管道模式,但是官网没有直接的使用方法,所以博主在这里分享一下本人的做法废话不多说,直接上代码package com.ctcc.framework.uti...

2020-04-22 15:33:54 382 1

原创 启动Hadoop没有dataNode进程的解决办法

1.问题现象:在启动Hadoop时,通过jps目录发现没有datanode进程。[root@hadoop ~]# jps1792 SecondaryNameNode1937 Jps1650 DataNode2 解决方案:clusterID不匹配导致的问题网上搜了下,网上的说法都是由于进行hadoop格式化的时候没有事先结束所有进程,或者多次进行了format导致的datanode的...

2020-03-26 15:24:35 3548 3

原创 四种方法带你解析xml文件和xml字符串

第一种:Dom4j解析优点1.是JDom的一种智能分支,它合并了很多超出基本XML文档表示的功能。2.Dom4j使用接口和抽象基本类方法,是一个优秀的Java XML API。3.具有性能优异,灵活性好,功能强大和极端易使用的特点。4.开放源代码。添加maven<dependency> <groupId>dom4j</groupId> ...

2020-03-02 21:56:22 1008

原创 redis集群工具类

package com.redis.utils;import redis.clients.jedis.HostAndPort;import redis.clients.jedis.JedisCluster;import redis.clients.jedis.JedisPoolConfig;import java.io.IOException;import java.util.Has...

2020-03-02 10:28:36 474

原创 azkaban安装教程

一.azkaban solo seerver模式1.优点:(1)易于安装:无需MySQL示例。它将H2打包为主要的持久存储。(2)易于启动:Web服务器和执行程序服务器都在同一个进程中运行。(3)全功能:它包含所有Azkaban功能。可以正常使用,也可以为其安装插件。2.环境准备CentOS7系统(关闭防火墙),JDK1.8以上版本。3.安装部署(1)解压缩azkaban solo...

2020-03-01 21:24:16 473

原创 linux文件的上传和下载(终端工具SCRT和XShell)

1.SCRT的上传下载yum安装 sudo yum install lrzsz打开SCRT终端工具,选择Options->Session Options之后会弹出如下画面:选择文件上传和下载的位置,点击OK即可。使用方式:# sz filename (发送文件到客户端,zmodem接收可以自行启动)# rz (从客户端上传文件到linux服务端)对于SCRT而言,文...

2020-02-28 09:11:04 754

原创 flink的六大keyState(Java语言和Scala语言描述)

1.valueStateValueState:这将保留一个可以更新和检索的值(作用域为输入元素的键,因此该操作看到的每个键可能会有一个值)。该值可以使用设置update(T)和使用检索 T value()。1.1 java语言描述valueState功能定义:对输入的数据数量统计,当数量达到2时,输出清零,之后继续统计。package javaState.valuestate;impo...

2020-02-21 22:46:35 1850

原创 flink的异步接口调用

同步接口的调用,是在接口响应之后,才能进行下一数据的请求方法,在接口性能不佳的情况下,严重影响flink的性能,这与flink的实时思想有违背,为了避免这种情况,我们在接口调用的时候,可以采取异步的方式。不废话,直接上代码,需要原理自行官方文档。AsyncDataStream.unorderedWait(dataSource, new HttpAsyncFunction("url"), 300...

2020-02-14 10:53:54 2561 1

原创 HttpUtils工具类

第一种此版本为基本的版本,可实现接口调用,发送数据,接受接口响应数据,请求方式为post /** *date 传递的json数据 *port 接口地址 *return 返回的json数据 */ public static JSONObject doPost(JSONObject date, String port) { HttpC...

2020-02-14 10:35:21 782

原创 马踏棋盘算法(骑士周游问题)

关于什么是马踏棋盘,伙伴们可以自行百度,关于4399还有小游戏思路分析:package com.self.tenAlgorithm;import java.awt.*;import java.util.ArrayList;import java.util.Scanner;public class Demo7 { private static int X; // 棋盘的列数...

2020-02-07 21:32:46 222

原创 Java十大算法之弗洛伊德算法

1.弗洛伊德(Floyd)算法介绍:(1)和Dijkstra算法一样,弗洛伊德算法也是一种用于寻找给定的加权图中顶点间最短路径的算法,与迪杰斯特拉算法的区别是:迪杰斯特拉算法通过选定的被访问点,求出从出发访问顶点到其他顶点的最短路径.弗洛伊德算法中每一个顶点都是出发访问点,所以需要将每一个顶点看做被访问顶点,求出每一个顶点到其他顶点的最短路径.2.思路分析设置顶点vi到顶点vk的最短路径已知...

2020-02-07 16:47:22 372

空空如也

空空如也

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

TA关注的人

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