搭建Spark源码阅读环境

1.安装JDK1.7、Maven3.2.5、Scala2.10.4

2.下载解压Spark1.4.0

下载地址:
http://mirrors.cnnic.cn/apache/spark/spark-1.4.0/spark-1.4.0.tgz

3.下载安装 IntelliJ IDEA 14.1.4,给IDEA安装 Scala 插件,然后导入Spark项目

4.在IDEA中编译Spark

若编译时遇到如下图所示的错误:

在Maven视窗点击“Generate Sources and Update Folders For All Projects”,可解决此问题

在“Generate Sources and Update Folders For All Projects”过程中可能会遇到“Unable to import maven project: See logs for details”错误;可点击Help-->Show Log in Exploere,查看错误日志信息如下:

2015-08-29 22:59:08,909 [ 105808]   WARN -      #org.jetbrains.idea.maven - embedder class org.jetbrains.idea.maven.project.MavenEmbeddersManager.FOR_FOLDERS_RESOLVE is already used
2015-08-29 22:59:08,916 [ 105815]   WARN - ution.rmi.RemoteProcessSupport - Exception in thread "RMI TCP Connection(idle)" java.lang.OutOfMemoryError: PermGen space
2015-08-29 22:59:08,923 [ 105822]   WARN - ution.rmi.RemoteProcessSupport - Exception in thread "RMI TCP Connection(idle)" java.lang.OutOfMemoryError: PermGen space
2015-08-29 22:59:08,923 [ 105822]  ERROR -      #org.jetbrains.idea.maven - Cannot reconnect.
java.lang.RuntimeException: Cannot reconnect.
at org.jetbrains.idea.maven.server.RemoteObjectWrapper.perform(RemoteObjectWrapper.java:82)
at org.jetbrains.idea.maven.server.MavenEmbedderWrapper.customizeForResolve(MavenEmbedderWrapper.java:64)
at org.jetbrains.idea.maven.project.MavenProjectsTree.executeWithEmbedder(MavenProjectsTree.java:1366)
at org.jetbrains.idea.maven.project.MavenProjectsTree.resolveFolders(MavenProjectsTree.java:1312)
at org.jetbrains.idea.maven.project.MavenProjectsProcessorFoldersResolvingTask.perform(MavenProjectsProcessorFoldersResolvingTask.java:39)
at org.jetbrains.idea.maven.project.MavenProjectsProcessor.doProcessPendingTasks(MavenProjectsProcessor.java:134)
at org.jetbrains.idea.maven.project.MavenProjectsProcessor.access$100(MavenProjectsProcessor.java:30)
at org.jetbrains.idea.maven.project.MavenProjectsProcessor$2.run(MavenProjectsProcessor.java:109)
at org.jetbrains.idea.maven.utils.MavenUtil$6.run(MavenUtil.java:441)
at com.intellij.openapi.application.impl.ApplicationImpl$8.run(ApplicationImpl.java:400)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
at org.jetbrains.ide.PooledThreadExecutor$1$1.run(PooledThreadExecutor.java:56)
Caused by: java.rmi.UnmarshalException: Error unmarshaling return; nested exception is:
java.io.EOFException
at sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:246)
at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:161)
at java.rmi.server.RemoteObjectInvocationHandler.invokeRemoteMethod(RemoteObjectInvocationHandler.java:194)
at java.rmi.server.RemoteObjectInvocationHandler.invoke(RemoteObjectInvocationHandler.java:148)
at com.sun.proxy.$Proxy91.set(Unknown Source)
at sun.reflect.GeneratedMethodAccessor124.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at com.intellij.execution.rmi.RemoteUtil.invokeRemote(RemoteUtil.java:124)
at com.intellij.execution.rmi.RemoteUtil.access$100(RemoteUtil.java:36)
at com.intellij.execution.rmi.RemoteUtil$2$1$1.compute(RemoteUtil.java:105)
at com.intellij.execution.rmi.RemoteUtil.executeWithClassLoader(RemoteUtil.java:181)
at com.intellij.execution.rmi.RemoteUtil$2$1.invoke(RemoteUtil.java:102)
at com.sun.proxy.$Proxy91.set(Unknown Source)
at org.jetbrains.idea.maven.server.MavenServerManager.create(MavenServerManager.java:175)
at org.jetbrains.idea.maven.server.MavenServerManager.create(MavenServerManager.java:71)
at org.jetbrains.idea.maven.server.RemoteObjectWrapper.getOrCreateWrappee(RemoteObjectWrapper.java:41)
at org.jetbrains.idea.maven.server.MavenServerManager$5.create(MavenServerManager.java:481)
at org.jetbrains.idea.maven.server.MavenServerManager$5.create(MavenServerManager.java:469)
at org.jetbrains.idea.maven.server.RemoteObjectWrapper.getOrCreateWrappee(RemoteObjectWrapper.java:41)
at org.jetbrains.idea.maven.server.MavenEmbedderWrapper.doCustomize(MavenEmbedderWrapper.java:87)
at org.jetbrains.idea.maven.server.MavenEmbedderWrapper.access$000(MavenEmbedderWrapper.java:36)
at org.jetbrains.idea.maven.server.MavenEmbedderWrapper$2.execute(MavenEmbedderWrapper.java:67)
at org.jetbrains.idea.maven.server.RemoteObjectWrapper.perform(RemoteObjectWrapper.java:76)
... 15 more
Caused by: java.io.EOFException
at java.io.ObjectInputStream$BlockDataInputStream.peekByte(ObjectInputStream.java:2598)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1318)
at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1990)
at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1915)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:370)
at sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:244)
... 38 more
2015-08-29 22:59:08,924 [ 105823]  ERROR -      #org.jetbrains.idea.maven - IntelliJ IDEA 14.1.4  Build #IU-141.1532.4
2015-08-29 22:59:08,924 [ 105823]  ERROR -      #org.jetbrains.idea.maven - JDK: 1.7.0_80
2015-08-29 22:59:08,924 [ 105823]  ERROR -      #org.jetbrains.idea.maven - VM: Java HotSpot(TM) 64-Bit Server VM
2015-08-29 22:59:08,924 [ 105823]  ERROR -      #org.jetbrains.idea.maven - Vendor: Oracle Corporation
2015-08-29 22:59:08,924 [ 105823]  ERROR -      #org.jetbrains.idea.maven - OS: Windows 8
2015-08-29 22:59:08,925 [ 105824]  ERROR -      #org.jetbrains.idea.maven - Last Action: Maven.UpdateFolders 

