Spark是Berkeley AMP实验室研究的最新成果。它是一个基于内存有容错性能的通用的集群计算框架。它的主要目的是用来处理iterative算法(机器学习)和iteractive查询(数据挖掘的一些工具)。
这两种应用场景的共同点是对一个基本不变的数据集会重复访问。而mapreduce对这样的算法的处理性能比较一般。
Spark的具体原理不在这里讲述,有兴趣的朋友可以去http://www.spark-project.org/进行进一步的了解。
下面主要介绍下安装过程(Linux平台)中需要注意的几个问题:
1. Spark安装过程需要用Git。但是在墙内还需要对Git进行代理设置,具体的设置方法请参见:http://mysuperbaby.iteye.com/blog/935741
2. 如果想用分布式文件系统HDFS(配置HDFS),那么可能遇到如下问题:
2.1 在访问hdfs文件是抛出异常:“Exception in thread "main" java.io.IOException: Call to localhost/127.0.0.1:9000 failed on local exception: java.io.EOFException”
此问题由于客户端(spark)的hadoop版本与服务器端的hadoop版本不一致,此时你可以把服务器端的hadoop-core-xxxx.jar拷贝到spark目录下得lib_managed/jars/org.apache.hadoop/hadoop-core/文件夹下,并把文件命名成该文件夹原来的hadoop包得名字(不改名字得话,重新编译时不会用拷贝过来的jar包,会重新下载一个),然后重新assembly生成spark-core-xxxxx.jar文件。
2.2 如果在2.1操作后仍然出现问题:
java.lang.NoClassDefFoundError: org/apache/commons/configuration/Configuration
hadoop .NoClassDefFoundError: org/apache/commons/lang/StringUtils org/apache/commons/lang/StringUtils
此时就是缺少一些依赖包,我们可以从服务器端的hadoop下的lib文件夹中把commons-configuration-1.6.jar 和 commons-lang-2.4.jar拷贝spark-core-xxxxx.jar所在的目录即可。
然后把这些包加入CLASSPATH即可。
2.3 关于CLASSPATH的设置问题
经过我的尝试,在系统环境变量CLASSPATH设置没起任何作用。希望有可以的朋友分享一下经验。
现在我是这样做的,利用scala 语言本身功能设置classpath,即 scala -cp <path>。但是目前似乎只能带一个jar包。于是需要把先前的三个jar包打成一个包。
具体打包可以在windows下利用winrar完成:首先把三个包解压到统一个文件夹下,解压过程中可能会产生一些冲突,不过不要紧,有冲突的都是些MANIFEST.MF, LICENSE, NOTICE等文件。最后把解压出来的内容重新打成一个包即可。注意选择zip格式。
以上是自己安装过程遇到的问题的总结,希望对大家有帮助~~