spark

A 19-post collection

sbt结合IDEA对Spark进行断点调试开发

原创文章,谢绝转载 笔者出于工作及学习的目的,经常与Spark源码打交道,也难免对Spark源码做修改及测试。本人一向讲究借助工具提升效率,开发Spark过程中也在摸索如何更加顺畅的对源码进行调试。 Spark基于Scala,采用IntelliJ IDEA和sbt应对日常开发,自然是最佳选择了。如何导入及编译Spark项目,网上资料很多,官网给的教程也比较详细: http://spark.apache.org/docs/latest/building-spark.html http://spark.apache.org/

深度剖析Spark分布式执行原理

让代码分布式运行是所有分布式计算框架需要解决的最基本的问题。 Spark是大数据领域中相当火热的计算框架,在大数据分析领域有一统江湖的趋势,网上对于Spark源码分析的文章有很多,但是介绍Spark如何处理代码分布式执行问题的资料少之又少,这也是我撰写文本的目的。 Spark运行在JVM之上,任务的执行依赖序列化及类加载机制,因此本文会重点围绕这两个主题介绍Spark对代码分布式执行的处理。本文假设读者对Spark、Java、Scala有一定的了解,代码示例基于Scala,Spark源码基于2.1.0版本。阅读本文你可以了解到: Java对象序列化机制 类加载器的作用 Spark对closure序列化的处理 Spark Application的class是如何加载的 Spark REPL(spark-shell)中的代码是如何分布式执行的

自己动手为Spark 2.x添加ALTER TABLE ADD COLUMNS语法支持

SparkSQL从2.0开始已经不再支持ALTER TABLE table_name ADD COLUMNS (col_name data_type [COMMENT col_comment], ...)这种语法了(下文简称add columns语法)。如果你的Spark项目中用到了SparkSQL+Hive这种模式,从Spark1.x升级到2.x很有可能遇到这个问题。 为了解决这个问题,我们一般有3种方案可以选择: 启动一个hiveserver2服务,通过jdbc直接调用hive,

Spark+Hadoop集群性能调优

Hadoop短路本地读(原理:unix domain socket),提高文件读取性能 Hadoop的NameNode节点连接数设置要合理,设置hdfs-site.xml的dfs.namenode.handler.count配置,合理的连接值:python -c 'import math ; print int(math.log(计算节点的数量) * 20)' Data Locality的问题(

解决SBT运行时提示java.lang.OutOfMemoryError: PermGen space的问题

最近用sbt测试Spark的HiveContext总是出现java.lang.OutOfMemoryError: PermGen space的异常。 PermGen space是Java中常见的问题,进程堆的永久区空间不足了,一般直接配置-XX:MaxPermSize=256M就可以了。 但是sbt会把他当做自己的参数处理,我们运行sbt时这么做就可以了:sbt -J-XX:MaxPermSize=512M

Spark执行任务Locality Level总是为ANY的问题

总所周知,分布式计算系统为了保证性能都是移动计算而非移动数据,在Spark系统中执行任务也是遵循这个原则,RDD中有个preferredLocations记录了当前要处理的数据的最佳位置。Spark性能调优也有个关键因素即:Data Locality,具体可以参考:http://spark.apache.org/docs/latest/tuning.html#data-locality 最近在处理集群查询性能的过程中发现很多读取数据的Task的Locality Level总是为Any,也就是说在Spark中跑任务几乎都要走网络拷贝数据,我们在测试环境执行select count(1) from test这样的一个非常简单的查询也有大量的网络IO(可以通过dstat观察到,

Spark 1.5.0的Hive版本配置

由Spark 1.4.1升级到Spark 1.5.0,发现一些sql执行出错了,原因是Spark将内置的Hive client版本升级到了1.2.1,原来是0.13.1。 不过Spark依然支持低版本的Hive,只需添加两个配置到spark-default.conf或启动Driver的时候执行这两个配置也可以,配置如下(我这里用的0.13.1所以配置看你的客户端版本而定): spark.sql.hive.metastore.

解决Spark1.5.0依赖twtter的maven库,导致无法编译的问题

Spark 1.5.0发布了,诸多性能改进,心动啊,赶紧编译玩玩,编译过程中发现有个包一直下载超时,是maven.twttr.com的一个仓库中的包,尼玛,twtter在国内是被墙的! 没办法,要么翻墙,要么自己配个host,linux翻墙有些麻烦,也懒得折腾了,配置/etc/hosts是比较简单的方法,推荐一个网站测速的服务http://www.17ce.com/, 通过这个服务,

解决使用SBT编译Spark出现UNRESOLVED DEPENDENCIES的问题

[warn] :::::::::::::::::::::::::::::::::::::::::::::: [warn] :: UNRESOLVED DEPENDENCIES :: [warn] :::::::::::::::::::::::::::::::::::::::::::::: [warn] :: org.apache.spark#spark-network-common_2.10;1.4.1: configuration not public in org.apache.spark#spark-network-common_2.10;1.