大数据
文章平均质量分 78
heayin123
伯恩的技术blog
学而不思则罔,思而不学则殆。通过写博客,把似是而非的知识整理明白,把凌乱的知识理顺。
专注于spark、网络安全。分享工作中的点滴经验
展开
-
Exception in thread "main" java.lang.IllegalArgumentException: Some primary key columns are missing
Exception in thread "main" java.lang.IllegalArgumentException: Some primary key columns are missing in RDD or have not been selected:sockpuppetuser我的类定义如下:private static class IPSockpuppetUser{原创 2015-05-27 16:42:48 · 4965 阅读 · 0 评论 -
Spark Shuffle系列-----1. Spark Shuffle与任务调度之间的关系
Spark根据RDD间的依赖关系是否是Shuffle依赖进行Stage的划分,先执行的Stage标记为Stage1,后执行的Stage标记为Stage2。Shuffle是Stage分2步操作 Map操作和Recude操作可以通过下面这个图表示出来: 1. Map操作。Map操作在Stage1结束的时候执行;Map操作的作用是将Stage1阶段的一个pa原创 2015-10-13 18:17:15 · 3887 阅读 · 0 评论 -
Spark Shuffle系列-----2. Spark Shuffle map端的原理和实现
本篇文章以RDD.aggregateByKey引起的SortShuffleWriter为例说明Shuffle map端的原理和实现原创 2015-10-14 13:46:17 · 2965 阅读 · 0 评论 -
spark-streaming系列------- 4. Spark-Streaming Job的生成和执行
Spark-Streaming Job的生成和执行可以通过如下图表示:Spark-Streaming Job的生产和和执行由以下3个部分相互作用生成:Driver程序:用户通过编写Driver程序描述了DStream的依赖关系,Driver程序根据DStream描述的依赖关系描述了RDD的依赖关系,也就是描述了Streaming Job的逻辑执行图Spark-Streaming原创 2015-10-29 14:13:19 · 2310 阅读 · 0 评论 -
Spark Shuffle系列-----3. spark shuffle reduce操作RDD partition的生成
本篇文章以RDD.aggregateByKey引起的SortShuffleWriter为例说明Shuffle map端的原理和实现,为了便于说明问题这里的所有执行流程都是默认执行流程 为了便于说明问题,本文中Stage1是shuffle map操作所在的Stage,Stage2是shuffle reduce操作所在的Stage,本文中spark.shuffle.blockTransf原创 2015-10-15 18:02:43 · 3278 阅读 · 0 评论 -
spark-streaming系列------- 5. Spark-Streaming checkpoint的原理和实现
本文以KafkaDirectDStream方式为例说明Spark-Streaming checkpoint的原理 JobGenrerator.generateJobs负责Streaming Job的产生,产生并且提交执行Job之后,会发送DoCheckpoint事件,源码如下:private def generateJobs(time: Time) { // Set the原创 2015-12-31 18:34:46 · 3418 阅读 · 1 评论 -
Spark通过mapPartitions方式加载Json文件,提高文件加载速度
这几天遇到了需要从hdfs加载json字符串,然后转化成json对象的场景。刚开始的实现方式见如下代码: val loginLogRDD = sc.objectFile[String](loginFile, loadLoginFilePartitionNum) .filter(jsonString => { //val loginItem = line.toString原创 2016-01-13 18:37:35 · 2349 阅读 · 0 评论 -
Spark SQL系列------2. Spark SQL Aggregate操作的实现
本篇文章主要将Aggregate操作的时候的数据存储和实现过程原创 2016-03-02 18:03:39 · 3269 阅读 · 1 评论 -
spark RDD系列------2.HadoopRDD分区的创建以及计算
Spark经常需要从hdfs读取文件生成RDD,然后进行计算分析。这种从hdfs读取文件生成的RDD就是HadoopRDD。那么HadoopRDD的分区是怎么计算出来的?如果从hdfs读取的文件非常大,如何高效的从hdfs加载文件生成HadoopRDD呢?本篇文章探讨这两个问题。 SparkContext.objectFile方法经常用于从hdfs加载文件,从加载hdfs文件到生成Had原创 2015-11-26 14:21:51 · 6914 阅读 · 1 评论 -
Spark RDD系列-------1. 决定Spark RDD分区算法因素的总结
RDD在调用引起Shuffle的方法的时候,如果没有显示指定ShuffledRDD的分区,那么会调用Partitioner.defaultPartitioner方法来确定ShuffledRDD的分区,比如RDD.combineByKey:def combineByKey[C](createCombiner: V => C, mergeValue: (C, V) => C, mergeCombi原创 2015-11-25 17:51:46 · 4457 阅读 · 0 评论 -
通过代码实例来说明spark api mapPartitions和mapPartitionsWithIndex的使用
代码片段1:package com.oreilly.learningsparkexamples.scalaimport org.apache.spark._import org.eclipse.jetty.client.ContentExchangeimport org.eclipse.jetty.client.HttpClientobject BasicMapPartition原创 2015-07-15 16:58:28 · 8806 阅读 · 0 评论 -
spark调度系列------4. RDD依赖的建立以及RDD依赖在任务提交到调度系统的作用
Spark中RDD依赖的类关系如下图:原创 2015-09-25 13:51:03 · 1896 阅读 · 0 评论 -
Spark调度系列-----5.Spark task和Stage的跳过执行(ui显示task和stage skipped)
在spark的首页ui上经常显示任务和Stage被skipped,如以下截图所式:本文将阐述什么情况下Stage或者Task会被置为skipped,以及stage和task被值skipped之后是否spark application执行会出问题?当一个Spark Job的ResultStage的最后一个Task成功执行之后,DAGScheduler.handleTaskCo原创 2015-12-22 17:46:15 · 18863 阅读 · 8 评论 -
Spark SQL系列------1. Spark SQL 物理计划的Shuffle实现
Spark SQL物理计划要到Spark-core执行,需要将Spark SQL物理计划转化成RDD,并且建立RDD之间的依赖关系。这个过程可以通过如下图大概表示:上图中绿色部分指Spark物理计划到RDD过程中数据结构的变迁过程。黄色部分表示变迁过程中,实现加工作用的数据结构。原创 2016-02-25 14:25:31 · 7543 阅读 · 0 评论 -
spark-streaming系列------- 3. Kafka DirectDStream方式数据的接收
KafkaRDD分区个数的确定和每个分区数据接收的计算在KafkUtils.createDirectStream创建了DirectDStream,代码如下:def createDirectStream[ K: ClassTag, V: ClassTag, KD <: Decoder[K]: ClassTag, VD <: Decoder[V]: ClassTag]原创 2015-09-23 11:36:24 · 5521 阅读 · 1 评论 -
Spark调度系列-----3.SparkContext对象的创建和SparkContext的作用
SparkContext是Spark Application程序的表示。在Driver程序中首先创建SparkContext对象,在创建这个对象的时候,Spark Application运行需要的重要参数会在这里初始化。下面的图表述了SparkContext创建初始化的重要参数。DAGSchedule的作用:Spark Stage的切分等功能,它主要描述了Spark Appli原创 2015-09-17 18:35:32 · 3225 阅读 · 0 评论 -
Spark storage系列------2.Spark cache数据块的读取
如下时序图表示了RDD.persist方法执行之后,Spark是如何cache分区数据的。时序图可放大显示本篇文章中,RDD.persist(StorageLevel)参数StorageLevel为:MEMORY_AND_DISK_SER_2 = new StorageLevel(true, true, false, false, 2)也就是cache数据的时候,如原创 2015-10-21 16:48:35 · 1976 阅读 · 0 评论 -
显示cassandra所有keyspace的方法
使用如下cql语句:select * from system.schema_keyspaces;原创 2015-05-27 15:30:46 · 5339 阅读 · 0 评论 -
spark程序对hadoop环境的依赖,导致checkpoint失败问题的解决
虽然没有使用hadoop,但是在windows下运行spark程序报如下错误:INFO : org.apache.spark.SparkContext - Running Spark version 1.3.1WARN : org.apache.hadoop.util.NativeCodeLoader - Unable to load native-hadoop library for yo原创 2015-05-28 16:47:21 · 4756 阅读 · 0 评论 -
kafka的消息发送的三种模式
1. At most once模式 消费者读取消息,更新消息的offset,然后处理消息。这种方式的风险是在更新消息的offset之后,处理消息结果的输出之前消费者挂掉,消费者再启动的时候,从新的offset开始消费消息,导致处理消息丢失2. At least once模式 消费者读取消息,处理消息并输出,更新消息的offset。这种方式的风险是在处理消息的结果输出之后,更新原创 2015-05-29 14:26:29 · 8557 阅读 · 0 评论 -
spark-streaming direct stream的部分实现原理
今天看了一片介绍spark-streaming direct stream的实现原理,文章在这个地址(内容加载比较慢,打开链接后等几分钟内从才能显示出来):Exactly-once Spark Streaming from Apache Kafka 总结一下几点: 1. spark-streaming其实是根据interval创建了rdd stream。在创建rdd的时原创 2015-05-29 16:37:25 · 1766 阅读 · 0 评论 -
关于spark driver程序调优
1.需要避免的几种错误操作 a. 在执行reductive(合并)操作的时候,避免使用groupByKey操作。因为使用groupByKey的时候,会导致太多的被数据shuffle,而reduceByKey操作会比groupByKey性能高很多,具体原因可参考下面的两个图片:可见reduceByKey操作,先对数据进行合并,然后再shuffle,所以shuffle数据会原创 2015-06-19 10:46:22 · 911 阅读 · 0 评论 -
浅谈spark yarn模式的问题调试
spark运行的时候,有可能发生崩溃,而在spark console里面看到的堆栈,很可能不是发生问题的实际堆栈,这个时候需要看yarn日志来定位问题。 我在调试spark程序的时候,采用如下命令启动spark驱动程序:/usr/local/spark-1.3.1-bin-hadoop2.6/bin/spark-submit --supervise --class spark_sec原创 2015-07-07 16:57:43 · 26873 阅读 · 0 评论 -
spark on yarn的cpu使用
在yarn-site.xml中,可以配置virutal core的个数,请注意不是physical core的个数,相关配置如下: yarn.nodemanager.resource.cpu-vcores 30 NodeManager总的可用虚拟CPU个数virutal core的概念是将所有physical cpu组成8个可调度的队列,linux使得有任务的原创 2015-07-08 10:31:00 · 6498 阅读 · 1 评论 -
spark多个application的同时运行
在spark的Job Scheduling中介绍了spark多个任务同时执行,相关链接为:https://spark.apache.org/docs/1.2.0/job-scheduling.html spark要实现多个application同时运行,涉及到多个application的资源共享。在spark on yarn模式下,yarn可以用来管理集群资源。为了能够比较好的利原创 2015-07-14 09:43:58 · 9468 阅读 · 0 评论 -
spark-streaming系列------- 1. spark-streaming的Job调度 上
这段时间分析了下spark-streming任务调度的源码,成果分享一下。 类似于spark-core,spark-streaming有自己的一套任务调度,具体代码在spark-streaming的scheduler包里面。 我以Kafka DirectDStream数据接收为例,画了一张整体的流程图:在将这张图之前,需要先明确spark-strea原创 2015-09-10 16:12:29 · 2242 阅读 · 0 评论 -
spark-streaming系列------- 2. spark-streaming的Job调度 下
接着上一篇文章,spark-streaming系列------- 1. spark-streaming的Job调度 上 讲spark-streaming job的具体生成 spark-streaming job的具体生成在JobGenrerator.generatorJobs,代码如下: private def generateJobs(time: Time) { /原创 2015-09-11 18:09:01 · 1366 阅读 · 0 评论 -
spark调度系列----1. spark stanalone模式下Master对worker上各个executor资源的分配
spark Application的注册时在Master类中对RegisterApplication消息的处理。Master类里面对RegisterApplication消息处理时, 首先将Application信息注册到Master,然后调用了Master.schedule方法相关代码如下:case RegisterApplication(description, d原创 2015-09-14 18:04:59 · 5162 阅读 · 2 评论 -
Spark storage系列------1.Spark RDD.persist对数据的存储
如下时序图表示了RDD.persist方法执行之后,Spark是如何cache分区数据的。本篇文章中,RDD.persist(StorageLevel)参数StorageLevel为:MEMORY_AND_DISK_SER_2 = new StorageLevel(true, true, false, false, 2)也就是cache数据的时候,如果有足够的内存则将数据cache原创 2015-10-21 10:50:04 · 9578 阅读 · 0 评论 -
Spark storage系列------3.Spark cache数据块之后对后继Job任务调度的影响,以及后继Job Task执行的影响
DAGScheduler.submitStage建立Spark应用的物理执行图,DAGScheduler.submitStage通过调用DAGSchdeuler.getMissingParentStages找到一个Stage的祖宗Stage并把祖宗Stage加入到物理执行图中。在这里如果发现依赖的RDD的全部分区已经存储到了BlockManager,也就是已经成功Cache,那么这个RDD以及它的原创 2015-10-22 09:51:03 · 1965 阅读 · 0 评论 -
通过使用evercookie技术实现设备指纹
设备指纹是互联网中经常使用的一种技术,通过设备指纹技术,为每个设备确定一个唯一的设备ID。由于IP地址个数的限制,内网中往往使用NAT技术,将内网中的上万个IP映射成几个外网IP对外访问。这样内网用户在访问某个网站的使用,一个外网IP很可能对应多个内网IP。因此在风控系统中,可以通过使用设备ID,精确定位到每个终端,根据设备ID创建设备画像,能够解决很多IP画像无法解决的问题。原创 2016-05-31 17:57:36 · 11290 阅读 · 0 评论