自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

GatsbyNewton

天下事有难易乎?为之,则难者亦易矣;不为,则易者亦难矣。人之为学有难易乎?学之,则难者亦易矣;不学,则易者亦难矣。

原创 极简数据科学(上)

数据科学使你能够将业务问题转换为研究项目,然后再将其转换为实际的解决方案。本文回答了数据科学是什么,数据科学为什么这么重要,数据科学具有的 5 个阶段的生命周期,数据科学包含的 5 个组成部分,以及数据科学具有 6 个环节的流程。

2020-07-26 00:39:22 47

翻译 动态表的持续查询

Flink 的关系 API 非常适合立即实施流分析应用程序,并且可以在多种生产环境中使用。在本文中,我们讨论了 Table API 和 SQL 的未来。

2020-07-06 23:35:15 68

原创 一文读懂一致性哈希算法
原力计划

使用一致性哈希算法时,当发生增删服务器的时候,并不能彻底杜绝数据迁移,但是却可以有效地避免全量数据迁移。同时,一致性哈希算法使用虚拟节点可以解决热点问题。

2020-06-21 17:50:17 70

原创 Flink 调优:Checkpoint 问题排查
原力计划

在使用 Flink 时, 我们基本都会用到 Checkpoint,也难免不会遇到 Checkpoint 慢或者失败等问题,本文介绍了 Checkpoint 问题排查的方法。

2020-05-24 14:48:01 245

原创 Flink 调优:Checkpoint 配置
原力计划

Checkpoint 是 Flink 的失败恢复机制,它的配置对于 Flink 应用程序的性能和稳定性有这至关重要的影响。

2020-05-04 11:02:01 352

原创 Flink 调优:Slot and Parallelism
原力计划

Flink 的并发度的设置直接影响应用程序的性能,本文介绍了应该如何设置并发度的方法。

2020-04-07 00:14:42 404

原创 数据算法: Bitmap

本文介绍了 Bitmap 的原理,和在大数据处理中的应用案例,如,判重、定基、排序、压缩。以及在位图图像和数码相机中的应用。最后,用位运算的方式实现了 Bitmap。

2020-03-14 21:49:17 124

原创 Flink 原理与实现:Savepoint

在 Flink 原理与实现:Checkpoint 这篇文章中,我介绍了 Flink Checkpoint。Checkpoint 是 Flink 内置的失败恢复机制。SavepointSavepoint 是 Flink 的一个非常重要的特征,被 Flink PMC 誉为“瑞士军刀(Swiss Army knife)”。Savepoint 的实现算法和 Checkpoint 一样。但是,Savep...

2020-03-01 01:22:15 215

原创 Flink 原理与实现:Checkpoint

本文尝试用图形化语言将抽象的 Checkpoint 具象化,阐述 Naive Consistent Checkpoint、Flink Checkpoint、Failure Recovery Mechanism、以及Performance of Checkpointing。

2019-12-07 21:27:50 229

原创 Flink 原理与实现:State

本文尝试解释 State stream processing,从 Flink 的角度,阐述 State management 和 State repartition。

2019-11-29 22:27:35 370

转载 【SparkSQL】聊一聊 Join

聊一聊 SparkSQL 的 3 种 Join

2019-09-30 20:19:25 64

转载 Intellij IDEA debug 模式

Debug模式是开发人员必会的一项调试程序的技能,用来追踪代码的运行流程,线上问题追踪,程序运行异常定位调试,以及在运行过程中参数的变化。IDEA的debug对于新手如何快速上手呢?一、基本介绍本篇文章是基于 IntelliJ IDEA 2018.1.6 版本,最新的版本 2018.2 已经出来了,支持 Java11,Debug 模式的图标设计虽有微调改动,但是功能大体相通。上图爬虫的图标...

2019-09-22 16:36:44 164

原创 Flink 原理与实现:再谈反压

基于信用的反压

2019-08-25 11:32:41 711

原创 Huffman编码

霍夫曼压缩的思想是通过用较少的比特表示出现频率高的字符,用较多的比特表示出现频率低的字符,这样字符串所使用的总比特数就会降低。

