自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 scala使用par并行集合设置的线程池未关闭导致的内存占用问题

问题产生背景         程序语言使用的是scala。        在处理大量数据时,使用了par函数将普通集合转为并行集合集合,通过多线程并发处理达到提升处理效率的目的,相关代码如下:for循环{ ... process()}def process(): Unit ={ val map: Map[String, Int] = Map("a"->1, "

2017-11-23 17:11:19 3542

原创 java jackson avro kryo等几种序列化与反序列化工具的使用

最近由于工作需要,需要研究常用的集中序列化方式,主要目的是对象序列化后占用空间会大大减少,便于存储和传输,下面是几种序列化方式的使用demo 1. Java自带的Serialize依赖jar包:无代码示意:import java.io.{ByteArrayInputStream, ByteArrayOutputStream, ObjectInputStream, ObjectO

2017-11-15 10:34:28 5155

原创 LoadingCache在Spark HistoryServer中的运用

之前分析了Spark HistoryServer的Web界面构建和后台数据解析的流程,下面介绍一下Web操作在后台执行的流程以及为了提高查询速度,数据在HistoryServer的缓存策略绑定路由 在HistoryServer的实例化过程中,会绑定以/api/v1/开头的路由attachHandler(ApiRootResource.getServletHandler(this))ApiRootR

2017-07-17 15:08:38 622

原创 Spark源码阅读之HistoryServer

概述 HistoryServer服务可以让用户通过Spark UI界面,查看历史应用(已经执行完的应用)的执行细节,比如job信息、stage信息、task信息等,该功能是基于spark eventlogs日志文件的,所以必须打开eventlogs日志开关,关于日志开关的打开和HistoryServer服务的启动方法这里不再讲述,下面进入正题下面使用的spark版本是2.0.2类结构图

2017-07-17 10:56:54 1495

原创 Standalone模式下Spark任务资源分配

Standalone模式下Spark任务资源分配1.背景    在spark集群采用spark-submit命令提交任务时,我们可以通过配置资源相关参数来控制任务使用的资源,比如总核数,每个executor中核数与内存等,但是这个任务在spark集群中实际占用资源是没法配置的,需要根据实际环境和参数结合起来考虑,下面是就是对Standalone模式下Spark任务在集群中实际资源分配的分析

2017-06-26 09:20:17 4149 2

原创 命令行编译运行scala文件

package com.xx.yyimport java.util._;object HelloWorld { def main(args: Array[String]) { println("Hello World!"); }}使用scala命令运行scala文件第一步:配置环境变量,如果已经配置就忽略这个步骤啦

2017-02-10 17:07:30 18999

转载 Spark UI详解

在大型分布式系统中,采用事件监听机制是最常见的。如果Spark UI采用Scala的函数调用方式,由于函数调用多数情况下是同步调用,导致线程被阻塞。将函数调用更换为发送事件,事件的处理时异步的,当前线程可以继续执行后续逻辑,线程池中的线程还可以被重用,这样整个系统的并发度会大大增加。发送的事件会存入缓存,由定时调度器取出后,分配给监听此事件的监听器对监控数据进行更新。UI详

2017-01-03 15:25:46 2773

转载 Spark统一内存管理模型UnifiedMemoryManager

从spark1.6开始,引入了新的内存管理方式-----统一内存管理(UnifiedMemoryManager)。在统一内存管理下,Spark一个executor中的jvm heap内存被划分成如下图:在开始介绍图中各个部分之前,我们先明确一个概念(我还是以我熟悉spark on yarn来介绍),我们在为Executor申请内存的时候,实际是JVM 的堆(heap)内存。

2016-12-30 18:25:22 518

转载 Spark OutputCommitCoordinator

确定任务是否可以把输出提到到HFDS的管理者。 使用先提交者胜的策略。在driver 端和执行器端都要初始化OutputCommitCoordinator。在执行器端,有一个指向driver 端OutputCommitCoordinatorEndpoing对象的引用,所以提交输出的请求到被转发到driver端的OutputCommitCoordinator.这个类在Spark-4879提出

2016-12-30 17:50:34 4199

原创 Spark测量系统 MetricsSystem

Spark测量系统,由指定的instance创建,由source、sink组成,周期性地从source获取指标然后发送到sink,其中instance、source、sink的概念如下:Instance:指定了谁在使用测量系统,在spark中有一些列如master、worker、executor、client driver这些角色,这些角色创建测量系统用于监控spark状态,目前在spark中

2016-12-30 17:26:30 2599

转载 缓存管理器CacheManager

如果说spark是一把在大数据处理领域的快刀,那么spark的存储系统设计及管理等相关模块就算不是刀尖,也算得上十分锋利的刀锋了,由于工作需要,我会伴着源码来深入学习一下,这里做一个记录备忘。RDD的cache和persist谈到spark存储,第一反应先想到了RDD里的cache和persist。如果从RDD中的cache方法作为入口来看,cache与persist殊途同

2016-12-30 16:12:56 2527

转载 磁盘块管理器DiskBlockManager

DiskBlockManager管理和维护了逻辑上的Block和存储在Disk上的物理的Block的映射。默认情况下,一个逻辑的Block会根据它的BlockId生成的名字映射到一个物理上的文件。但是,也可以使用mapBlockToFileSegment方法映射到一个文件的一段区域。 这些物理文件会被hash到由Spark.local.dir(或者通过SPARK_LOCAL_DIRS来设置)上的不

2016-12-30 15:50:01 644

转载 Spark Broadcast内幕分析

一:Broadcast彻底解析1.Broadcast就是将数据从一个节点发送到其他的节点上。例如Driver上有一张表,而Executor中的每个并行执行的Task(100万个)都要查询这张表,那我们通过Broadcast的方式就只需要往每个Executor把这张表发送一次就行了。Executor中的每个运行的Task查询这张唯一的表,而不是每次执行的时候都从Driver获得这张表!

2016-12-30 15:35:24 1155

转载 Spark之MapOutputTracker类简单说明

相关类:MapOutputTrackerMessage,GetMapOutputStatuses extends MapPutputTrackerMessage,StopMapOutputTracker extends MapOutputTrackerMessage,MapOutputTrackerMasterActor,MapOutputTrackerMaster。    首先重写Map

2016-12-29 16:52:32 1357

转载 Spark Rpc通信分析

Spark 1.6+推出了以RPCEnv、RPCEndpoint、RPCEndpointRef为核心的新型架构下的RPC通信方式。其具体实现有Akka和Netty两种方式,Akka是基于Scala的Actor的分布式消息通信系统,Netty是由JBOSS提供的一个java开源框架。Netty提供异步的、事件驱动的网络应用程序框架和工具,用以快速开发高性能、高可靠性的网络服务器和客户端程序。

2016-12-29 15:20:41 422

转载 Linux登录时的环境变量设置

关于登录linux时,/etc/profile、~/.bash_profile等几个文件的执行过程在登录Linux时要执行文件的过程如下:在 刚登录Linux时,首先启动 /etc/profile 文件,然后再启动用户目录下的 ~/.bash_profile、 ~/.bash_login或 ~/.profile文件中的其中一个,执行的顺序为:~/.bash_profile、 ~/.bash

2016-12-29 10:56:14 480

转载 SparkContext源码的简单分析

本篇文章就要根据源码分析SparkContext所做的一些事情,用过Spark的开发者都知道SparkContext是编写Spark程序用到的第一个类,足以说明SparkContext的重要性;这里先摘抄SparkContext源码注释来 简单介绍介绍SparkContext,注释的第一句话就是说SparkContext为Spark的主要入口点,简明扼要,如把Spark集群当作服务端那Spark

2016-12-28 17:14:29 487

转载 CopyOnWrite容器

Copy-On-Write简称COW,是一种用于程序设计中的优化策略。其基本思路是,从一开始大家都在共享同一个内容,当某个人想要修改这个内容的时候,才会真正把内容Copy出去形成一个新的内容然后再改,这是一种延时懒惰策略。从JDK1.5开始Java并发包里提供了两个使用CopyOnWrite机制实现的并发容器,它们是CopyOnWriteArrayList和CopyOnWriteArraySet。

2016-12-28 17:01:22 364

原创 编程之美中01背包问题的scala实现

问题描述:有n个物体有重量和价值两个属性,一个能承重一定重量的背包。问怎么选择物体能实现背包里的价值最大化。比如假设有5个物体和一个背包。物体的重量分别是2、2、6、5、4,价值分别是6、3、5、4、6,背包承重为10。问怎么选择,能实现背包所背物体价值的最大化。 思路:对于有T个物品,容量为V的情形,核心就是在容量为m时,将第n个物品放进来时的最大价值与不放进来时的最大价值相比较

2016-11-25 10:21:16 496

原创 编程之美中烙饼排序的scala实现

最近看了《编程之美》,书中讲了很多有趣的小例子,突然发现生活中有很多事情都可以和编程结合起来分析,感觉自己之前的思路真是太窄了,正好目前主要使用的编程语言是scala,于是选取几个例子,动手使用scala实现一遍,有感兴趣的朋友看看就好啦。代码如下:object CookieSort{ var cakeArray: Array[Int] = Array.empty //炊饼数组

2016-11-22 16:47:26 358

转载 生活中的Paxos,原来你我都在使用——对Paxos生活化的解读(二)

根据上一篇的叙述,让我们做一个规范总结吧自从老婆提议家庭生活,家庭全体成员一起献计献策之后,也经历了不短的时间。整个过程中,碰到过不少问题,但在全家的同心协力下,也都得到了解决。一天,老婆提议把过程中沉淀下来的经验和规范汇总起来,我想想也有道理,就做了下面这个汇总:家庭成员明确不同的分工。提议人、决策人、参与人。其中,提议人和参与人的人数没有限制,视家庭成员而定。但是,决策

2016-11-17 11:03:36 1573

转载 生活中的Paxos,原来你我都在使用——对Paxos生活化的解读(一)

引言前段时间,老婆给家里一岁半的小宝买了一套 克里斯.费利 博士的《宝宝的物理学》丛书,包括 《宝宝的量子物理学》,《宝宝的牛顿力学》,《宝宝的光学》等。小宝爱不释手,天天缠着我们读给他听,在整个过程中我也有很大的收获。在同一时间,由于工作需要,我也一直在啃计算机分布式系统中号称最难理解的协议——Paxos。看PPT、读论文、找相关文章,跟同事讨论,一段时间下来,总的来说也有一定的收获。两

2016-11-17 09:32:57 538 1

空空如也

空空如也

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

TA关注的人

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