自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

走向程序的康庄大道

宝剑锋从磨砺出,梅花香自苦寒来。

  • 博客(150)
  • 资源 (9)
  • 收藏
  • 关注

原创 Spark核心原理 - 消息通信分析

Spark将通信层设计的非常巧妙,融合了各种设计/架构模式,将一个分布式集群系统的通信层细节完全屏蔽,这样在上层的计算框架的设计中能够获得很好的灵活性。同时,如果上层想要增加各种新的特性,或者对来自不同企业或组织的程序员贡献的特性,也能够很容易地增加进来,可以避开复杂的通信层而将注意力集中在上层计算框架的处理和优化上,入手难度非常小。另外,对上层计算框架中的各个核心组件的开发、功能增强,以及Bug...

2018-05-30 01:51:22 1773

原创 Kafka 消息偏移量的维护

Kafka是大数据领域常用的消息队列,其高效的吞吐量和分布式容错等特性是其收到青睐的重要原因。kafka消息的位置用好Kafka,维护其消息偏移量对于避免消息的重复消费与遗漏消费,确保消息的Exactly-once是至关重要的。 kafka的消息所在的位置Topic、Partitions、Offsets三个因素决定。 Kafka消费者消费的消息位置还与consumer的group.id有关。co

2017-08-02 17:11:02 16560 4

原创 哈希表

哈希表(Hash Table)我们知道,通过对数组进行直接寻址(Direct Addressing),可以在 O(1) 时间内访问数组中的任意元素。所以,如果存储空间允许,可以提供一个数组,为每个可能的关键字保留一个位置,就可以应用直接寻址技术。哈希表(Hash Table)是普通数组概念的推广。当实际存储的的关键字数比可能的关键字总数较小时,这时采用哈希表就会比使用直接数组寻址更为有效。

2017-03-08 17:55:00 590

原创 RocketMQ延迟消息

延迟消息介绍延迟队列表示生产的消息发送到服务端后,并不能立刻被消费者消费,等到到达消息的延迟时间后才会被消费。场景案例:用户下了一个订单之后,需要在指定时间内(例如30分钟)进行支付,在到期之前可以发送一个消息提醒用户进行支付。一些消息中间件的Broker端内置了延迟消息支持的能力,如:RabbitMQ:需要安装一个rabbitmq_delayed_message_exchange插件。RocketMQ:RocketMQ 开源版本延迟消息临时存储在一个内部主题中,不支持任意时间精度,支持特定的

2021-07-11 19:03:33 1812

原创 Kafka vs Rocketmq如何实现exactly once语义

消息语义消息队列发送消息的三种语义在分布式系统中,构成系统的任何节点都是被定义为可以彼此独立失败的。根据producer处理此类故障所采取的提交策略类型,我们可以获得不同的语义:at least once消息至少被写入一次。producer发送消息到服务端后,收到服务端返回的确认ack,表示消息写入成功。如果消息写入服务端后,服务端因为宕机等原因没有发送ack给producer,producer重试再次发送消息,导致一条消息写入多次。at most once消息至多被写入一次。produ

2021-07-11 19:00:34 1747

转载 详解 TCP 连接的“ 三次握手 ”与“ 四次挥手 ”

目录详解 TCP 连接的“ 三次握手 ”与“ 四次挥手 ”TCP报文格式简介TCP的三次握手TCP的四次挥手四次挥手详解为什么要客户端在TIME-WAIT阶段要等待2MSL呢?为什么“握手”是三次,“挥手”却要四次?详解 TCP 连接的“ 三次握手 ”与“ 四次挥手 ”TCP报文格式简介其中比较重要的字段有:(1)序号(sequence number):Seq序号,占32位,用来标识从TCP源端向目的端发送的字节流,发起方发送数据时对此进行标记。..

2020-12-29 20:11:06 236

原创 服务器最大TCP连接数及调优汇总