2019-08-11 02:00:25 2277

翻译 流计算中的 Exactly Once 语义

在大数据领域,分布式事件流处理已经成为了热门话题。目前流行的流处理引擎包括 Apache Storm、Apache Flink、Heron、Apache Kafka(Kafka Streams)和 Apache Spark(Spark Streaming)。流处理引擎被广泛讨论的一个特性——Extractly-Once,很多引擎也已经宣称支持。然而,关于 Extractly-Once 是什么,当...

2019-07-13 16:28:12 858

原创 Spring Boot 实践

Spring Boot 实战本文整理了 Spring Boot 各种使用技巧,以及继承第三方库的使用案例,可访问 spring boot 获取源码。后续文章会拆解每个使用案例。spring-boot-actuator:Spring Boot 集成 Actuator 进行健康检查。spring-boot-annotation-unified-exception:Spring Boot 统一异...

2019-06-22 22:31:16 1041

转载 Flink 原理与实现:如何处理反压问题

流处理系统需要能优雅地处理反压(backpressure)问题。反压通常产生于这样的场景:短时负载高峰导致系统接收数据的速率远高于它处理数据的速率。许多日常问题都会导致反压,例如,垃圾回收停顿可能会导致流入的数据快速堆积,或者遇到大促或秒杀活动导致流量陡增。反压如果不能得到正确的处理,可能会导致资源耗尽甚至系统崩溃。目前主流的流处理系统 Storm/JStorm/Spark Streaming/...

2019-06-15 14:51:34 3233

翻译 零拷贝

用过 Kafka 的同学都知道它吞吐量很大,速度也快,但是 Kafka 是基于磁盘的,为什么还有这个可观的性能呢?本文就介绍一下其中一个技术——零拷贝。到目前为止,几乎每个人都听过 Linux 中所谓的零拷贝功能,但是我经常遇到对它不完全理解的人。基于此,我决定写一些文章深入探讨这个有用的功能。在这篇文章中,我们将从用户的角度讨论零拷贝,因此内核层次的细节将会省略。什么是零拷贝?为了更好地理...

2019-06-08 23:15:03 1845

翻译 Apache Flink 事件时间处理和 Watermarks

如果你正在搭建一个实时流程序,事件时间处理是你不久将不得不使用的一个功能之一。因为在现实世界中绝大多数用例的消息都是乱序的,你的系统应该有一个方法应对和处理可能延迟的消息。在这篇博客中,我们将会看到为什么我们需要事件时间处理和我们怎么在 Flink 中使用它。EvenTime 是一个事件在现实世界中发生时的时间。ProcessingTime 是该事件被 Flink 处理时的时间。为了理解事件时间...

2019-04-07 12:55:55 424

原创 线上故障排查(二)——高MEM占用

1. 高内存占用线上故障排查(一)——高CPU占用一文中介绍了高 CPU 占用程序的排查,今天我们介绍高MEM占用的程序。高内存占用的程序是指内存消耗比较大的程序。我们在开发 Java 应用程序的时候,一定见过 OOM(即 java.lang.OutOfMemoryError)。在 JVM 内存模型中,Java 虚拟机栈、本地方法栈、Java 堆、方法区(JDK8 之后是元空间,取消了永久代)都...

2019-03-10 20:58:06 684

原创 线上故障排查(一)——高CPU占用

1. 计算密集型任务一般线上的任务会分为:计算密集型任务和IO密集型任务,其中计算密集型任务也叫做CPU密集型任务,是指CPU计算占主要的任务,CPU一直处于近乎满负荷状态。在公司中,一般服务器CPU占用率超过一定的阈值,就会有报警,这时候我们就不得不去排查自己的线上任务在哪个地方导致了CPU占用过高。今天我们就介绍一下线上应用高CPU占用的排查。2. 线上排查我这里主要介绍 Java 应...

2019-02-19 23:09:18 505

原创 Java 并发概述

