文档章节

Spark Eclipse 开发环境搭建

clebeg
 clebeg
发布于 2015/10/10 10:03
字数 1202
阅读 967
收藏 3

Spark Eclipse 开发环境搭建

1 安装Spark环境

  • 首先下载与集群 Hadoop 版本对应的 Spark 编译好的版本,解压缩到指定位置,注意用户权限
  • 进入解压缩之后的 SPARK_HOME 目录
  • 配置 /etc/profile 或者 ~/.bashrc 中配置 SPARK_HOME
  • cd $SPARK_HOME/conf cp spark-env.sh.template spark-env.sh
  • vim spark-env.sh
export SCALA_HOME=/home/hadoop/cluster/scala-2.10.5
export JAVA_HOME=/home/hadoop/cluster/jdk1.7.0_79
export HADOOP_HOME=/home/hadoop/cluster/hadoop-2.6.0
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
#注意这个地方一定要指定为IP,否则下面的eclipse去连接的时候会报:
#All masters are unresponsive! Giving up. 这个错误的。
SPARK_MASTER_IP=10.16.112.121
SPARK_LOCAL_DIRS=/home/hadoop/cluster/spark-1.4.0-bin-hadoop2.6
SPARK_DRIVER_MEMORY=1G

2 standalone 模式开启 spark

sbin/start-master.sh
sbin/start-slave.sh

此时可以在浏览器中输入:http://yourip:8080 查看Spark集群的情况
此时默认的 Spark-Master 为: spark://10.16.112.121:7077

3 利用 Scala-Eclipse IDE 与 Maven 构建 Spark 开发环境

  • 首先下载 Scala-Eclipse IDE 去 scala 官网下载即可
  • 打开IDE, 新建 Maven 项目, pom.xml 填写如下:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<groupId>spark.test</groupId>
	<artifactId>FirstTrySpark</artifactId>
	<version>0.0.1-SNAPSHOT</version>

	<properties>
	  <!-- 填写对应版本 -->
	  <hadoop.version>2.6.0</hadoop.version>
	  <spark.version>1.4.0</spark.version>
	</properties>
	<dependencies>
		<dependency>
		    <groupId>org.apache.hadoop</groupId>
		    <artifactId>hadoop-client</artifactId>
		    <version>${hadoop.version}</version>
		    <scope>provided</scope>
        <!-- 记得排除servlet依赖,否则会报冲突 -->
		    <exclusions>
		      <exclusion>
			      <groupId>javax.servlet</groupId>
			      <artifactId>*</artifactId>
		      </exclusion>
		    </exclusions>
		</dependency>
                <dependency>
                    <groupId>org.apache.hadoop</groupId>
                    <artifactId>hadoop-common</artifactId>
                    <version>2.6.0</version>
                </dependency>
                <dependency>
                    <groupId>org.apache.hadoop</groupId>
                    <artifactId>hadoop-mapreduce-client-jobclient</artifactId>
                    <version>2.6.0</version>
                </dependency>


		<dependency>
			<groupId>org.apache.spark</groupId>
			<artifactId>spark-core_2.10</artifactId>
			<version>${spark.version}</version>
		</dependency>

	</dependencies>


	<build>
		<sourceDirectory>src/main/java</sourceDirectory>
		<plugins>
			<!-- bind the maven-assembly-plugin to the package phase this will create
				a jar file without the storm dependencies suitable for deployment to a cluster. -->

			<plugin>
				<groupId>net.alchim31.maven</groupId>
				<artifactId>scala-maven-plugin</artifactId>
				<version>3.2.0</version>
				<executions>
					<execution>
						<goals>
							<goal>compile</goal>
							<goal>testCompile</goal>
						</goals>
					</execution>
				</executions>
				<configuration>
					<scalaVersion>2.10</scalaVersion>
				</configuration>
			</plugin>

			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-assembly-plugin</artifactId>
				<version>2.5.5</version>
				<configuration>
					<descriptorRefs>
						<descriptorRef>jar-with-dependencies</descriptorRef>
					</descriptorRefs>
				</configuration>
				<executions>
					<execution>
						<phase>package</phase>
						<goals>
							<goal>single</goal>
						</goals>
					</execution>
				</executions>
			</plugin>

			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-compiler-plugin</artifactId>
				<configuration>
					<source>1.7</source>
					<target>1.7</target>
				</configuration>
			</plugin>

		</plugins>

		<resources>
			<resource>
				<directory>src/main/resources</directory>
			</resource>
		</resources>

	</build>
</project>
  • 新建几个 Source Folder
