自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 kafka producer线程与吞吐量

1.问题背景kafka是以高吞吐量著称的,但日前解决一个实际问题中,发现使用不当仍会无法充分利用起吞吐量。我们的场景如下:有两个kafka集群,需要从上游kafka读一个topic的消息,做一些自定义处理,再写到下游kafka的特定topic(有人说用flume,确实可以,不过自定义处理比较复杂的时候用flume就有点麻烦了)这里集中在写这一端(读没有问题),开始使用最简单的方式,...

2016-04-26 16:06:21 1973

原创 Spark Streaming有状态计算的实际问题

1.背景spark streaming有状态计算(如UV)通常采用DStream.updateStateByKey(实际是PairDStreamFunctions增强到DStream的),具体实现网上讲的很多。spark streaming是持续计算,有状态时不能通过简单的DAG/lineage容错,所以必须设置checkpoint(否则Job启动会报错)checkpoint会持久化当...

2016-04-08 18:30:14 627

原创 hadoop/spark关闭钩子研究

引子:在使用spark和hadoop的时候,遇到一些进程退出时的报错。因此顺便研究了一下jvm以及一些开源框架的关闭钩子的机制。这篇文章不涉及底层native实现,仅限Java层面 1.jvm关闭钩子注册jvm关闭钩子通过Runtime.addShutdownHook(),实际调用ApplicationShutdownHooks.add()。后者维护了一个钩子集合IdentityH...

2016-02-06 09:39:11 313

原创 netty+javassist轻量级http服务&RequestMapping框架

在做一些后台服务的时候,有时候需要一些轻量级的Http入口,以便通过浏览器就能实现便捷的后台功能,例如 1.监控服务运行状态,如服务存在性、版本、配置、性能等2.手动触发一些功能入口(特别适合测试环境的冒烟测试)3.支持一些紧急操作,例如手动清缓存,有时候排查问题有用 这些操作通常数量不多,也没什么并发,专门搭一套web框架(如tomcat+spring mvc)有点浪...

2016-01-22 14:31:41 255

原创 spark枚举类作为Key时跨进程问题

最近在集群上跑spark时发现有些reduceByKey操作结果不符合预期,大致伪代码如下(公司统一用java,就没写成scala,用了scala的简写节省字数)。就是类似WordCount的简单计算,DimType是一个枚举类 JavaPairRDD<DimType, Long> rawRdd=...; JavaPairRDD<DimTy...

2016-01-21 15:09:54 128

原创 spark源码梳理(1)-Action提交2

续上篇 Step 5-TaskSchedulerImploverride def submitTasks(taskSet: TaskSet) {  val tasks = taskSet.tasks  logInfo("Adding task set " + taskSet.id + " with " + tasks.length + " tasks")  this.s...

2016-01-14 17:53:47 149

原创 spark源码梳理(1)-Action提交1

1.概述Action算子是触发Spark计算的入口,属于Spark核心逻辑。本文梳理Action触发、计算、返回的整个数据流 本文涉及代码主体位于org.apache.spark.scheduler/rdd/executor几个模块。核心类:RDD、SparkContext、DAGScheduler、TaskSchedulerImpl、CoarseGrainedSchedulerB...

2016-01-03 16:58:22 131

原创 spark源码梳理(0)-说明

本系列文章为对Spark主要逻辑源码学习整理。主要参考《Spark技术内幕》一书(简称《内幕》)。《内幕》主要以源码模块为主线进行横向解析。本文则致力于由“事件”触发的纵向逻辑为主线,例如Action算子、Transform算子、集群启动等,这个角度基本Spark运行时的调用栈。各主线直接没有必然的先后联系 如无特别说明,本文基于Spark 2.10版本源码,并且仅讨论Standalo...

2016-01-03 16:58:01 109

原创 Java类源码学习(2)-HashMap-3

再接上篇,HashMap的最后一部分源码主要是TreeNode逻辑实现,其中包含红黑树增删的相关算法(具体可以参考红黑树的相关介绍)  /** * TreeNode的Entry类 * * TreeNode维持为红黑树,保证树的高度为O(logN),并按hashCode有序 */ static final class T...

2015-11-13 15:44:39 76

原创 Java类源码学习(2)-HashMap-2

本文是上一篇的继续,补全HashMap剩余部分源码主要是KeySet实现以及一些java8特性方法签名(实现省略了) /** * 返回键值集合的一个视图 * * <pre> * 实际是实现key集合的一个引用迭代子,HashMap本身的变更可以在keySet中直接反映出来 * * 如果HashM...

2015-11-13 15:05:32 92

原创 Java类源码学习(2)-HashMap-1

HashMap是最常用的Map实现因为源码很长,先列举一些关键点。这些信息在常规使用中可能不容易被了解到 1.HashMap中的元素按照hash值分为不同的“桶”(bin),如果散列特性好,元素在桶中分布会比较均匀2.实际存储用的hash值并非直接使用key.hashCode(),而是又做了一层散列,避免原生的hashCode()散列性不好3.单个桶尺寸过大时,桶会重构为一...

2015-11-13 14:54:54 96

原创 Ehcache注解核心逻辑源码学习

Ehcache支持方法注解方式管理缓存,使代码的侵入性很小。最常用的Ehcache注解是@Cacheable、@CacheEvict、@CachePut本文通过分析源码整理了这几个注解的实现逻辑和关系,并指出一些组合使用时的限制 1注解类源码1.1@Cacheable/** * Cacheable注解缓存方法(或类的所有方法)返回值,缓存Key是方法本身和参数的组合签名...

2015-10-31 16:10:40 302

Java类源码学习(0)-简要说明

本分类是对Java一些基础类源码的学习记录 很多平时用惯的类和方法,细看源码的话还是有不少细节和优化的(虽然用的时候很多时候不需要想这么多)。作为一个语言的基础代码,需要考虑非常全面;同时一些细小的优化可能带来很大的不同(因为使用的地方特别多),所以很多方面还是值得学习的,对于自己开发基础服务/基础模块是很有帮助的 文章内容主要是以对源码注释文档的翻译为主,也包含一些自己的理解...

2015-10-23 11:17:17 67

Java类源码学习(1)-Object

package my.java.lang;/** * 所有类的基类,所有的对象(包括数组)都继承Object类 * * @author unascribed * @version 1.73, 03/30/06 * @see java.lang.Class * @since JDK1.0 */public class Object { /**...

2015-10-23 11:00:52 73

空空如也

空空如也

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

TA关注的人

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