自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Python多线程慎用shutil.make_archive打包

记一下在工作中遇到一个错误,先说一下结论shutil.make_archive是线程不安全的,要慎重使用!!!参考:https://stackoverflow.com/questions/41625702/is-shutil-make-archive-thread-safe本篇文章会分别从多线程下使用shutil.make_archive打包会导致什么问题、原因是什么、如何解决三个方面进行讲解。

2023-04-18 10:51:09 528 1

原创 SpringBoot动态定时任务、动态Bean、动态路由

SpringBoot中动态注册定时任务、动态注册Bean以及动态注册Controller路由

2022-07-22 14:26:30 1031

原创 Python使用SSH代理访问远程Docker

本篇文章将通过两个方案实现访问远程docker:通过改造SSH用户密码认证访问远程Docker,通过SSH命令行隧道方式访问远程Docker

2022-07-22 10:39:57 1257

原创 Java本地&远程调用Matlab函数及脚本

Java本地&远程调用Matlab函数及脚本Matlab版本: 2020bMatlab提供了丰富的工具箱,如果可以使用Java调用Matlab来实现一些特定的算法,确实是一个不错的想法,经过实验证明这个想法可行,但是性能差点事情,对于一些特殊场景还是可以尝试的。查阅了网上大量的资料,实现Java调用Matlab基本有两种实现思路:1. 将Matlab函数打成Jar类库 ,然后基于MCR运行 2. 使用Matlab提供的Java Matlab Engine API。 本篇文章也是围绕着两个思路,

2022-03-21 17:45:57 4866 7

原创 Flink写RocketMQ支持动态UserProperty

Flink写RocketMQ支持动态UserPropertyFlink version: 1.14.0RocketMQ version: 4.5.2Github: https://github.com/shirukai/rocketmq-flink.git本篇文章主要记录了在Flink Table中如何使用RocketMQ的Sink,并且通过修改源码支持动态的UserProperty,写这篇文章就当是补充学习吧,其中涉及到Flink Table自定义数据源、RocketMQ的使用等相关的知识。

2022-03-10 17:40:35 3903 1

原创 Mac上安装Octave替代MATLAB进行信号分析相关的工作

Mac上安装Octave替代MATLAB进行信号分析相关的工作最近在从事机械设备诊断信号分析相关的工作,看了一些诊断相关的资料,其中有不少使用MATLAB进行分析的程序代码。在学校的时候使用过MATLAB,但貌似早就还给了老师。MATLAB的安装包和安装教程可以参考:https://www.cnblogs.com/qq2399382639/p/14530700.html,https://www.bilibili.com/video/BV1uK4y1W7qB。这篇文章先就简单说一下为什么要用Octave代

2022-02-21 14:25:23 1485 1

原创 Flink中基于Akka的RPC实现

Flink中基于Akka的RPC实现版本说明:Flink: 1.10.11 前言Flink中RPC是基于Akka实现的,在上一篇文章《使用Akka实现简单RPC框架》中,使用Akka的基本API加上Java动态代理实现了一个简单的RPC框架,对Akka不太熟悉的同学可以先参考那篇文章手写一下代码,然后再来阅读这篇文章会更好的理解Flink的RPC实现,基本原理都是一样的。我也是先看的Akka相关知识,然后再重新阅读的Flink代码,不得不承认,我上一篇文章的实现并没有Flink中实现的优雅,确实有

2021-11-18 17:58:50 2427

原创 使用Akka实现简单RPC框架

使用Akka实现简单RPC框架最近简单看了看Flink的RPC通讯相关的源码,它是通过Akka实现的,为了更好的阅读理解代码,又大体看了看Akka相关的知识。这篇文章主要记录了如果使用Akka来实现RPC通讯,其中涉及到了akka actor、akka remote等相关知识。1 实现原理首先大体讲一下实现原理,其实很简单,与我之前写过的RPC框架系列文章里手写了一个原生的JavaRPC例子很类似,只不过通过Akka我们不需要进行底层的网络编程以及去关心数据的序列化与发序列化问题。首先客户端使用动

2021-11-17 18:26:22 2372

原创 Flask中SQLAlchemy自动更新表结构