单机最大tcp连接数在tcp应用中,server事先在某个固定端口监听,client主动发起连接,经过三路握手后建立tcp连接。那么对单机,其最大并发tcp连接数是多少?如何标识一个TCP连接在确定最大连接数之前,先来看看系统如何标识一个tcp连接。系统用一个4四元组来唯一标识一个TCP连接:{local ip, local port,remote ip,remote port}。client最大tcp连接数client每次发起tcp连接请求时,除非绑定端口,通常会让系统选取一个空闲的本

2020-12-24 17:33:22 7891 5

原创 Reactor反应器模式

什么是Rector反应器?《Scalable IO in Java》中对反应器模式的定义中,反应器模式由Rector反应器线程、Handlers处理器两种角色组成。1)Rector反应器线程:负责响应IO事件,并且分发到Handlers处理器;2)Handlers处理器:非阻塞的执行业务处理逻辑;OIO模型Rector单线程模型Rector多线程模型Rector主从模型...

2020-10-26 21:49:45 128

转载 唯品会海量实时OLAP分析技术升级之路

【文章来源:DBAplus社群。本文根据谢麟炯老师在〖DAMS 2017中国数据资产管理峰会〗现场演讲内容整理而成】讲师介绍谢麟炯,唯品会大数据平台高级技术架构经理,主要负责大数据自助多维分析平台,离线数据开发平台及分析引擎团队的开发和管理工作,加入唯品会以来还曾负责流量基础数据的采集和数据仓库建设以及移动流量分析等数据产品的工作。分享大纲: 海量数据实时OLAP场景的困境 唯品会大数据实时OLAP升级过程 唯品会在开源计算引擎上所做的改进 OLAP方案升

2020-10-24 18:09:42 338

原创 ES如何保证数据不丢

ES分片上的数据写入过程ES分片是对一个lucene实例的抽象,最终调用的都是lucene的缓冲和提交能力。1)将BulkItemRequests的每条数据在ES中被封装成index对象;2)ES调用lucene的addOrUpdateDocument()将数据缓冲到page cache;写入成功后,更新记录事务日志location;批量数据写入成功后,执行sync()将translog落盘;3)lucene执行fsync把数据落盘,并执行提交操作,将数据可见;过程如图所示可以看

2020-10-02 17:57:36 1245

原创 ES分布式写入的数据一致性问题

ES数据写入过程ES索引由多个分片组成,分片有主分片和副本分片,且主分片和副本不能同时在同一节点上。可以看到,ES数据写入是一个分布式的过程。假设客户端发送批量写请求,ES写入过程如下:1)协调节点接收到写请求,并做参数校验处理、生成id等;2)计算每条数据归属的主分片,形成Map<ShardId, List<RequestBulkItem>>列表;3)根据上面的列表,协调节点异步并行转发到所属分片;4)主分片接收到协调节点转发过来的请求,先由lucene写入pa

2020-10-02 15:47:47 3744

原创 什么是redis缓存雪崩、缓存穿透、缓存击穿

使用redis缓存的目的1、为了防止大量用户查询直接打到数据库,将数据库打挂;2、提升查询效率;如果redis使用不当,会出现一些异常情况,如缓存雪崩、缓存穿透、缓存击穿。缓存雪崩什么是缓存雪崩?redis缓存KV的时候,会指定缓存失效时间。如果在同一时间对缓存KV设置了相同的缓存失效时间,则到失效时间的时候,请求在redis中已经查不到数据,进而直接请求数据库,由于访问数据库请求突然爆发增长,可能打挂数据库,进而导致其他系统的崩溃。缓存集中失效的场景就是缓存雪崩。如何避免缓存雪

2020-10-02 10:14:28 146

原创 设置健壮的RestClient客户端链接

问题描述:在使用elasticsearch提供的RestClient api的时候,经常会产生超时异常,(1)request retries exceeded max retry timeout [30000];(2)java.lang.RuntimeException: error while performing request;java.lang.RuntimeException: error while performing request at org.elasticsearch

2020-07-31 17:49:12 4900