这种情况应该是GFW的原因,换一个时间段或者使用代理就可以了

5.在IDE中运行master:直接运行类org.apache.spark.deploy.master.Master,若报如下图所示错误

修改项目根路径下的pom.xml,将guava的版本为范围由provided修改为compile

<dependency>

<groupId>com.google.guava</groupId>

<artifactId>guava</artifactId>

<version>14.0.1</version>

<scope>compile</scope>

</dependency>

运行成功时,控制台输出如下:

6.在IDE中运行Worker:运行类org.apache.spark.deploy.worker.Worker,并指定参数 --webui-port 8081 spark://192.168.63.1:7077

时间: 2024-11-08 20:20:47

搭建Spark源码阅读环境的相关文章

【Spark】配置Spark源码阅读环境

Scala构建工具(SBT)的使用 SBT介绍 SBT是Simple Build Tool的简称,如果读者使用过Maven,那么可以简单将SBT看做是Scala世界的Maven,虽然二者各有优劣,但完成的工作基本是类似的. 虽然Maven同样可以管理Scala项目的依赖并进行构建,但SBT的某些特性却让人如此着迷,比如: 使用Scala作为DSL来定义build文件(one language rules them all); 通过触发执行(trigger execution)特性支持持续的编译与

Mac搭建Hadoop源码阅读环境

1.本次Hadoop源码阅读环境使用的阅读工具是idea,Hadoop版本是2.7.3.需要安装的工具包括idea.jdk.maven.protobuf等 2.jdk,使用的版本是1.8版,在jdk官网下载jdk-8u111-macosx-x64.dmg,点击安装,一路next. 3.idea安装,略 4.maven,使用的版本是3.3.9,下载apache-maven-3.3.9-bin.tar,解压: tar -zxvf  apache-maven-3.3.9-bin.tar 进入 Mave