Flask中SQLAlchemy自动更新表结构Python: 2.7Flask: 1.0.3Flask-SQLAlchemy: 2.3.2SQLAlchemy: 1.3.12Flask-SQLAlchemy是Flask中比较好用的ORM框架,说起ORM框架,熟悉SpringBoot开发的同学肯定对JPA比较了解,它们都是通过实体对象映射关系库中的表,操作实体对象,进行增删改查,减少了SQL的编写,非常方便。在JPA中,当我们修改了一个实体类之后(添加字段),对应的表结构可以自动发生更新,通常不需

2021-07-31 12:08:01 4013 3

原创 Flink自定义窗口触发器

Flink内置触发器及自定义窗口触发器flink: 1.10.1Github: https://github.com/shirukai/flink-examples-trigger.git前段时间同事开发遇到一个需求,要求按照事件时间10分钟窗口计数,同时需要有新数据时每分钟输出一次结果。窗口计数非常简单,设置一个窗口,然后运用一个聚合函数就可以解决了。但是有新数据时每分钟输出一次结果,好像实现起来并不容易,因为按照平时的窗口,设置10分钟之后,要等到watermark超过了当前的窗口之后,才会被

2021-06-08 14:17:32 5018 10

原创 Java单元测试动态修改环境变量

Java单元测试动态修改环境变量今天再写单元测试的时候,遇到一个比较有趣的事情,程序需要读取一个环境变量,而这个变量又是动态生成的,所以在执行单元测试之前要进行环境变量的配置。目前总结了两种方案可以实现动态修改环境变量,修改后的环境变量仅对当前进程生效,即仅在当前Java进程中调用System.getenv(name)生效,分别是通过反射修改Runtime中保存环境变量的Map、和通过JNI的方式调用系统的setenv方法。下面将分别对两种方案进行实现。1 通过反射修改Runtime中保存环境变量的Ma

2021-04-01 19:08:32 2551

原创 Flink在k8s生产环境高可用部署

Flink在k8s生产环境高可用部署flink: 1.10.1kubernetes: 1.18.81 前言目前参与的项目基本开发完成,打算开发的微服务和Flink任务统一部署到k8s上。之前几个项目都是跑在YARN上,Flink on YARN的部署模式是在生产中比较常见,YARN的稳定性和资源调度能力也是有目共睹的,依托Hadoop生态Flink高可用也很容易实现。关于On YARN还是On K8S之前文章都有介绍,《Flink Cluster On YARN部署》和《Flink Clust

2020-11-02 16:56:24 7910 33

原创 k8s使用mac上自带的NFS

k8s使用mac上自带的NFS服务之前文章里有记录如何在mac电脑上使用docker,并搭建k8s集群。最近在开发测试的时候,遇到k8s挂载持久卷的问题。本来想在开发的电脑上搭建一个NFS服务,经过在网上一番搜索发现mac电脑本身就带有一个NFS服务。这篇文章主要记录一下如何在mac上开启并配置NFS服务,以及如何在k8s上使用NFS。1 配置并开启NFS服务Mac上的NFS服务是作为系统服务提供的,可以使用nfsd status命令查看nfsd当前的状态。1.1 配置共享目录Mac自带的NF

2020-11-02 16:55:28 1210

原创 使用Conda Pack打包Python独立运行时环境

使用Conda Pack打包Python独立运行时环境版本说明:python=2.7Conda 的Pack工具,可以说是让我发现了新大陆。之前有个项目使用它解决了一个棘手的问题,一直没有整理相关笔记,时间长了容易淡忘,恰好有同事问我如何实现的,这里就重新整理一下。1 棘手问题描述简单描述一下项目中遇到的这个棘手问题:这个项目是一个Python2.7开发的Flask服务,它里面有不少依赖需要使用pip安装,并且在网络不好的情况下容易下载失败。要求是能够让用户能够快速部署,几乎不做复杂的操作,就

2020-09-27 10:27:07 23462 5

原创 Python中使用flatmap

Python中使用flatmap写多了Spark、Flink突然觉得到处是map、flatmap,在这些框架中有map、flatmap算子,在scala语言里有对应的方法,而在java 8之后,我们ye可以通过stream api使用map和flatmap,这些用法,用一次就会爱上它,代码确实优雅、好用。早之前我一直以为python里也有这样的用法,也使用过filter、map等方法,但直到今天在写一个小脚本需要用到flatmap时,才发现竟然在语言层面没有原生支持。这里不罗逼嗦了,直接上实现flatm