原创 Lucene文件格式简介

1、定义Lucene中基本的概念包括index、document、field、term。一个index包含一系列的documents; 一个document包含一系列的fields; 一个field包含一系列的terms; 一个term是一系列的bytes;2、分段Lucene索引可能由多个分段(segment)组成,每个分段是完全独立的,可以独立的执行搜索。有两种情况产生新的...

2020-03-12 17:58:14 638

原创 UML类图关系

依赖、关联、聚合、组合的UML类图表示以及关系之间的联系与区别。依赖一个类A使用到了另一个类B,这种使用是具有临时性的、非常弱的,但是类B的变化会影响到A。表现在代码层面,一般是类B作为参数在类A中的某个方法中被使用。关联关联体现的是两个类或者类与接口之间予语义级别的一种强依赖关系,关系不是临时的,一般是长期的,而且双方的关系一般是平等的,关联可以是单向的、双向的。表现...

2020-01-09 20:34:18 302

原创 ESRally基准测试工具离线使用简介

ESRally安装运行ESRally需要依赖Python3,Git。本篇是针对Centos7系统。安装依赖安装Python3yum install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel解压Python-3.5.0.tgz安装包sudo mkdir /usr/lo...

2019-12-10 14:56:25 1773

转载 性能指标TP99

首先给出Google到的答案:The tp90 is a minimum time under which 90% of requests have been served.tp90 = top percentile 90Imagine you have response times:10s1000s100s2sCalculating TP is very simple:...

2019-10-12 10:13:35 490

原创 bash shell知识点

大小写转换# 将输入的第一个参数转为大写answer=$(echo "$1" | tr [A-Z] [a-z])echo "$1" "$answer"远程通信ssh -Tq $IP << EOF COMMAND_0 COMMAND_1 exit EOF...

2019-04-26 17:09:40 203

原创 HFile校验

HBase 表大小统计:hbase org.apache.hadoop.hbase.mapreduce.RowCounter test:standardHFile校验:#]hbase hfileusage: HFile [-a] [-b] [-e] [-f <arg> | -r <arg>] [-h] [-k] [-m] [-p] [-s]...

2019-03-25 17:38:43 743

原创 IO工具包commons-io

<dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.4</version></dependency>FileUtils/** * &...

2019-03-22 18:15:26 440

原创 Java用数组实现队列

数组实现队列,实际是通过维护队首和队尾变量来实现一个循环数组,从而实现复杂度为1的FIFO队列。interface Queue&lt;T&gt; { boolean add(T t) throws Exception; T take();}public class ArrayQueue&lt;T&gt; implements Queue&lt;T&gt; { ...

2019-03-12 15:15:55 697

原创 Java集合工具包com.google.guava:guava

&lt;dependency&gt; &lt;groupId&gt;com.google.guava&lt;/groupId&gt; &lt;artifactId&gt;guava&lt;/artifactId&gt; &lt;version&gt;19.0&lt;/version&gt;&lt;/dependency&gt;Listspac

2019-02-26 20:58:54 3900

原创 Java集合工具包commons-collections

&lt;dependency&gt; &lt;groupId&gt;commons-collections&lt;/groupId&gt; &lt;artifactId&gt;commons-collections&lt;/artifactId&gt; &lt;version&gt;3.2.2&lt;/version&gt;&lt;/dependency&gt

2019-02-13 15:27:25 2561

原创 Linux Cron 表达式

Linux Cron表达式Cron表达式的定义Linux的Cron表达式支持分钟、小时、月的某天、月份、周当中的某天,最小的粒度到分钟、最大的粒度到月份和周的某天。编辑一个linux定时任务:crontab -e每位的意义* * * * * 要执行的命令----------------| | | | || | | | ---- 周当中的某天 (0 - 7) (周日...

2019-01-10 17:29:44 4153

原创 Java多线程 - 内置锁与高级锁机制

当多线程共享一个资源变量的时候,需要对线程加以控制,以保证线程是安全的,共享的资源被有效的使用。内置锁(监视锁)synchronized作用域代码块上,是一种内存可见的内置锁。synchronized是一种可重入锁:同一个线程可以获得它自己持有的锁。synchronized(x1) { code1; synchronized(x2) { code2; }}显示锁...

2019-01-08 19:58:50 654

原创 大数据文件格式揭秘:Parquet、Avro、ORC

 Parquet、Avro、ORC格式相同点基于Hadoop文件系统优化出的存储结构 提供高效的压缩 二进制存储格式 文件可分割,具有很强的伸缩性和并行处理能力 使用schema进行自我描述 属于线上格式,可以在Hadoop节点之间传递数据 不同点行式存储or列式存储:Parquet和ORC都以列的形式存储数据,而Avro以基于行的格式存储数据。 就其本质而言,...

2018-12-17 20:50:28 5352

原创 RDD repartition过程源码阅读

 将rdd的分区数量由少变多,需要调用repartition算子。 /** * reparition实际调用coalesce,并且shuffle=true / def repartition(numPartitions: Int)(implicit ord: Ordering[T] = null): RDD[T] = withScope { coalesce(nu...

2018-12-17 15:47:28 920

原创 Spark 闭合函数清理

 来看下面的函数def coalesce(numPartitions: Int, shuffle: Boolean = false, partitionCoalescer: Option[PartitionCoalescer] = Option.empty) (implicit ord: Ordering[T] = null) ...

2018-12-17 15:17:36 386

原创 数据结构 - 树 - B树、B+树

前言动态查找树主要有:二叉查找树(Binary Search Tree),平衡二叉查找树(Balanced Binary Search Tree),红黑树(Red-Black Tree ),B-tree/B+-tree/ B*-tree (B~Tree)。前三者是典型的二叉查找树结构,其查找的时间复杂度O(log2N)与树的深度相关,那么降低树的深度自然会提高查找效率。但是咱们有面对这样一...

2018-12-05 17:09:13 224

原创 数据结构 - 树 - Trie树

 Trie树定义Trie树,又称字典树,单词查找树或者前缀树,是一种用于快速检索的多叉树结构,如英文字母的字典树是一个26叉树,数字的字典树是一个10叉树。Trie树可以利用字符串的公共前缀来节约存储空间。如下图所示,该trie树用10个节点保存了6个字符串tea,ten,to,in,inn,int:在该trie树中,字符串in,inn和int的公共前缀是“in”,因此可以只存...

2018-12-05 11:58:12 287

原创 数据结构 - 树 - 堆

 堆的定义堆的定义如下:堆树是一颗完全二叉树; 堆树中某个节点的值总是不大于或不小于其孩子节点的值; 堆树中每个节点的子树都是堆树.当父节点的键值总是大于或等于任何一个子节点的键值时为最大堆.当父节点的键值总是小于或等于任何一个子节点的键值时为最小堆.如下图,左边为最大堆,右边为最小堆. 堆树的操作以最大堆为例,最小堆同理.构造最大堆原始数据为a[] = ...

2018-12-05 11:28:56 203

原创 服务器TIME_WAIT和CLOSE_WAIT详解和解决办法

 链接:服务器TIME_WAIT和CLOSE_WAIT详解和解决办法;HttpClient连接池抛出大量ConnectionPoolTimeoutException: Timeout waiting for connection异常排查;   

2018-10-13 15:01:31 360

原创 tcp的三次握手与四次握手

 tcp连接打开的三次握手,关闭的四次握手过程 在服务器的日常维护过程中,会经常用到下面的命令:~]# netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'CLOSE_WAIT 108ESTABLISHED 819FIN_WAIT2 40TIME_WAIT 742常用的三个状态是:...

2018-10-13 14:55:25 208

原创 Spark取TopN问题

数据处理中, 经常会遇到取TopN的问题. 在Spark中,取TopN有如下的方法:生成rdd 读取数据源的数据并转为rdd.val rdd = sc.textFile()分区将rdd划分分区,分区的个数根据实际的数据量和计算集群机器的数量以及核心数确定.val partitionedRDD = rdd.coalesce(partitions)kv变换把每条数据...

2018-09-06 20:39:07 2123

原创 hive表存储为parquet格式

Hive0.13以后的版本创建存储格式为parquet的hive表:CREATE TABLE parquet_test ( id int, str string, mp MAP&lt;STRING,STRING&gt;, lst ARRAY&lt;STRING&gt;, strct STRUCT&lt;A:STRING,B:STRING&gt;) PARTITIONED BY...

2018-09-04 11:49:00 30951 1

原创 Oozie与Spark2整合

准备Oozie环境Oozie版本:4.2.0,从源码手动编译安装包源码包:oozie-4.2.0.tar.gztar -zxvf oozie-4.2.0.tar.gz -C $OOZIE_SRC_HOMEBuilding Ooziecd $OOZIE_SRC_HOMEbin/mkdistro.sh -DskipTests -Phadoop-2 -Dhadoop.auth.v...

2018-09-03 18:04:32 1171

原创 Spark on Yarn任务运行的日志收集

Spark on yarn环境:基于CDH的大数据组件平台。yarn服务有resource manager和node manager组成,在yarn上运行的任务,由一个ApplicationMaster和多个container组成。Spark 运行由一个driver和多个executor组成,Spark on Yarn时,Spark的driver和executor分别运行在yarn的c...

2018-08-21 21:31:34 8052

原创 Linux设置开机自启动

linux系统启动的时候,会自动执行/etc/rc.local中的命令。将需要开机自启动的服务的启动命令放到/etc/rc.local中即可。 示例:开机自启动mongodbvim /etc/rc.local/usr/local/mongodb/bin/mongod -config /usr/local/mongodb/bin/mongodb.conf ...

2018-08-21 16:30:53 318

原创 Linux别名设置

 linux为命令设置别名一、可以在/etc/bashrc中添加别名# add alias namealias ap="netstat -nptl"source /etc/bashrc 或者 source ~/.bashrc 或者 source ~/.bash_profile二、在~/.bashrc中添加别名source ~/.bashrc 或者 source ~/.b...

2018-08-21 16:11:33 1139

原创 Linux的grep与egrep、fgrep

grep是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。Unix的grep家族包括grep、egrep和fgrep。egrep和fgrep的命令只跟grep有很小不同。egrep是grep的扩展,支持更多的re元字符, fgrep就是fixed grep或fast grep,它们把所有的字母都看作单词,也就是说,正则表达式中的元字符表示回其自身的字面意义,不再特殊。li...

2018-08-21 14:32:53 1038

elasticsearch6.7.2源码

因墙的原因,从github上下载源代码非常缓慢,为方便下载,特将elasticsearch6.7.2源码上传,方便在快速下载

2019-05-04

linux连接工具xshell5

1、windows连接linux工具,包含xshell/xftp。 2、提供 session会话保存,个性化的交互设计。

2019-04-29

Rufus启动盘制作

2016-10-17

分区助手6.1.1

分区助手6.1.1

2016-10-17

EasyBCD 启动加载项工具

2016-10-17

Rufus启动盘制作工具

2016-10-17

protobuf-2.5.0.tar.gz

Protocol Buffers 是一种轻便高效的结构化数据存储格式,可以用于结构化数据串行化,很适合做数据存储或 RPC 数据交换格式。它可用于通讯协议、数据存储等领域的语言无关、平台无关、可扩展的序列化结构数据格式。目前提供了 C++、Java、Python 三种语言的 API。

2015-12-18

windows/linux密码管理工具

使用于windows和linux系统的密码管理工具,提供口令加密登录和密钥文件两种登录方式

2015-12-09

本地搜索引擎

windows的本地搜索引擎,快速查找目标文件,方便简洁

2015-12-09

空空如也

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

TA关注的人

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