Hadoop学习系列笔记一:搭建hadoop源码阅读环境

本文来源于<Hadoop技术内幕深入解析Hadoop common和HDFS架构设计与实现原理> 一.Hadoop基本概念 Hadoop是Apache基金会下的一个开源分布式计算平台,以Hadoop分布式文件系统(HDFS)和MapReduce分布式计算框架为核心,为用户提供了底层细节透明的分布式基础设施. HDFS的高容错性.高伸缩性等优点,允许用户将Hadoop部署在廉价的硬件上,构建分布式系统. MapReduce分布式计算计算框架则允许用户在不了解分布式系统底层细节的情况下开发并行.分

Hadoop源码阅读环境搭建

Hadoop源码阅读环境搭建 一.说明 作为一个学习hadoop的同学,必须在本机上搭建hadoop源码阅读环境,这样,在方便阅读源码的同时也方便进行调试和源码修改.好了,下面开始搭建环境. 1.环境说明:hadoop 版本:1.2.1. IDE:eclipse.操作系统:centos 2.网上有人是通过eclipse的新建项目指定目录的方式将hadoop目录转换成Eclipse工程同时导入eclipse,具体做法如下: File-->new-->Java Project-->勾掉Use

Linux Mint 安装、配置及搭建Android源码编译环境

用过ubuntu,现在想换换Linux Mint试试看.下面是我安装配置Linux Mint13的过程.1.安装 安装LinuxMint13时,我尝试了好多种方法,都失败了.最后选用了硬盘安装.硬盘安装Linuxmint和安装ubuntu一样.1.1.准备工作 1.从linux mint的官方网站http://www.linuxmint.com/ 下载linux mint 13. 2.下载grub4dos,http://www.linuxidc.com/Linux/2009-01/18027.h

[Apache Spark源码阅读]天堂之门——SparkContext解析

稍微了解Spark源码的人应该都知道SparkContext,作为整个Project的程序入口,其重要性不言而喻,许多大牛也在源码分析的文章中对其做了很多相关的深入分析和解读.这里,结合自己前段时间的阅读体会,与大家共同讨论学习一下Spark的入口对象—天堂之门—SparkContex. SparkContex位于项目的源码路径\spark-master\core\src\main\scala\org\apache\spark\SparkContext.scala中,源文件包含Classs Sp

Spark源码阅读笔记之Broadcast(一)

Spark源码阅读笔记之Broadcast(一) Spark会序列化在各个任务上使用到的变量,然后传递到Executor中,由于Executor中得到的只是变量的拷贝,因此对变量的改变只在该Executor有效.序列化后的任务的大小是有限制的(由spark.akka.frameSize决定,值为其减去200K,默认为10M-200K),spark会进行检查,超出该限制的任务会被抛弃.因此,对于需要共享比较大的数据时,需要使用Broadcast. Spark实现了两种传输Broadcast的机制:

搭建Spark源码研读和代码调试的开发环境

转载自https://github.com/linbojin/spark-notes/blob/master/ide-setup.md Table of Contents 源码获取与编译 从Github上获取Spark源码 编译Spark项目 源码导入与代码运行 导入源码到Intellij IDEA 16 运行实例代码 1. 配置运行参数 2. 添加缺失的flume sink源代码 3. 添加运行依赖的jars 4. 成功运行实例代码 单步调试源代码 工欲善其事,必先利其器,第一篇笔记介绍如何搭

Spring源码阅读环境搭建

目录 安装gradle 导入Spring源码 创建测试模块my-test 本文思维导图 本文将粗略的搭建一个Spring源码的阅读环境,为后面的源码阅读做一个准备.做任何事情不管是有一个完美的或者是不太完美的开头,只要去做了,那么就是一种胜利. 由于spring使用了gradle构建工具,接下来先安装gradle. 安装gradle 从Gradle官网下载gradle安装包,打开https://gradle.org/releases/ 将下载的安装包gradle-x.x.x-all.zip解压到