2020-09-25 15:12:24 5263

原创 Flink Cluster On Kubernetes部署

#Flink Cluster On Kubernetes部署Flink版本:1.10.1kubernetes:1.16.5Flink 在Kubernetes上部署分为Job cluster和Session cluster两种模式。Job cluster需要我们将自己的Jar打到flink镜像里一块部署,session模式可以启动cluster之后,我们再提交jar到session cluster。1 环境准备在YARN模式部署的文章里,我们是直接从官网下载编译后的包进行部署的。由于Job C

2020-09-23 16:34:30 1536

原创 Flink Cluster On YARN部署

Flink Cluster On YARN部署Flink版本:1.8.2Hadoop: 3.0.3参考文章:文中关于Per-Job、Session模式的描述摘自《Deploy Apache Flink® Natively on YARN/Kubernetes》 https://ververica.cn/developers/deploy-apache-flink-natively-on-yarn-kubernetes/Flink在YARN上部署有两种模式,一种是Session模式,另一种是Pe

2020-09-23 16:33:40 1955

原创 Flink算子扩缩容过程中的状态迁移

Flink算子扩缩容过程中的状态迁移根据数据量动态调整Flink应用的算子并行度,在实际业务应用中很常见。对于无状态的算子来说,更改算子并行度非常的容易。但对于有状态的算子来说,调整算子并行度时,需要考虑状态的重新分配。之前文章里提到,Flink中的状态分为键值分区状态、算子列表状态、算子聚合状态、广播状态,那么这些状态在并行度改变时,是如何在子任务实例间迁移的?这篇文章,将分别使用代码示例介绍这四种状态的迁移过程。1 键值分区状态键值分区状态,是应用在KeyedStream上的算子里使用的状态,关于

2020-09-20 10:41:02 1870

原创 Flink中使用嵌入式ElasticSearch进行单元测试

Flink中使用嵌入式ElasticSearch进行单元测试Flink版本 1.8.0ElasticSearch版本 5.1.2Scala版本 2.11.12Java版本 1.8Github地址:https://github.com/shirukai/flink-examples-embedded-elasticsearch.git1 前言前些时间同学在群里问关于ElasticSearch的单元测试,如何mock。当时看到这个问题,我想的是mock一个写ElasticSearch的客户端的

2020-06-23 16:25:35 1676

原创 调试Local模式下带状态的Flink任务

调试Local模式下带状态的Flink任务Flink版本: 1.8.0Scala版本: 2.11在本地开发带状态的Flink任务时,经常会遇到这样的问题,需要验证状态是否生效?以及重启应用之后,状态里的数据能否从checkpoint的恢复?首先要明确的是,Flink重启时不会自动加载状态,需要我们手动指定checkpoint路径。笔者从Spark的Structured Streaming转到Flink的时候,就遇到这样的问题。在Spark中,我们使用的状态信息会随着程序再次启动时自动被加载出来。所以

2020-06-14 13:00:02 4014 6

原创 Flink DataStream API之Operators

Flink DataStream API之Operators官网位置:https://ci.apache.org/projects/flink/flink-docs-release-1.9/zh/dev/stream/operators/Operators transform one or more DataStreams into a new DataStream. Programs can combine multiple transformations into sophisticated dat

2020-06-11 16:13:06 374

原创 Mac环境下开启Docker之旅

Mac环境下开启Docker之旅使用桌面版的docker已经有一段时间了,主要是在平时的开发中用以搭建各种开发环境。总的来说,在mac上使用桌面版的docker比较容易上手,桌面版也提供k8s的功能,但是开启时总是不能成功,而且在此基础上使用Rancher管理k8s也遇到了各种问题,这里就记录一下这一路上遇到的各种坑。1 Docker Desktop for Mac使用桌面版的Docker很...

2019-12-12 17:08:58 1007

原创 从CDH Agent错误日志学习Python拆包语法