并发(Concurrency),是指在某个时间段内,多任务交替处理的能力。并行(Parallelism),是指同一时刻同时处理多任务的能力。在并发环境下,由于程序的封闭性被打破,出现了以下特点:并发程序之间有相互制约的关系。直接制约体现为一个程序需要另一个程序的计算结果;间接体现为多个程序竞争共享资源,如处理器、缓冲区等。并发程序的执行过程是断断续续的。程序需要记忆现场指令及执行点。当并...

2019-01-01 11:46:13 212

原创 Java 数据结构与集合

1. 集合图谱Java 集合图谱:1.1 List 集合List 集合是线性数据结构的主要实现,List 集合的遍历结果是稳定的。该体系最常用的是 ArrayList 和 LinkedList。ArrayList 是容量可以改变的非线程安全集合。内部实现使用数组进行存储,集合扩容时会创建更大的数组空间,把原有数据复制到新数组中。ArrayList 支持对元素的快速随机访问,但是插入与删除时...

2018-11-15 23:01:22 1329

原创 RMQ(Range Minimum Query)

RMQRMQ(Range Minimum Query) 是指区间最值查询,即对于长度为 $ n $ 的数列 $ A $,回答若干询问 $ RMQ(A, i, j), (i,j <= n) $,返回数列 $ A $中下标在 $ i, j $ 之间的最小/大值。如果用 $ f(n) $ 表示算法预处理时间复杂度,$ g(n) $ 表示算法的查询时间复杂度,那么 RMQ 的算法的复杂度是 $ \left

2017-09-17 15:12:28 995

原创 MyBatis 笔记(五)——动态 SQL

在开发中,经常会遇到要执行的 SQL 语句其实并不是固定,而是随条件的变化而变化的。对于这种情况 MyBatis 也有解决方案。随条件变化的 SQL先看一个固定的 SQL 语句,查询指定 name 和 age 的人:<resultMap id="PersonMap" type="Person"> <id column="id" jdbcType="INTEGER" property=

2017-08-25 23:35:47 552

原创 MyBatis 笔记(四)——实体类属性和表字段的映射

之前的章节将的实体类属性名和表字段名都是相同的,MyBatis 会自动去映射。那么问题来了,如果实体类属性名和表字段名不相同时,MyBatis 能智能地去映射到吗?答案是:不能。这里用两种解决方案: 1. 在使用 SQL 语句的时候,为每个字段定义别名; 2. 使用 MyBatis 映射文件的 resultMap 标签。使用别名使用别名这个很容易理解,因为日常在写 SQL 语句时,通常会用到别名

2017-08-23 22:49:31 41417 1

原创 MyBatis 笔记(三)——优化配置

在之前的讲解中,不难发现 MyBatis 的配置有些笨重,这一节就讲 MyBatis 的配置优化。毫无疑问,主要是两方面: 1. 优化 MyBatis 基础配置文件。 2. 优化 MyBatis 映射文件。优化 MyBatis 基础配置文件在 MyBatis 基础配置文件中,之前的数据库配置都是在这个文件中完成的。实际上,数据库配置是可以抽出去的,如 db.properties:DRIVER=c

2017-08-21 23:50:01 811

原创 MyBatis 笔记(二)——XML vs 注解

MyBatis 支持注解和 XML 两种配置。这一节延续 MyBatis 笔记(一)继续讲。1. 基于 XML 的配置基于 XML 的配置其实和 MyBatis 笔记(一)几乎是一样的。先看最基础的配置文件:<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configuration PUBLIC "-//mybatis.org//D

2017-08-19 23:06:23 1369

原创 MyBatis 笔记(一)——快速入门

简介MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。入门添加依赖在使用 Mybatis 的时候,需要添加数据库驱动包和 Mybatis 包,以 MySQL 为例,Maven 依赖:&amp;lt;dependencies&amp;gt; &amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.my

2017-08-13 19:37:11 581

原创 Python定时任务调度——APScheduler

