自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 SparkStreaming wordcount demo

流数据统计,将每隔10s内的数据做一次单词统计package com.streamingimport org.apache.spark.streaming._import org.apache.spark.streaming.StreamingContext._import org.apache.spark.SparkContextimport org.apache.spark.api.jav

2016-06-06 17:26:30 977

原创 SparkStreaming 删选含有error的行

筛选流数据中所有含error的行package com.streamingimport org.apache.spark.SparkConfimport org.apache.spark.streaming.Secondsimport org.apache.spark.streaming.StreamingContextobject PrintError { def main(args:

2016-06-06 17:21:53 1262

原创 SparkStreaming 打印输出demo

1.nc -lk 9999-l 使用监听模式,管控传入的资料。 本机开启9999端口 一个server对应一个client,多了可能出问题,也就是下次起sparkstreaming任务时,必须先关了这个端口,重开2.提交sparkstreaming任务package com.streamingimport org.apache.spark.streaming.Secondsimpo

2016-06-06 17:15:56 4874

原创 spark读取redis数据(交互式,scala单机版,java单机版)

交互式第一步:向redis中添加数据 第二步:将jedis jar包放入~/lib目录下,开启spark服务 第三步:通过spark-shell读取redis数据,并做相应处理 scala单机版package com.testimport org.apache.spark.SparkConfimport org.apache.spark.SparkContextimport red

2016-05-23 11:03:16 12034 1

原创 SBT编译spark-redis-master

spark-redis-master是用来让spark更简单地操作redis 将源码下载后解压缩到E盘,运行sbt,下载依赖jar包 run结果出错 采用官方教程 第一步:配置git,mvn命令yum -y install gitgit --versionvim /etc/profileexport PATH=/usr/local/git/bin:$PATHsource /etc/

2016-05-23 10:58:11 1734

原创 SBT安装与编译运行

SBT下载地址 sbt-0.31.11.msi 下载后双击进行安装到某一目录下,如:C:\Program Files(x86)\sbt,在该根目录下可以看到jansi.jar、sbt.bat、sbt-launch.jar等文件。(选择workspace在D盘)环境变量配置: scala在安装时会自动将bin目录添加到环境变量path里。需要配置的只有Scala-sbt,新建环境变量SBT_HO

2016-05-18 09:43:26 7663 1

翻译 Spark SQL下的Parquet使用最佳实践和代码实战

一:Spark SQL下的Parquet使用最佳实践1,过去整个业界对大数据的分析的技术栈的Pipeline一般分为一下两种方式:A)Data Source -> HDFS -> MR/Hive/Spark(相当于ETL) -> HDFS Parquet -> SparkSQL/impala -> Result Service(可以放在DB中,也有可能被通过JDBC/ODBC来作为数据服务使用);B

2016-05-17 18:16:28 10217

翻译 RDD与DataFrame动态转换(Java)

在企业中目前应用比较多的就是动态转换。动态的意思:是指提前不知道RDD中的每个record的列的个数,以及列的内容,只有在运行的时候才会知道,Row代表table中的一行数据。 实战代码如下:package com.dt.spark.SparkApps.sql;/** * 打印结果: [1,Spark,7] [2,Hadoop,10] [3,F

2016-05-17 18:01:15 1494 1

翻译 RDD和DataFrame转换(Java+Scala)

一:RDD与DataFrame转换 1. 通过反射的方式来推断RDD元素中的元数据。因为RDD本身一条数据本身是没有元数据的,例如Person,而Person有name,id等,而record是不知道这些的,但是变成DataFrame背后一定知道,通过反射的方式就可以了解到背后这些元数据,进而转换成DataFrame。 如何反射? Scala: 通过case class映射,在case

2016-05-17 17:55:49 13631

翻译 使用Java和Scala在IDE中开发DataFrame实战

使用Java和Scala两种语言实战DataFrame,创建DataFrame的时候,DataFrame可以来源于其他RDD,也可以来自于Hive表,或者其他数据来源。一般基于数据来源直接构造DataFrame。例如JSON文件,那么读取JSON文件的时候就会自动创建DataFrame。 SQLContext操作数据SQL的时候:有一个弊端就是,只支持SQL一种语言。 但是如果使用HiveC

2016-05-17 17:50:40 1278

翻译 Spark SQL与DataFrame

Spark SQL与DataFrame RDD与DataFrame Spark SQL企业级最佳实践 一:Spark SQL与DataFrame 1.Spark SQL非常强大主要体现在一下几点:a) 可以处理一切存储介质和各种格式的数据(可以方便的扩展Spark SQL的功能来支持更多类型的数据,例如Kudu),包括Hive,Mysql,DB2等传统数据库。 b) Spark SQ

2016-05-17 17:33:04 675

翻译 Hive实战

Hive Web可视化 phpHiveAdmin 一:Hive的本质是什么?1,Hive是分布式数据仓库,同时又是查询引擎,所以Spark SQL取代只是Hive查询引擎,在企业实际生产环境下Hive+Spark SQL是目前最为经典的数据分析组合;2,Hive本身就是一个简单单机版本的软件,主要负责:a)把HQL翻译成Mapper(s)-Reducer-Mapper(s)的代码;并且可能产生很多

2016-05-17 17:19:34 1069

翻译 Spark性能优化第十季之全球独家揭秘Spark统一内存管理

一:Memory Manager在Spark 1.6 版本中,memoryManager 的选择是由spark.memory.useLegacyMode=false决定的。如果采用1.6之前的模型,这会使用StaticMemoryManager来管理,否则使用新的UnifiedMemoryManager,我们先看看1.6之前,对于一个Executor,内存都有哪些部分构成:1,ExecutionMe

2016-05-17 16:53:33 2187

翻译 Spark性能优化第九季之Spark Tungsten内存使用彻底解密

一:Tungsten中到底什么是Page? 1.在Spark其实不存在Page这个类的。Page是一种数据结构(类似于Stack,List等),从OS层面上讲,Page代表了一个内存块,在Page里面可以存放数据,在OS中会存放很多不同的Page,当要获得数据的时候首先要定位具体是哪个Page中的数据,找到该Page之后从Page中根据特定的规则(例如说数据的offset和length)取出数据

2016-05-16 15:02:03 3195 1

翻译 Spark性能优化第八季之Spark Tungsten-sort Based Shuffle

一:使用Tungsten功能 1, 如果想让您的程序使用Tungsten的功能,可以配置: Spark.Shuffle.Manager = tungsten-sort Tungsten中文blogTungsten英文blogSpark在钨丝计划下要管理两种类型的内存存储方式:堆内和堆外。为了管理他们,所以搞了一个Page。 堆外:指针直接指向数据本身。 堆内:指针首先指向Obje

2016-05-16 14:47:01 1037

翻译 Spark性能优化第七季之Spark 钨丝计划

一:“钨丝计划”产生的本质原因1,Spark作为一个一体化多元化的(大)数据处理通用平台,性能一直是其根本性的追求之一,Spark基于内存迭代(部分基于磁盘迭代)的模型极大的满足了人们对分布式系统处理性能的渴望,但是有Spark事采用Scala+Java语言编写的所以运行在JVM平台,当然JVM是一个绝对伟大的平台,因为JVM让整个离散的主机融为一体(网络即OS),但是JVM的死穴GC反过来限制了S

2016-05-16 13:35:27 3802

翻译 Spark性能优化第六季

一:Shuffle性能调优1,问题:Shuffle output file lost?真正的原因是GC导致的!!!如果GC尤其是Full GC产生通常会导致线程停止工作,这个时候下一个Stage的Task在默认情况下就会尝试重试来获取数据,一般重试3次每次重试的时间为5s,也就是说默认情况下15s内如果还是无法抓到数据的话,就会出现Shuffle output file lost等情况,进而会导致T

2016-05-16 11:30:17 666

翻译 Spark性能优化第五季

一:性能优化之数据本地性1,数据本地性对分布式系统的性能而言是一件最为重要的事情(之一),程序运行本身包含代码和数据两部分,单机版本一般情况下很少数据本地性的问题(因为数据在本地),但是对于单机版本的程序由于数据本地性有PROCESS_LOCAL和NODE_LOCAL之分,所以我们还是尽量的让数据处于PROCESS_LOCAL;Spark作为分布式系统更加注意数据本地性,在Spark中数据本地性分为

2016-05-16 11:27:02 1568

翻译 Spark性能优化第四季

一:Spark性能调优之序列化1,之所以进行序列化,最重要的原因是内存空间有限(减少GC的压力,最大化的避免Full GC的产生,因为一旦产生Full GC则整个Task处于停止状态!!!)、减少磁盘IO的压力、减少网络IO的压力;2,什么时候会必要的产生序列化或反序列化呢?发生磁盘IO和网络通讯的时候会序列化和反序列化,更为重要的考虑序列化和反序列化的时候有另外两种情况:A)Persist(Che

2016-05-16 10:44:14 1120

翻译 Spark性能优化第三季

一:Spark程序数据结构的优化1,Java的对象:对象头是16个字节(例如指向对象的指针等元数据信息),如果对象只有一个int的property,则此时会占据20字节,也就是说对象的元数据占用了大部分的空间,所有在封装数据的时候尽量不要使用对象!例如说使用JSON格式来封装数据;2,Java中的基本的数据类型会自动的封箱操作,例如int会自动变成Integer,这会额外增加对象头的空间占用;3,J

2016-05-16 09:45:20 595

翻译 Spark性能优化第二季

一:Task性能优化1,慢任务(数据倾斜或机器故障)的性能优化:可以考虑减少每个partition处理的数据量,同时建议开启spark.speculation;2,尽量减少Shuffle,例如我们要减少groupByKey的操作,因为groupByKey会要求通过网络拷贝(Shuffle)所有的数据,有限考虑使用reduceByKey,因为会首先reduce locally;再例如在进行join操作

2016-05-16 09:38:51 614

翻译 Spark性能优化第一季

一:Spark性能优化核心基石1, Spark是采用Master-Slaves的模式进行资源管理和任务执行的管理:a) 资源管理:Master-Workers,在一台机器上可以有多个Workers;b) 任务执行:Driver-Executors,当在一台机器上分配多个Workers的时候那么默认情况下每个Worker都会为当前运行的应用程序分配一个Executor,但是我们可以修改配置来让每个Wo

2016-05-16 09:34:40 880

翻译 Spark RPC

一:Spark 1.6RPC解析1,Spark 1.6推出RpcEnv,RPCEndpoint,PRCEndpointRef为核心的新型架构下的RPC通信方式,就目前的实现而言,其底层依旧是Akka;2,Akka是基于Actor的分布式消息通信系统,而在Spark 1.6中封装了Akka,提供更高层的Rpc实现,目的是移除对Akka的依赖,为了扩展和自定义Rpc打下基础;二:RPCEnv解析1,Rp

2016-05-16 09:25:25 930

翻译 Spark Broadcast内幕解密

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

2016-05-16 09:07:24 1590

翻译 CheckPoint运行原理

一、Checkpoint到底是什么?1,Spark在生产环境下经常会面临Tranformations的RDD非常多(例如一个Job中包含1万个RDD)或者具体Tranformation产生的RDD本身计算特别复杂和耗时(例如计算时长超过1个小时),此时我们必须考虑对计算结果数据的持久化;2,Spark是擅长多步骤迭代,同时擅长基于Job的复用,这个时候如果能够对曾经计算的过程产生的数据进行复用,就可

2016-05-15 23:37:28 3767

翻译 CacheManager运行原理流程图和源码详解

一:CacheManager分析:1,CacheManager管理的是缓存,而缓存可以是基于内存的缓存,也可以是基于磁盘的缓存;2,CacheManager需要通过BlockManager来操作数据;3.当Task运行的时候会调用RDD的compute方法进行计算,而compute方法会调用iterator方法:/** * Internal method to this RDD; will rea

2016-05-15 23:30:26 1673

翻译 BlockManager初始化和注册解密、BlockManagerMaster工作解密、BlockTransferService解密、本地数据读写解密、远程数据读写解密

1. BlockManager的注册和初始化 2. BlockManager里面的重要函数详细介绍 一:BlockManager初始化 1. BlockManager的实例对象调用initializes的时候才能正常工作。 启动initializes方法又两个作用:BlockTransferService(网络通信),ShuffleClient/** * Initializ

2016-05-15 23:23:42 10765

翻译 BlockManager原理和源码解密

一、BlockManager运行实例观察从Application启动的角度来观察BlockManager;1,在Application启动时会在SparkEnv中注册BlockManagerMaster以及MapOutputTracker,其中a) BlockManagerMaster:对整个集群的Block数据进行管理的;b) MapOutputTracker:跟踪所有mapper的输出的;2,B

2016-05-15 22:58:05 3049 1

翻译 Task执行内幕与结果处理解密

1.当Driver中的CoarseGrainedSchedulerBackend给CoarseGrainedExecutorBackend发送LaunchTask之后,CoarseGrainedExecutorBackend在收到LaunchTask消息后,首先会反序列化TaskDescription:val taskDesc = ser.deserialize[TaskDescription](d

2016-05-15 22:48:46 1208

翻译 TaskScheduler内幕天机:Spark shell案例,TaskScheduler和SchedulerBackend、FIFO与FAIR、Task运行时本地性算法详解

TaskSchedulerBackend与SchedulerBackendFIFO与FAIR两种调度模式Task数据本地性资源的分配一、TaskScheduler运行过程(Spark-shell角度) 1.启动Spark-shell 当我们spark-shell本身的时候命令终端返回来的主要是ClientEndpoint和SparkDeploySchedulerBakcend。这是因为此时

2016-05-15 22:32:43 8630

翻译 Spark系统运行内幕机制循环流程

一、TaskScheduler原理解密 1.DAGScheduler在提交TaskSet给底层调度器的时候是面向接口TaskScheduler的,这符合面向对象中依赖抽象而不依赖的原则,带来底层资源调度器的可插拔性,导致Spark可以运行的众多资源调度器模式上,例如Standalone、Yarn、Mesos、Local、EC2、其它自定义的资源调度器。在Standalone的模式下,我们聚焦于Ta

2016-05-15 21:49:48 1584

翻译 Stage划分和Task最佳位置算法

1.Stage划分算法解密 Spark Application中可以因为不同的Action触发众多的Job,也就是说一个Application钟可以有很多的Job,每个Job是由一个或者多个Stage构成的,后面的Stage依赖于前面的Stage,也就是说只有前面依赖的Stage计算完毕后,后面的Stage才会运行 2.Stage划分的已经就是宽依赖,什么产生宽依赖?例如reduceByKey,

2016-05-15 21:00:33 1351

翻译 Spark Executor

一:Spark Executor工作原理1, 需要特别注意是在CoarseGrainedExecutorBackend启动时向Driver注册Executor其实质是注册ExecutorBackend实例,和Executor实例之间没有直接的关系!!!2, CoarseGrainedExecutorBackend是Executor运行所在的进程名称,Executor才是正在处理Task的对象,Exe

2016-05-15 19:57:10 953

翻译 Spark Worker原理和源码剖析解密

1.Spark源码剖析 2.Worker启动Driver源码 3.Worker启动Executor源码 4.Worker与Master交互 一:worker启动driver内幕和流程机制1, Cluster中的Driver失败的时候,如果supervise为true,则启动该Driver的Worker会负责重新启动该Driver2, DriverRunner启动进程是通过proces

2016-05-15 19:45:00 601

翻译 Spark资源调度

1.分配Driver(Cluster,只有在cluster模式在master才能为dirver分配资源) 2.为Application分配资源 3.两种不同的资源分配方式 4.spark资源调度方式一:任务调度与资源调度的区别1, 任务调度是通过DAGScheduler、TaskScheduler、SchedulerBackend等进行的作业调度;2, 资源调度是指应用程序如何获得资源;3

2016-05-15 19:32:33 642

翻译 Master的注册机制和状态管理解密

一 、master对其他组件注册的处理1, master接受注册的对象主要就是:driver,application,worker;需要补充说明executor不会注册给master,executor是注册给driver中的schedulerbackbend的;2, worker是再启动后主动向master注册的,所以如果在生产环境下加入新的worker到已经正在运行的spark集群上,此时不需

2016-05-15 18:23:46 648

翻译 Master HA

一:Master HA解析1, 生产环境下一般采用ZooKeeper做HA,且建议为3台Master,ZooKeeper会自动化管理Masters的切换;2, 采用ZooKeeper做HA的时候,ZooKeeper会负责保存整个Spark集群运行时候的元数据:Workers、Drivers、Applications、Executors;3, ZooKeeper遇到当前Active级别的Master出

2016-05-15 18:02:41 449

翻译 Spark天堂之门

, Spark程序在运行的时候分为Driver和Executors两部分;2, Spark的程序编写是基于SparkContext的,具体来说包含两方面: a)Spark编程的核心基础---RDD,是由SparkContext来最初创建(第一个RDD一定是由SparkContext来创建的); b)Spark程序的调度优化也是基于SparkContext;3, Spark程序的注册时通过Sp

2016-05-15 17:40:16 474

翻译 Spark Runtime内幕

一、Hadoop Yarn解析1,Yarn是Hadoop推出整个分布式(大数据)集群的资源管理器,负责资源的管理和分配,基于Yarn我们可以在同一个大数据集群上同时运行多个计算框架,例如Spark、MapReduce、Storm等; 2,Yarn基本工作流程如下图所示: 注意:Container要向NodeManager汇报资源信息,Container(程序员)要向App Mstr(项目经理

2016-05-15 16:58:40 996

翻译 Spark Runtime内幕

一 再论spark集群部署1.从spark runtime的角度来讲有五大核心对象:master,worker,executor,driver,coarseGrainedExecutorBackend;2.Spark在做集群分布式系统设计的时候:最大化功能独立、模块化封装具体独立的对象、强内聚低耦合。 3.当driver中的sparkcontext初始化的时候会提交程序给master,mast

2016-05-15 16:05:59 461

空空如也

空空如也

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

TA关注的人

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