从CDH Agent错误日志学习Python拆包语法国庆七天长假回来上班,迟迟没有进入工作状态,可能祖国的强大,让我不自觉的也飘了起来,哈哈,该收拾收拾心情,为祖国之繁荣而努力加班挣money了。今天通过解决公司开发环境的一个问题,让我瞬间进入了战斗状态,并且顺便学了一下Python拆包的一些语法,还是挺有意思的。1 CDH Agent错误日志解决放假回来,同事发现公司开发环境的CDH集群挂...

2019-10-11 17:44:18 473

原创 Flink DataStream API之State

DataStream API 之State无论StructuredStreaming还是Flink在流处理的过程中都有一个“有状态计算“的概念,那么到底什么是有状态计算,有状态计算应用到什么场景,在Flink的DataStream API中如何使用状态,以及在Flink中状态是如何管理的,在这篇文章中,我们一点一点来学习。1 什么是有状态计算在讲什么是有状态计算之前,先简单说一下什么是无状态...

2019-10-11 17:43:11 849

原创 RPC框架初体验之Thrift

RPC框架初体验之Thrift版本说明:thrfit 0.12.0模块说明:thrift-demo-java-api: 使用thrift生成Java apithrift-demo-java-server: Java 实现Thrift服务端thrift-demo-java-client:Java实现Thrift客户端thrift-demo-py-api:使用thrift生成Pyth...

2019-08-21 12:05:37 556

原创 RPC框架初体验之Dubbo

RPC框架初体验之Dubbo版本描述:dubbo 2.7.2Dubbo是阿里开源的一款RPC框架,最近在学习微服务的时候有提及到。因此对Dubbo进行了入门级体验,这里主要体验体验Dubbo的几种配置方式,如XML配置、API配置、注解配置,以及Springboot里整合Dubbo,同时体验几种注册中心,如simple、zk、redis、multicast。Dubbo官网内容还是很丰富的...

2019-08-21 12:04:56 228 2

原创 RPC框架初体验之入门

RPC框架初体验之入门项目地址:https://github.com/shirukai/learn-demo-rpc.gitRPC全称Remote Procedure Call,顾名思义,远程过程调用的意思。关于RPC的介绍,可以参考一下简书上《如何给老婆解释什么是RPC》这篇文章,很有趣。RPC这个概念,我第一次接触是在《Spark内核设计的艺术》这本书里。后来在看微服务的时候,也提及到...

2019-08-21 12:03:55 322

原创 Spark读取JSON的小扩展