src/main/java      #编写 java 代码
src/main/scala     #编写 scala 代码
src/main/resources #存放资源文件
src/test/java      #编写测试 java 代码
src/test/scala     #编写测试 scala 代码
src/test/resources #存放资源文件

此时环境全部搭建完毕!

4 编写测试代码是否可以连接成功

  • 测试代码如下:
import org.apache.spark.SparkConf
import org.apache.spark.SparkConf
import org.apache.spark.SparkContext

/**
 * @author clebeg
 */
object FirstTry {
  def main(args: Array[String]): Unit = {
    val conf = new SparkConf
    conf.setMaster("spark://yourip:7077")
    conf.set("spark.app.name", "first-tryspark")
    val sc = new SparkContext(conf)
    val rawblocks = sc.textFile("hdfs://yourip:9000/user/hadoop/linkage")
    println(rawblocks.first)
  }
}

5 部分错误汇总

大部分问题上面已经提到,这里不多说,下面提几个主要的问题:

  • Initial job has not accepted any resources; check your cluster UI to ensure that workers are registered and have sufficient resources
    分析问题:点开运行ID对应的运行日志发现下面的错误:
15/10/10 08:49:01 INFO executor.CoarseGrainedExecutorBackend: Registered signal handlers for [TERM, HUP, INT]
15/10/10 08:49:01 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
15/10/10 08:49:02 INFO spark.SecurityManager: Changing view acls to: hadoop,Administrator
15/10/10 08:49:02 INFO spark.SecurityManager: Changing modify acls to: hadoop,Administrator
15/10/10 08:49:02 INFO spark.SecurityManager: SecurityManager: authentication disabled; ui acls disabled; users with view permissions: Set(hadoop, Administrator); users with modify permissions: Set(hadoop, Administrator)
15/10/10 08:49:02 INFO slf4j.Slf4jLogger: Slf4jLogger started
15/10/10 08:49:02 INFO Remoting: Starting remoting
15/10/10 08:49:02 INFO Remoting: Remoting started; listening on addresses :[akka.tcp://driverPropsFetcher@10.16.112.121:58708]
15/10/10 08:49:02 INFO util.Utils: Successfully started service 'driverPropsFetcher' on port 58708.
Exception in thread "main" java.lang.reflect.UndeclaredThrowableException
	at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1643)
	at org.apache.spark.deploy.SparkHadoopUtil.runAsSparkUser(SparkHadoopUtil.scala:65)
	at org.apache.spark.executor.CoarseGrainedExecutorBackend$.run(CoarseGrainedExecutorBackend.scala:146)
	at org.apache.spark.executor.CoarseGrainedExecutorBackend$.main(CoarseGrainedExecutorBackend.scala:245)
	at org.apache.spark.executor.CoarseGrainedExecutorBackend.main(CoarseGrainedExecutorBackend.scala)
Caused by: java.util.concurrent.TimeoutException: Futures timed out after [120 seconds]
	at scala.concurrent.impl.Promise$DefaultPromise.ready(Promise.scala:219)
	at scala.concurrent.impl.Promise$DefaultPromise.result(Promise.scala:223)
	at scala.concurrent.Await$$anonfun$result$1.apply(package.scala:107)
	at scala.concurrent.BlockContext$DefaultBlockContext$.blockOn(BlockContext.scala:53)
	at scala.concurrent.Await$.result(package.scala:107)
	at org.apache.spark.rpc.RpcEnv.setupEndpointRefByURI(RpcEnv.scala:97)
	at org.apache.spark.executor.CoarseGrainedExecutorBackend$$anonfun$run$1.apply$mcV$sp(CoarseGrainedExecutorBackend.scala:159)
	at org.apache.spark.deploy.SparkHadoopUtil$$anon$1.run(SparkHadoopUtil.scala:66)
	at org.apache.spark.deploy.SparkHadoopUtil$$anon$1.run(SparkHadoopUtil.scala:65)
	at java.security.AccessController.doPrivileged(Native Method)
	at javax.security.auth.Subject.doAs(Subject.java:415)
	at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1628)
	... 4 more
15/10/10 08:51:02 INFO util.Utils: Shutdown hook called

仔细一看原来是权限的问题:立马关闭 Hadoop, 在 etc/hadoop/core-site.xml 中添加:

<property>  
  <name>hadoop.security.authorization</name>  
  <value>false</value>  
</property>  

设置任何人都可以读取,问题立马搞定。

  • java.io.IOException: Could not locate executable null\bin\winutils.exe in the Hadoop binaries.
  1. 到地址http://www.barik.net/archive/2015/01/19/172716/ 下载包含 winutils.exe 的 hadoop2.6 重新编译的版本。注意一定要下载对应自己的Hadoop版本。
  2. 减压缩到指定位置,设置 HADOOP_HOME 环境变量。注意一定要重新启动 eclipse。 搞定!
