- 博客(171)
- 资源 (17)
- 收藏
- 关注
原创 高并发系统的限流
在开发高并发系统时有三把利器用来保护系统:缓存、降级和限流。本文结合作者的一些经验介绍限流的相关概念、算法和常规的实现方式。缓存缓存比较好理解,在大型高并发系统中,如果没有缓存数据库将分分钟被爆,系统也会瞬间瘫痪。使用缓存不单单能够提升系统访问速度、提高并发访问量,也是保护数据库、保护系统的有效方式。大型网站一般主要是“读”,缓存的使用很容易被想到。在大型“写”系统中,缓存也常常扮演者非常重要的角色。比如累积一些数据批量写入,内存里面的缓存队列(生产消费),以及HBase写数据的机制等等也都是通过缓存提升系
2021-07-19 22:28:01 155
原创 Java 并发开发:Lock 框架详解
我们已经知道,synchronized 是Java的关键字,是Java的内置特性,在JVM层面实现了对临界资源的同步互斥访问,但 synchronized 粒度有些大,在处理实际问题时存在诸多局限性,比如响应中断等。Lock 提供了比 synchronized更广泛的锁操作,它能以更优雅的方式处理线程同步问题。本文以synchronized与Lock的对比为切入点,对Java中的Lock框架的枝干部分进行了详细介绍,最后给出了锁的一些相关概念。一. synchronized 的局限性 与 Lock 的优
2021-07-19 22:26:07 269
原创 多线程详解
用多线程只有一个目的,那就是更好的利用cpu的资源,因为所有的多线程代码都可以用单线程来实现。说这个话其实只有一半对,因为反应“多角色”的程序代码,最起码每个角色要给他一个线程吧,否则连实际场景都无法模拟,当然也没法说能用单线程来实现:比如最常见的“生产者,消费者模型”。很多人都对其中的一些概念不够明确,如同步、并发等等,让我们先建立一个数据字典,以免产生误会。 多线程:指的是这个程序(一个进程)运行时产生了不止一个线程 并行与并发: 并行:多个cpu实例或者多台机器同时
2021-07-19 22:23:29 255
原创 SpringBoot2
第一季:SpringBoot2核心技术-基础入门学习要求熟悉Spring基础 熟悉Maven使用环境要求3、时代背景3.1、微服务James Lewis and Martin Fowler (2014) 提出微服务完整概念。https://martinfowler.com/microservices/In short, the microservice architectural style is an approach to developing a single ap
2021-07-19 11:01:44 1405
转载 JVM调优总结
目录数据类型堆与栈Java对象的大小引用类型按照基本回收策略分按分区对待的方式分按系统线程分如何区分垃圾如何处理碎片如何解决同时存在的对象创建和对象回收问题为什么要分代如何分代什么情况下触发垃圾回收分代垃圾回收流程示意选择合适的垃圾收集算法小结堆大小设置回收器选择辅助信息常见配置汇总调优总结垃圾回收的瓶颈增量收集的演进Garbage Firest(G1)展望JVM调优工具如何调优线程监控内存泄漏检查垃圾回收的悖论我们的内存中都放了什么解决之道转载:JVM调优总结(一)-- 一些概念转载:J...
2021-07-19 09:28:29 121
转载 MAC OS下使用JAVE将amr转mp3的坑
由于项目需求,需要将android手机上的录音文件上传到后台,可是在android上的录音都是amr格式的,在mac上无法播放。直接android上转码又不太好实现。于是这个工作交给后端来实现。JAVE是基于ffmpeg的很强大的转码工具。下载地址 http://www.sauronsoftware.it/projects/jave/download.php下载了最新的1.0.2版本,加载...
2020-03-31 11:36:22 587
转载 java上传下载
文件上传一直是Web项目中必不可少的一项功能。项目结构如下:(这是我之前创建的SSM整合的框架项目,在这上面添加文件上传与下载)主要的是FileUploadController,doupload.jsp,up.jsp,springmvc.xml1.先编写up.jsp<form action="doupload.jsp" enctype="multipart/form-data...
2019-12-04 21:26:12 125
原创 SparkContext
Spark的开发者都知道SparkContext是编写Spark程序用到的第一个类,足以说明SparkContext的重要性;SparkContext为Spark的主要入口点,简明扼要,如把Spark集群当作服务端那Spark Driver就是客户端,SparkContext则是客户端的核心;如注释所说 SparkContext用于连接Spark集群、创建RDD、累加器(accumlator)、广
2017-04-08 23:30:00 3113
转载 spark性能调优:开发调优
在大数据计算领域,Spark已经成为了越来越流行、越来越受欢迎的计算平台之一。Spark的功能涵盖了大数据领域的离线批处理、SQL类处理、流式/实时计算、机器学习、图计算等各种不同类型的计算操作,应用范围与前景非常广泛。 然而,通过Spark开发出高性能的大数据计算作业,并不是那么简单的。如果没有对Spark作业进行合理的调优,Spark作业的执行速度可能会很慢,这样就完全体现不出Spa
2016-07-04 16:51:59 590
转载 spark性能调优:资源优化
在开发完Spark作业之后,就该为作业配置合适的资源了。Spark的资源参数,基本都可以在spark-submit命令中作为参数设置。很多Spark初学者,通常不知道该设置哪些必要的参数,以及如何设置这些参数,最后就只能胡乱设置,甚至压根儿不设置。资源参数设置的不合理,可能会导致没有充分利用集群资源,作业运行会极其缓慢;或者设置的资源过大,队列没有足够的资源来提供,进而导致各种异常。总之,无论是哪
2016-07-04 16:51:14 522
转载 spark性能优化:数据倾斜调优
调优概述有的时候,我们可能会遇到大数据计算中一个最棘手的问题——数据倾斜,此时Spark作业的性能会比期望差很多。数据倾斜调优,就是使用各种技术方案解决不同类型的数据倾斜问题,以保证Spark作业的性能。数据倾斜发生时的现象 1、绝大多数task执行得都非常快,但个别task执行极慢。比如,总共有1000个task,997个task都在1分钟之内执行完了,但是剩余两三
2016-07-04 16:50:01 566
转载 Hadoop2.7.1 集群部署及自动化脚本
http://blog.csdn.net/zcf1002797280/article/details/49500027实验环境操作系统:ubuntu 14.04 64位主机名IPnamenode10.107.12.10datanode110.107.12.20datanode2
2016-06-30 15:49:01 606
原创 第20课:Spark Streaming中动态Batch Size实现初探
1.BatchDuration与ProcessTime2.动态Batch SizeBatch越小越快,越快越安全Spark.streaming.receiver.maxRate 设置最大速率Spark.streaming.backpressure.rateEstimator要设置成true,最大限定数率
2016-06-21 13:43:34 700
原创 第19课:Spark Streaming架构设计和运行机制大总结
1.sparkStreaming中架构设计和运行机制2.SparkStreaming深度思考 Spark Streaming的本质是在Spark的RDD的基础之上加上了Timer,Timer不断的运行触发周而复始的接受数据,产生Job处理数据。因为时间是流动的,所以加上了时间维度的话,RDD也是流动的,所谓RDD的流动,就是每隔时间间隔,都会有新的RDD实例产生,这个实例来自于DS
2016-06-21 13:42:30 974
原创 第18课:Spark Streaming中空RDD处理及流处理程序优雅的停止
1.SparkStreaming中空RDD处理JobGenerator/** Generate jobsand perform checkpoint for the given`time`. */private def generateJobs(time: Time) { // Set the SparkEnv in this thread, so that jobgene
2016-06-21 13:41:41 2789
原创 第17课:Spark Streaming资源动态申请和动态控制消费速率原理剖析
高级特性:1、Spark Streaming资源动态分配2、Spark Streaming动态控制消费速率原理剖析,动态控制消费速率其后面存在一套理论,资源动态分配也有一套理论。先讲理论,后面讨论。Heron可能替代strom为什么要动态资源分配和动态控制速率?Spark默认是先分配资源,然后计算;粗粒度的分配方式,资源提前分配好,有计算任务提前分配好资源;不好的地方:
2016-05-31 17:11:02 1333
原创 第16课:Spark Streaming源码解读之数据清理内幕彻底解密
本讲从二个方面阐述:数据清理原因和现象数据清理代码解析 Spark Core从技术研究的角度讲对Spark Streaming研究的彻底,没有你搞不定的Spark应用程序。Spark Streaming一直在运行,不断计算,每一秒中在不断运行都会产生大量的累加器、广播变量,所以需要对对象及元数据需要定期清理。每个batch duration运行时不断触发job后需要清理rdd和
2016-05-31 16:52:56 1085
原创 第15课:Spark Streaming源码解读之No Receivers彻底思考
receive和no receiver的方式(derict的方式)封装器一定是RDD类型的KafkaRDD,是为不同的数据来源推出不同的RDDforeachRDD中就可以获得当前batch duration中产生的RDD的分区的数据,RDD所访问的所有分驱的数据。 建议企业级采用no receivers方式开发Spark Streaming应用程序,好处:1、更优秀的自由度控制
2016-05-31 16:52:08 935
原创 第14课:Spark Streaming源码解读之State管理之updateStateByKey和mapWithState解密
背景: 整个Spark Streaming是按照Batch Duractions划分Job的。但是很多时候我们需要算过去的一天甚至一周的数据,这个时候不可避免的要进行状态管理,而Spark Streaming每个Batch Duractions都会产生一个Job,Job里面都是RDD,所以此时面临的问题就是怎么对状态进行维护?这个时候就需要借助updateStateByKey和mapWi
2016-05-31 16:51:32 1564
原创 第13课:Spark Streaming源码解读之Driver容错安全性
本期内容:1.ReceivedBlockTracker容错安全性2. DStream和JobGenerator容错安全性 ReceivedBlockTracker跟踪数据需要状态。DStream表达了依赖关系,在你恢复的数据时候需要恢复计算逻辑级别依赖关系,当然需要容错。JobGenerator:作业生成层面,表明你正在基于怎么ReceivedBlockTracker中的数
2016-05-22 21:41:55 500
原创 第12课:Spark Streaming源码解读之executor容错安全性
本期内容:1.Executor的WAL2.消息重放3.其它 StorageLevel.scalaMemory不够的时候才考虑diskclassStorageLevelprivate( private var _useDisk: Boolean, private var _useMemory: Boolean, private var _
2016-05-22 18:08:58 754
原创 第11课:Spark Streaming源码解读之Driver中的ReceiverTracker架构设计以及具体实现彻底研究
本期内容:1.ReceiverTracker的架构设计2.消息循环系统3.ReceiverTracker具体实现 启动Receiver的方式:1.把每个Receiver都封装成为task,这个task是这个job中唯一的task,实质上讲ReceiverTracker启动Receiver的方式就是封装成一个一个的job,有多少个job就会启动多少Receiver。每个tas
2016-05-22 18:08:11 599
原创 第10课:Spark Streaming源码解读之流数据不断接收全生命周期彻底研究和思考
写个大数据应用程序而言性能最重要,架构设计和稳定性 源码ReceiverTracker.scalastart/** Start the endpoint and receiver execution thread. */def start(): Unit = synchronized { if (isTrackerStarted) { throw new S
2016-05-22 18:07:35 530
原创 第9课:Spark Streaming源码解读之Receiver在Driver的精妙实现全生命周期彻底研究和思考
首先随着应用程序的启动而启动receiver,spark core不知道启动了一个receiver。启动一个job有RDD的transform,action,这个job里只有一个partition,而且这个有个特殊的地方partition在于,一个partition只有一个数据成员,这个数据成员就是receiver。可能出现不好的结果1.在同一个executer上启动多个receive
2016-05-21 17:29:52 1267
原创 第8课:Spark Streaming源码解读之RDD生成全生命周期彻底研究和思考
本期内容:1. DStream与RDD关系彻底研究2. Straming中RDD的生产彻底研究示例代码:spark-1.6.1/example/src/main/scala/org/apachRDD的三个问题1.RDD到底是怎么生成的2.具体执行的时候,是否和基于Spark Core上的RDD有所不同,runtime级别的3.运行之后我们
2016-05-21 17:28:03 574
原创 第7课:Spark Streaming源码解读之JobScheduler内幕实现和深度思考
本期内容:1. JobScheduler内幕实现2. JobScheduler深度思考 所有工作的关键都是jobSchedulerSparkStreaming至少要设置两条线程是因为一条用于接收数据,一条用于计算,调度和执行分离开。源码StreamingContext.scalaStart()/** * Start the execution of the
2016-05-15 21:04:54 2097
原创 第6课:Spark Streaming源码解读之Job动态生成和深度思考
本期内容:1.SparkStreaming job生成深度思考1.SparkStreaming job生成源码解析 基于DStream Graph动态生成jobs, JobScheduler是sparkStreaming作业生成和提交给集群的核心.SparkStreaming中除了定时生成的job,还有其他的方式生成job(各种聚合,状态)1.DStream大体分为三种类型
2016-05-15 21:03:39 504
原创 第5课:基于案例一节课贯通Spark Streaming流计算框架的运行源码
本期内容:1、在线动态计算分类最热门商品案例回顾与演示2、基于案例贯通Spark Streaming的运行源码第一部分案例:OnlineTheTop3ItemForEachCategory2DB.scalapackage com.dt.spark.sparkstreamingimport com.robinspark.utils.ConnectionPoolimport
2016-05-15 21:02:19 620
原创 第4课:Spark Streaming事务处理彻底掌握
本期内容1、Exactly Once2、输出不重复事务: 银行转帐为例,A用户转账给B用户,B用户可能收到多笔钱,如何保证事务的一致性,也就是说事务输出,能够输出且只会输出一次,即A只转一次,B只收一次。从事务视角解密SparkStreaming架构: SparkStreaming应用程序启动,会分配资源,除非整个集群硬件资源崩溃,一般情况下都不会有问题。Spar
2016-05-15 21:00:53 736
原创 第3课:解密SparkStreaming运行机制和架构进阶之Job和容错
本期内容:1、解密Spark Streaming Job架构和运行机制2、解密Spark Streaming容错架构和运行机制运行过程dstream.SocketInputDStreamscheduler.ReceivedBlockTrackerscheduler.InputInfoTrackerscheduler.JobSchedulerscheduler.DAG
2016-05-15 20:59:37 702
原创 第2课:解密SparkStreaming运行机制和架构
本期内容:1解密Spark Streaming运行机制2解密Spark Streaming架构 一切不能进行实时流处理的数据都是无效的数据。在流处理时代,SparkStreaming有着强大吸引力,而且发展前景广阔,加之Spark的生态系统,Streaming可以方便调用其他的诸如SQL,MLlib等强大框架,它必将一统天下。 Spark Streaming运行时与其说
2016-05-15 20:57:30 646 1
原创 第1课:解密SparkStreaming另类实验及SparkStreaming本质解析
本期内容1 sparkStreaming另类在线实验2瞬间理解sparkStreaming本质sparkStreaming本身是随着流进来数据,按照时间为单位生成job,触发job在 clustr执行的流式处理引擎。(解偶合)sparkStreaming本质是加上了时间维度的批处理。在流处理时代,SparkStreaming有着强大吸引力,而且发展前景广阔,加之Spark的生态系统
2016-05-15 20:51:38 878
转载 隐马尔可夫模型(HMM)攻略
隐马尔可夫模型 (Hidden Markov Model,HMM) 最初由 L. E. Baum 和其它一些学者发表在一系列的统计学论文中,随后在语言识别,自然语言处理以及生物信息等领域体现了很大的价值。平时,经常能接触到涉及 HMM 的相关文章,一直没有仔细研究过,都是蜻蜓点水,因此,想花一点时间梳理下,加深理解,在此特别感谢 52nlp 对 HMM 的详细介绍。 考虑下面交通
2016-03-03 18:06:35 923
转载 scala符号
Scala是数据挖掘算法领域最有力的编程语言之一,语言本身是面向函数,这也符合了数据挖掘算法的常用场景:在原始数据集上应用一系列的变换,语言本身也对集合操作提供了众多强大的函数,本文将以List类型为例子,介绍常见的集合变换操作。一、常用操作符(操作符其实也是函数)++ ++[B](that: GenTraversableOnce[B]): List[B] 从列表的尾部添加另外一个
2016-03-01 15:06:05 507
原创 spark连接mongodb
hadoop和mongodb的连接器org.mongodb.mongo-hadoopmongo-hadoop-core1.4.2java连接mongodb连接器org.mongodbmongo-java-driver2.13.02.使用示例import com.mongodb.hadoop.MongoOutputFormat;im
2016-02-19 18:24:31 7545 3
转载 PeopleRank从社交网络中发现个体价值
Jan 20, 2014Tags:HadoopMapReducePageRankpeoplerranksocialComments:8 CommentsPeopleRank从社交网络中发现个体价值Hadoop家族系列文章,主要介绍Hadoop家族产品,常用的项目包括Hadoop, Hive, Pig, HBase, Sqoop, Mahout, Zookee
2016-02-18 16:48:26 2137
转载 数组
一、数组1、定长数组声明数组的两种形式:声明指定长度的数组 val 数组名= new Array[类型](数组长度) 提供数组初始值的数组,无需new关键字 Scala声明数组时,需要带有Array类名,且使用 () 来指明长度或提供初始值序列。在JVM中,Scala的Array以Java数组的方式实现。如arr在JVM中的类型对
2016-01-05 22:30:52 921
转载 Spark 调优
因为大部分Spark程序都具有“内存计算”的天性,所以集群中的所有资源:CPU、网络带宽或者是内存都有可能成为Spark程序的瓶颈。通常情况下,如果数据完全加载到内存那么网络带宽就会成为瓶颈,但是你仍然需要对程序进行优化,例如采用序列化的方式保存RDD数据(Resilient Distributed Datasets),以便减少内存使用。该文章主要包含两个议题:数据序列化和内存优化
2015-12-30 16:41:09 444
转载 通过腾讯shuffle部署对shuffle过程进行详解
Shuffle过程介绍MapReduce的Shuffle过程介绍Spill过程SortSpillMergeCopyMerge SortSpark的Shuffle过程介绍Shuffle WriterShuffle FetcherMapReduce和Spark的Shuffle过程对比Shuffle后续优化方向MapReduce Shuffle后续优化方向Spark Shuffle后续优化方
2015-12-30 13:34:05 1211
转载 详细探究Spark的shuffle实现
Background在MapReduce框架中,shuffle是连接Map和Reduce之间的桥梁,Map的输出要用到Reduce中必须经过shuffle这个环节,shuffle的性能高低直接影响了整个程序的性能和吞吐量。Spark作为MapReduce框架的一种实现,自然也实现了shuffle的逻辑,本文就深入研究Spark的shuffle是如何实现的,有什么优缺点,与Hadoop
2015-12-30 13:27:34 406
wechat-weapp-mapdemo-master.zip
2020-01-07
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人