Spark读取JSON的小扩展版本说明:spark 2.3前言前几天在群里摸鱼的时候,碰都一位同学问了一个比较有趣的问题,他提问:Spark如何读取原生JSON?看到这个问题,心里有些疑惑,Spark不是有JSON数据源支持吗,怎么这里还要问如何读取原生JSON,这原生JSON又是什么鬼?经过交流才明白,原来他所说的原生JSON是类似如下这种格式:{ "昌平区东小": [ ...

2019-06-15 11:34:54 6406 3

原创 Java封装Azkaban相关API

Java封装Azkaban相关API版本说明:azkaban:3.43.0jdk:1.8项目地址:https://github.com/shirukai/azkaban-java-api.git1 前言之前在项目开发记录中,写到过两篇文章《利用AOP对Azkaban进行登录控制》和 《Java调用Azkaban相关服务》,记录了在开发过程中使用spring的aop对azkaban进...

2019-06-13 15:41:36 4032 2

原创 Flask从0到1快速后台服务开发

Flask从0到1快速后台服务开发版本说明:Python:3.7Flask:1.0.2前言Flask是一个使用 Python 编写的轻量级 Web 应用框架。其 WSGI 工具箱采用 Werkzeug ,模板引擎则使用 Jinja2 ,具体详情查看官网:http://flask.pocoo.org/。接触Flask有一段时间了,在工作中使用Flask开发了几个轻量级的后台服务,...

2019-06-12 11:32:57 6594 1

原创 Python使用subprocess开启新进程之旅

Python 使用subprocess开启新进程之旅版本说明:Python2.7感觉好久没有写博客了,最近接连两项工作,忙的不亦乐乎,难得空档期,做一下笔记总结。同样是工作中遇到的问题,简单描述一下:有这样一段脚本,它执行时间比较长,而且不断地有标准输出,需要Flask提供REST服务去异步执行这段脚本,并且实时捕获标准输出,通过WebSocket推送给前台。关键点:异步调用,实时获取标准...

2019-05-20 10:01:14 2369 5

原创 StructuredStreaming项目开发记录

StructuredStreaming项目开发记录版本说明:Spark2.4前言最近基于Spark Structured Streaming开发一套实时数据判别清洗系统,在开发过程接触了一些StructuredStreaming的新特性以及新用法。本文主要记录一下在开发过程中使用到的技术点,以及遇到的问题总结。1 放弃Spark Streaming 选用Structured Str...

2019-05-20 09:59:47 1277 4

原创 StructuredStreaming动态更新参数

StructuredStreaming动态更新参数版本说明:Spark 2.41 前言在使用StructuredStreaming的时候,我们可能会遇到在不重启Spark应用的情况下动态的更新参数,如:动态更新某个过滤条件、动态更新分区数量、动态更新join的静态数据等。在工作中,遇到了一个应用场景,是实时数据与静态DataFrame去Join,然后做一些处理,但是这个静态DataFra...

2019-02-28 17:19:01 2049

原创 SparkSQL基于DataSourceV2自定义数据源

SparkSQL基于DataSourceV2自定义数据源版本说明:Spark 2.3前言:之前在SparkSQL数据源操作文章中整理了一些SparkSQL内置数据源的使用,总的来说SparkSQL支持的数据源还是挺丰富的,但业务上可能不拘束于这几种数据源,比如将HBase作为SparkSQL的数据源,REST数据源等。这里主要讲一下在Spark2.3版本之后推出的DataSourceV2,基...

2019-02-28 17:18:23 6237 4

原创 StructuredStreaming 内置数据源及实现自定义数据源

StructuredStreaming 内置数据源及实现自定义数据源版本说明:Spark:2.3/2.4代码仓库:https://github.com/shirukai/spark-structured-datasource.git1 Structured内置的输入源 Source官网文档:http://spark.apache.org/docs/latest/structured-...

2019-01-29 11:37:48 3431 3

原创 linux配置yum本地源

linux配置yum本地源往往安装某些软件时,依赖的东西太多,或者网络原因,容易造成软件安装失败,这时候我们可以配置yum本地源,将需要的软件的rpm包同步到本地,然后使用本地源。例如安装ambari的时候,我们通常把ambari的安装源同步到本地,然后安装。1 安装httpdHttpd是由ASF(apache software foundation)维护的开源项目之一 也是目前最为流行...

2019-01-05 20:27:40 924

原创 CDH Manager API 操作Yarn资源池

CDH Manager API 操作Yarn 资源池版本说明:CDH 5.11.0API版本:v161 API 权限认证在使用REST API 访问 CDH Manager 提供的相关接口的时候,需要进行权限认证。认证的类型是 Basic Auth。在java编程中将如下所示生成authorization,然后将该认证信息添加到请求头信息中即可。private static Stri...

2018-12-22 17:16:27 3486

原创 HBase单机伪分布式安装

HBase单机伪分布式安装版本说明:hadoop-2.7.6zookeeper-3.4.13hbase-2.1.01 下载安装包官网地址:http://hbase.apache.org/downloads.html1.1 下载安装包在官网下载相应版本的安装包,这里下载的是hbase-2.1.0版本。wget http://mirror.bit.edu.cn/apache/hb...

2018-12-22 17:13:41 767

原创 Elasticsearch与Kibana部署及使用

Elasticsearch与Kibana部署及使用安装环境Mac OS 适用于Linux版本说明Elasticsearch:6.4.0Kibana:6.4.01 Elasticsearch部署及使用官网:https://www.elastic.co/1.1 下载Elasticsearch下载地址:https://www.elastic.co/downloads/elast...

2018-12-22 17:13:17 1841

原创 CentOS7下yum安装MariaDB与简单配置

CentOS7下yum安装MariaDB与简单配置开始之前要确保已经安装yum并且配置好相关的源。一、 安装命令:yum -y install mariadb mariadb-server二、启动MariaDBsystemctl start mariadb三、 设置开机启动systemctl enable mariadb四、相关配置mysql_secure_installa...

2018-12-22 17:11:00 461

空空如也

空空如也

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

TA关注的人

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