mkdir linkage
cd linkage/
curl -o donation.zip http://bit.ly/1Aoywaq
unzip donation.zip
unzip "block_*.zip"
hdfs dfs -mkdir /user/hadoop/linkage
hdfs dfs -put block_*.csv /user/hadoop/linkage

6 一些有用的链接

  1. http://www.migle.me/post/Spark%E5%AD%A6%E4%B9%A0-hello%20spark/ spark 初探
  2. http://spark.apache.org/docs/latest/index.html spark 官网
  3. http://www.cnblogs.com/hseagle/category/569175.html spark 源码剖析
  4. http://wuchong.me/blog/2015/04/04/spark-on-yarn-cluster-deploy/ spark 集群搭建
  5. http://www.barik.net/archive/2015/01/19/172716/ 包含winutil.exe 的Hadoop2.6重新编译版本

© 著作权归作者所有

clebeg
粉丝 45
博文 40
码字总数 40057
作品 0
广州
程序员
私信 提问
windows 安装 spark 及 PyCharm IDEA 调试 TopN 实例

首先声明本文搭建的环境为:windows8.1 + spark1.6.0 + python2.7 + jdk8,spark on windows 对 windows及python版本不怎么挑,但是对 spark 版本要求极其苛刻,比如 spark1.6.1 就无法运行。...

大数据之路
2012/06/28
909
0
本地windows跑Scala程序调用Spark

应用场景 spark是用scala写的一种极其强悍的计算工具,spark内存计算,提供了图计算,流式计算,机器学习,即时查询等十分方便的工具,所以利用scala来进行spark编程是十分必要的,下面简单书...

wsc449
2017/11/21
0
0
本地windows跑Python程序调用Spark

应用场景 spark是用scala写的一种极其强悍的计算工具,spark内存计算,提供了图计算,流式计算,机器学习,即时查询等十分方便的工具,当然我们也可以通过python代码,来调用实现spark计算,...

wsc449
2017/11/22
0
0
【Spark亚太研究院系列丛书】Spark实战高手之路-第一章 构建Spark集群(第四步)(7)

第四步:通过Spark的IDE搭建并测试Spark开发环境 Step 1:导入Spark-hadoop对应的包,次选择“File”–> “Project Structure” –> “Libraries”,选择“+”,将spark-hadoop 对应的包导入...

Spark亚太研究院
2014/09/25
326
0
IDEA开发Spark应用实战(Scala)

版权声明:欢迎转载,请注明出处,谢谢。 https://blog.csdn.net/boling_cavalry/article/details/87510822 Scala语言在函数式编程方面的优势适合Spark应用开发,IDEA是我们常用的IDE工具,今...

博陵精骑
02/17
0
0

没有更多内容

加载失败,请刷新页面

加载更多

还为PDF转Word抓狂?以下神器让你在职场倍受欢迎!

身在职场的你,是否一直在琢磨:如何能让自己在公司更受欢迎?如何才能在办公室里混个好人缘?如何在同事圈里留个好印象?其实,想要让自己成为受欢迎的人,只要让自己成为大家需要的人不就行...

foxit2world
21分钟前
7
0
AndServer+Service打造Android服务器实现so文件调用

so 文件调用 随着 Android 移动安全的高速发展,不管是为了执行效率还是程序的安全性等,关键代码下沉 native 层已成为基本操作。 native 层的开发就是通指的 JNI/NDK 开发,通过 JNI 可以实...

夜幕NightTeam
22分钟前
4
0
Docker下kafka学习三部曲之二:本地环境搭建

在上一章《 Docker下kafka学习,三部曲之一:极速体验kafka》中我们快速体验了kafka的消息分发和订阅功能,但是对环境搭建的印象仅仅是执行了几个命令和脚本,本章我们通过实战来学习如何编写...

程序员欣宸
23分钟前
4
0
萌新推荐!不再为Excel转换PDF发愁,Aspose.Cells for .NET一步到位!

Aspose.Cells for .NET(点击下载)是Excel电子表格编程API,可加快电子表格管理和处理任务,支持构建具有生成,修改,转换,呈现和打印电子表格功能的跨平台应用程序。 将Excel工作簿转换为...

mnrssj
24分钟前
6
0
对于绘画小白怎么画制服?该注意什么?

怎样制作学生服装?想必绘画初学者们常常会想的问题吧,不知道怎样才能画好人物的衣服,别着急,今日就在这儿讲一些关于如何绘画学生衣服校服的教程给我们!期望能够帮到你们! 轻便西装是不...

热爱画画的我
29分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部