简介APScheduler 框架可以让用户定时执行或者周期性执行 Python 任务。既可以添加任务也可以删除任务,还可以将任务存储在数据库中。当 APScheduler 重启之后,还会继续执行之前设置的任务。 APScheduler 是跨平台的,注意 APScheduler 既不是守护进程也不是服务,更不是命令行程序。APScheduler 是进程内的调度器,也就是说它的实现原理是在进程内产生内

2017-07-22 12:08:46 5823

原创 shell 之 test 命令

1. test 命令test 命令提供了在 if-then 语句中测试不同条件的途径。如果 test 命令中列出的条件成立,test 命令就会退出并返回退出状态码0;如果条件不成立,test 命令就会退出并返回退出状态码1,这样 if-then 语句就会失效。test 命令的格式非常简单:test conditioncondition 是 test 命令要测试的一系列参数和值。当用在 if-then

2017-06-30 22:12:09 787

原创 Maven分离配置、依赖

在用Maven打包项目时,要像Hadoop、Spark、Hive等项目打包之后的文件包含bin、lib、conf之类的文件夹,同时可以动态的修改项目的配置参数,需要如下两步:在 pom.xml 文件中引入 maven-assembly 插件;在 assembly.xml 文件中制定各个文件目录。pom.xml引入maven-assembly插件 org.apac

2017-02-25 15:34:05 1994

原创 HBase row key hotspotting

在HBase中,RegionServer hotspotting现象是很常见的。hotspotting问题的描述是这样的:当使用一个连续的row keys(sequential row keys),以便于使用start key和stop key高效地读取数据时,此时将在写数据时,造成RegionServer hotspotting。下面将会介绍怎么避免这个问题。Problem Descript

2016-07-10 11:27:25 1791 1

原创 Apache Kafka 0.9 KafkaConsumer

Kafka开始被设计时,带有一个Scala的Producer和Consumer。

2016-06-25 22:10:32 9912

原创 _all、_source、store、index的使用

1._all1.1_all field_all字段是一个很少用到的字段,它连接所有字段的值构成一个用空格(space)分隔的大string,该string被analyzed和index,但是不被store。当你不知道不清楚document结构的时候,可以用_all。如,有一document:curl -XPUT 'http://127.0.0.1:9200/myindex/order/

2016-06-18 16:57:46 2300

原创 Hadoop Counter

Hadoop Counte是Hadoop自带的一个很实用的功能,它可以统计全局某个量的数量,如,MR中用Kafka发送消息,就可以用Hadoop Counter统计发送成功信息的条数、发送失败信息的条数,以及发送信息的总条数。其实我们每个MapReduce Job跑完都有Counter打印:16/06/05 00:25:19 INFO mapreduce.Job: Counters: 50F

2016-06-05 15:55:42 2205

原创 Java Label

在Java中“{”和“}”组成一个代码块(code block),如我们最常用到的static代码块,而每个代码块都可以用一个Label,Label不是Java中的关键字,而是一个任意的标识符。由于我们一般不怎么用Label,此时难免会有人问:Label到底有什么用呢?大家不要急,且听我慢慢道来。试想一个这样的场景:有一个两重循环,但是当在内层循环中找到了满足的条件,就停止两重循环就退出执行。

2016-06-04 11:31:17 6705

原创 from-size VS scroll-scan

1.from-sizeElasticSearch可以用一种分页的形式来查询数据——from-size,https://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-from-size.html。from:定义从哪里开始拿数据。size:定义一共拿多少条数据。from-size的工作原

2016-05-12 22:46:40 2715

原创 ElasticSearch部署

1.下载ElasticSearch不仅可以在Linux上安装,还可以在Windows上安装。ElasticSearch官网下载地址:https://www.elastic.co/downloads/elasticsearch.解压安装包:$ unzip elasticsearch-2.3.1.zip设置环境变量:export ES_HOME=/home/hadoop/i

2016-05-09 23:07:03 2234

原创 Java调用Shell命令和脚本

1.介绍有时候我们在Linux中运行Java程序时,需要调用一些Shell命令和脚本。而Runtime.getRuntime().exec()方法给我们提供了这个功能,而且

2016-05-07 13:45:43 52424 3

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