自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 JAVA中8种单例模式 详解

模式一package practice10;//懒汉方式。指全局的单例实例在第一次被使用时构建。//饿汉方式。指全局的单例实例在类装载时构建。(static代码块中)/*单例模式一 饿汉模式 安全 优点:这种写法比较简单,就是在类装载的时候就完成实例化。避免了线程同步问题。缺点:在类装载的时候就完成实例化,没有达到Lazy Loading的效果。如果从始至终从未使用过这个实例...

2018-11-10 14:47:02 3182

原创 Java内存分析详解 (附图)

public class Student { int score; int age; String name; Computer computer; public void study() { System.out.println("studying..."); }}public class Computer { int price; ...

2018-11-09 21:13:41 509

原创 Flink中实用的小知识点整理

目录1、Flink使用WaterMark处理乱序事件2、累加器和计数器3、Window使用4、流的切分和合并5、任务链6、Flink消费kafka数据起始offset配置7、Flink消费kafka数据,消费者offset提交配置8、数据源9、数据存放10、运行时环境的区别11、keyedStream中进行聚合操作一.Flink使用...

2019-07-12 15:57:00 1566

原创 Flink中指定Key的几种方式

前言在Flink中比如某些算子(join,coGroup,keyBy,groupBy)要求在数据元上定义key。另外有些算子操作,例如reduce,groupReduce,Aggregate,Windows需要数据在处理之前根据key进行分组。在Flink中数据模型不是基于Key,Value格式处理的,因此不需将数据处理成键值对的格式,key是“虚拟的...

2019-07-12 15:34:00 1747

原创 决策树与随机森林及其在SparkMllib中的使用

一.概念决策树和随机森林:决策树和随机森林都是非线性有监督的分类模型。决策树是一种树形结构,树内部每个节点表示一个属性上的测试,每个分支代表一个测试输出,每个叶子节点代表一个分类类别。通过训练数据构建决策树,可以对未知数据进行分类。根节点:最顶层的分类条件叶节点:代表每一个类别号中间节点:中间分类条件分支:代表每一个条件的输出随机森林是由...

2019-07-10 21:44:00 448

原创 Spark任务输出追踪器MapOutputTracker详解

一.什么是shuffleMapOutputTrancker用于跟踪map任务的输出状态,此状态便于reduce任务定位到map输出结果所在的节点地址,进而获取中间输出结果,每个map任务或者reduce任务,都会有其唯一的标识,分别为mapid和reduceid,每个reduce任务的输入可能是多个map任务的输出,因为reduce可能会到多个map任务...

2019-07-01 19:34:00 900

原创 原理解析 | 深入了解 Apache Flink 的网络协议栈

作者:Nico Kruber翻译:曹英杰Flink 的网络协议栈是组成 flink-runtime 模块的核心组件之一,是每个 Flink 作业的核心。它连接所有 TaskManager 的各个子任务(Subtask),因此,对于 Flink 作业的性能包括吞吐与延迟都至关重要。与 TaskManager 和 JobManager 之间通过基于 Akk...

2019-06-26 13:45:00 276

原创 SQL优化:用case...when优化统计查询

最近在做的项目,有很多统计数据的地方,由于数据量相对较多,之前写的查询语句查询五十万条数据大概需要十秒左右的样子,严重影响了效率。后来在网上寻找解决方案,利用sum,case...when...重写SQL性能一下子提高到一秒钟就解决了。这里为了简洁明了的阐述问题和解决的方法,我简化一下需求模型。现在数据库有一张订单表(经过简化的中间表),表结构如下:...

2019-06-25 17:33:00 2475

原创 面试问烂的 MySQL 查询优化,看完吊打面试官!

什么影响了数据库查询速度1.1 影响数据库查询速度的四个因素1.2 风险分析QPS:QueriesPerSecond意思是“每秒查询率”,是一台服务器每秒能够相应的查询次数,是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准。TPS:是TransactionsPerSecond的缩写,也就是事务数/秒。它是软件测试结果的测量单位。客户...

2019-06-25 15:16:00 440

原创 使用NGINX作为HTTPS正向代理服务器

NGINX主要设计作为反向代理服务器,但随着NGINX的发展,它同样能作为正向代理的选项之一。正向代理本身并不复杂,而如何代理加密的HTTPS流量是正向代理需要解决的主要问题。本文将介绍利用NGINX来正向代理HTTPS流量两种方案,及其使用场景和主要问题。HTTP/HTTPS正向代理的分类简单介绍下正向代理的分类作为理解下文的背景知识:按客户端有无...

2019-06-24 10:32:00 4421

原创 Spark消息通信原理

一.NettyRpcEnv主要组件子组件TransportConf,Dispatcher,TransportClientFactory,TransportServerTransportConf 为RPC框架的中的配置类Dispatcher 可以有效提高NettyRpcEnv消息异步处理能力和并行处理能力,负责将RPC消息路由到应该对此消息处...

2019-06-24 08:40:00 501

原创 Spark中RangePartitioner的实现机制分析

一.分区器的区别HashPartitioner分区可能HashPartitioner导致每个分区中数据量的不均匀。RangePartitioner分区尽量保证每个分区中数据量的均匀,将一定范围内的数映射到某一个分区内。分区与分区之间数据是有序的,但分区内的元素是不能保证顺序的。二.RangePartitioner分区执行原理概述1.计算总体的数...

2019-06-23 08:13:00 1172

原创 Apache Kylin 从零开始构建Cube(含优化策略)

前言Apache Kylin采用“预计算”的模式,用户只需要提前定义好查询维度,Kylin将帮助我们进行计算,并将结果存储到HBase中,为海量数据的查询和分析提供亚秒级返回,是一种典型的“空间换时间”的解决方案。Kylin架构Hadoop/Hive:Kylin是一个MOLAP系统,将hive中的数据进行预计算,利用MR或者SPARK来...

2019-06-22 13:14:00 891

原创 Spring Boot2 集成 Elasticsearch、PostgreSQL 遇到的问题

项目背景  在描述和还原事故之前,简单说明下相关环境:spring boot v2.0.4.RELEASEspring-boot-starter-data-elasticsearch (以前做项目的时候,Spring Data ES跟ES服务存在版本匹配关系,但目前在spring boot v2.0.4.RELEASE中使用未发现有版本不兼容情况)...

2019-06-22 07:04:00 424

原创 揭秘|每秒千万级的实时数据处理是怎么实现的?

1、设计背景闲鱼目前实际生产部署环境越来越复杂,横向依赖各种服务盘宗错节,纵向依赖的运行环境也越来越复杂。当服务出现问题的时候,能否及时在海量的数据中定位到问题根因,成为考验闲鱼服务能力的一个严峻挑战。线上出现问题时常常需要十多分钟,甚至更长时间才能找到问题原因,因此一个能够快速进行自动诊断的系统需求就应用而生,而快速诊断的基础是一个高性能的实时数据处...

2019-06-21 12:22:00 2069

原创 Spark的数据本地化和延迟调度策略

一.概述Spark数据本地化即计算向数据移动,但数据块所在的Executor不一定有足够的的计算资源提供,为了让task能尽可能的以最优本地化级别(Locality Levels)来启动,Spark的延迟调度应运而生,资源不够可在该Locality Levels对应的限制时间内重试,超过限制时间后还无法启动则降低Locality Levels再尝试启动。...

2019-06-19 08:06:00 918

原创 Hive中语法规则大全,建议收藏

Hive一、创建/删除/修改/使用数据库# 创建数据库CREATE (DATABASE|SCHEMA) [IF NOT EXISTS] database_name [COMMENT database_comment] [LOCATION hdfs_path] [WITH DBPROPERTIES (property_name=property_valu...

2019-06-18 18:58:48 878

原创 Spark中BlockManager的存储原理

一.整体架构Spark的存储介质包括磁盘和内存。Spark的存储采用了主从模型,存储模块使用了基于Netty的RPC消息通信方式。BlockManagerMaster负责整个应用程序运行期间的数据块的元数据管理和维护。BlockManager(Slave)负责将本地数据块的状态信息上报给BlockManagerMaster,同时接受从BlockMana...

2019-06-18 07:50:00 687

原创 Spark内置图像数据源初探

概述在Apache Spark 2.4中引入了一个新的内置数据源, 图像数据源.用户可以通过DataFrame API加载指定目录的中图像文件,生成一个DataFrame对象.通过该DataFrame对象,用户可以对图像数据进行简单的处理,然后使用MLlib进行特定的训练和分类计算.本文将介绍图像数据源的实现细节和使用方法.简单使用先通过一个例子来...

2019-06-17 13:44:00 398

原创 Blink 有何特别之处?菜鸟供应链场景最佳实践

作者:晨笙、缘桥菜鸟供应链业务链路长、节点多、实体多,使得技术团队在建设供应链实时数仓的过程中,面临着诸多挑战,如:如何实现实时变Key统计?如何实现实时超时统计?如何进行有效地资源优化?如何提升多实时流关联效率?如何提升实时作业的开发效率? 而 Blink 能否解决这些问题?下面一起来深入了解。背景菜鸟从2017年4月开始探索 Blink(即 ...

2019-06-17 12:12:00 534

原创 Spark中几种ShuffleWriter的区别你都知道吗?

一.前言在Spark中有三种shuffle写,分别是BypassMergeSortShuffleWriter、UnsafeShuffleWriter、SortShuffleWriter。分别对应三种不同的shuffleHandle。这三者和ShuffleHandle的对应关系如下:UnsafeShuffleWriter:SerializedShuffleHandleByp...

2019-06-17 08:50:17 695

原创 Spark源码分析之作业和任务调度流程

一.前言Spark的作业和任务调度系统是其核心。Spark的作业调度主要是基于RDD的一系列操作构成一个作业,然后在Executor上执行,这些操作算子主要分为转换和行动算子,对于转换算子的计算是lazy级别的,也就是延迟执行,只有出现了行动算子才触发作业的提交。在Spark调度中,最重要的是DAGScheduler和TaskSechduler两个调度器...

2019-06-16 14:06:00 555

原创 Spark源码分析之Excutor资源分配流程

一.前言在用户提交应用程序时,SparkContext会向Master发送注册消息,并由Master给该应用分配Executor。这里的SparkContext主要用于负责和ClusterManager通信,进行资源的管理,任务分配和监控,负责作业执行的生命周期管理,ClusterManager提供了资源的分配和管理。在不同模式下ClusterMan...

2019-06-16 11:05:00 543

原创 Spark源码分析之SparkSubmit的流程

准备本文主要对SparkSubmit的任务提交流程源码进行分析。Spark源码版本为2.3.1。首先阅读一下启动脚本,看看首先加载的是哪个类,我们看一下spark-submit启动脚本中的具体内容。spark-submit的shell脚本可以看到这里加载的类是org.apache.spark.deploy.SparkSubmit,并且把...

2019-06-15 21:09:00 383

原创 Spark源码分析之Master的启动流程

准备本文主要对Master的启动流程源码进行分析。Spark源码版本为2.3.1。阅读源码首先从启动脚本入手,看看首先加载的是哪个类,我们看一下start-master.sh启动脚本中的具体内容。脚本代码可以看到这里加载的类是org.apache.spark.deploy.master.Master,好那我们的源码寻觅之旅就从这开始...源码分析打开源码,我...

2019-06-13 21:07:27 217

原创 五大算法设计思想,你都知道吗?

前言转载自:五大算法设计思想作者:Kevin's life一.分治法1.概念:将一个难以直接解决的大问题,分割成一些规模较小的相同问题,以便各个击破,分而治之。2.思想策略:对于一个规模为n的问题,若该问题可以容易地解决(比如说规模n较小)则直接解决,否则将其分解为k个规模较小的子问题,这些子问题互相独立且与原问题形式相同,递归地解这些子问题,然后将各子问题的解合并得...

2019-06-12 21:19:51 390

原创 Spark的不同ClusterManger提交任务的执行流程

前言了解Spark架构原理及相关任务提交流程前,我们需要先了解一下Spark中的一些角色概念。Application:用户编写的Spark应用程序,包含了一个Driver 功能的代码和分布在集群中多个节点上运行的Executor代码Driver:运行Application的main()函数并且创建SparkContext(Spark应用程序的运行环...

2019-06-12 21:11:00 323

原创 Spark中CartesianRDD依赖关系的特殊之处

前言RDD之间的依赖关系一般分为两种,宽依赖和窄依赖。窄依赖和宽依赖在网上好多博客中是这样描述宽依赖和窄依赖的特点窄依赖每个父RDD的一个Partition最多被子RDD的一个Partition所使用。如map,filter,union操作都会产生窄依赖。宽依赖一个父RDD的Partition会被多个子RDD的Partition...

2019-06-12 13:35:00 798

原创 数据结构笔面试总结

涉及的几个部分数据结构部分数组、栈、链表、队列、树、图数组数组是最简单、也是使用最广泛的数据结构。栈、队列等其他数据结构均由数组演变而来。面试问题:1、寻找数组中第二小的元素2、找到数组中第一个不重复出现的整数3、合并两个有序数组4、重新排列数组中的正值和负值栈可以把栈想象成一列垂直堆放的书。为了拿到中间的书,你需要移除放置在这上面的所...

2019-06-11 15:43:00 322

原创 Spark的编程核心RDD的实现详解

一.什么是RDDRDD是弹性分布式数据集(Resilient Distributed Dataset),RDD是只读的、 分区记录的集合。 RDD只能基于在稳定物理存储中的数据集和其他已有的RDD上执行确定性操作来创建。 这些确定性操作称为转换, 如map、 filter、 groupBy、 join。RDD含有如何从其他RDD衍生(即计算)出本RDD的...

2019-06-11 14:41:00 489

原创 Scala中的协变与逆变

协变与逆变的概念对于一个带类型参数的类型,比如 List[T],如果对A及其子类型B,满足 List[B]也符合 List[A]的子类型,那么就称为covariance(协变),如果 List[A]是 List[B]的子类型,即与原来的父子关系正相反,则称为contravariance(逆变)。协变: _____ _____________ | ...

2019-06-09 20:46:34 273

原创 深入理解Flink核心技术及原理

前言Apache Flink(下简称Flink)项目是大数据处理领域最近冉冉升起的一颗新星,其不同于其他大数据项目的诸多特性吸引了越来越多人的关注。本文将深入分析Flink的一些关键技术与特性,希望能够帮助读者对Flink有更加深入的了解,对其他大数据系统开发者也能有所裨益。本文假设读者已对MapReduce、Spark及Storm等大数据处理框架有所了...

2019-06-09 16:56:00 1101

原创 Flink基本API的使用

概述Flink使用 DataSet 和 DataStream 代表数据集。DateSet 用于批处理,代表数据是有限的,而 DataStream 用于流数据,代表数据是无界的。数据集中的数据是不可以变的,也就是说不能对其中的元素增加或删除。我们通过数据源创建 DataSet 或者 DataStream ,通过 map,filter 等转换(transform)操作对数据集进行操作...

2019-06-07 16:42:20 219

原创 JStorm和Strom的区别,没有对比就没有伤害

前言Storm的内核是clojure编写的,目前阿里巴巴公司已经有开源的Copy版本JStorm。简单的概述对比就是:JStorm 比Storm更稳定,更强大,更快,Storm上跑的程序,一行代码不变可以运行在JStorm上。直白的将JStorm是阿里巴巴的团队基于Storm 的二次开发产物,相当于他们的Tengine是基于Nginx开发的一样。以下为阿里巴巴团队放弃直接使...

2019-06-07 12:01:59 716

原创 Storm的调度系统Scheduler概述

一.Scheduler概述Scheduler是Storm的调度器, 它负责为Topology分配当前集群中可用的资源。 Storm定义了IScheduler接口, 用户可以通过实现该接口来定义自己的Scheduler。 Storm提供了几种Scheduler,分别是EvenScheduler、 DefaultScheduler和IsolationScheduler,Pluggab...

2019-06-06 21:45:19 854

原创 Storm中几种基本的Bolt接口的特点

Storm中几种基本的Bolt接口的特点Storm中定义的Bolt接口主要有IBolt 、 IRichBolt 、 IBasicBolt和IBatchBolt,先看一下类图bolt类图一.IRichBoltStorm中最常用来定义Topology组件的接口。 它十分灵活, 用户可以通过其实现各种控制逻辑, 并且能控制何时进行Ack 、 ...

2019-06-06 20:38:00 936

原创 Storm事务核心CoordinatedBolt源码分析

一.CoordinatedBolt中的消息类型REGULAR: 正常的数据消息。ID: 从协调Spout节点收到的事务提交消息:COORD: 其他的CoordinatedBolt收到的协调消息CoordinatedBolt会根据输入消息的流号来对消息的类型进行判断。 Topology构建器会将 实现了ICommitter的 Bolt中的_idStreamSpec设为协调...

2019-06-06 20:03:01 174

原创 Storm关于如何保证事务顺序性的源码分析

关于如何保证事务顺序性的源码分析我们看一下事务协调TransactionalSpoutCoordinator类的主要代码实现...首先看看最重要的nextTuple方法@Override public void nextTuple() { sync(); }这里调用了sync()方法private void sync() { ...

2019-06-06 08:59:07 239

原创 Storm事务 Topology 的实现概述

事务Topology的实现概述1.事务类型的Spout节点实际上是一个子Topology, 它包含一个协调Spout节点( Coordinator ),以及一些消息发送Bolt节点( Emitter )。2.协调Spout节点的并行度为1, 消息发送Bolt节点的并行度则可根据需要来设定。3.协调Spout节点并不发送实际的数据, 而是将事务尝试发送到消息将Bolt节点中。 ...

2019-06-05 21:56:58 178

原创 Storm消息可靠性保证机制ack与fail原理

一.Storm spout的nextTuple以及bolt的executeStorm的API非常丰富,但是记住,本文介绍的ACK机制需要特殊的支持。也就是说,本文所说的ACK的机制只是Storm的一种可选机制,你完全可以无视它去选择一种轻量的无确认的Best effort方式去使用Storm,本文之所以单独介绍ACK机制,是因为其优雅。在编写spout...

2019-06-04 08:06:00 339

空空如也

空空如也

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

TA关注的人

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