在Windows上安装单机Spark
一、 依照官方文档第一次尝试
1. 安装jdk(spark基于jvm,所以先装jdk1.6以上)和python(2.4以上,python3暂不支持),配置jdk和python环境变量:
2. 然后官网上下载spark-1.2.0-bin-hadoop2.4.tgz
解压到目录F:\spark 打开windows的cmd命令模式,进入spark目录,按照文档上运行bin/pyspark,会提示找不到所需的jar包,需要重新build生成这个jar包。
因spark下载和编译需要git和sbt,所以安装spark还需安装这两个工具。
二、 第二次尝试
Scala:spark是用Scala语言写成,在本地编译执行需要这个包
1. 从http://www.scala-lang.org/download/all.html下载scala的msi安装文件scala-2.11.7.msi并安装。msi版本的好处在于,环境变量自动配置,否则需要手动配置环境变量,将scala安装目录添加到PATH中,如下图
安装完成后,在cmd命令行输入scala -version如输出scala版本信息,则安装成功。
2. 然后是sbt
从http://www.scala-sbt.org/download.html下载windows版本sbt安装文件sbt-0.13.9.msi,直接安装即可。安装完成后,使用cmd命令行执行std –version看是否输出sbt版本信息,否则需手动配置环境变量PATH,将sbt安装目录添加到PATH中。
3. Spark前面已经安装了,现在进入到Spark的目录下,运行sbtpackage,这会将spark所有依赖的lib下载到本地的ivy repository(sbt默认使用ivy repository),结果失败了
原来是因为我使用的是公司办公网,需要设置网络代理,于是设置代理。
set http_proxy=http://XXXX.com:8080
set https_proxy=https://XXXX.com:8080
重新编译,又出现错误,
超时,好吧重跑,总算好了
但是运行spark-shell出现下面的问题:
Failed to initializecompiler: object scala.runtime in compiler mirror not found.
** Note that as of 2.8 scala does notassume use of the java classpath.
** For the old behavior pass -usejavacp toscala, or if using a Setting
** object programatically,settings.usejavacp.value = true.
原来是2.8版本以上的Scala将不再默认使用java的classpath,要解决这个问题,显然要在配置文件中添加javaclasspath的命令,上网百度后,终于找到完整可行的解决方案:
修改spark下\bin\spark-class2.cmd文件的内容,添加图中红色部分内容:
再次执行,依然出现winutils缺失的问题。
好吧,再想想。。。真相永远只有一个
分析错误信息,是说程序需要根据HADOOP_HOME找到winutils.exe,由于win机器并没有配置该环境变量,所以程序报 null\bin\winutils.exe。
找到原因后就去网上问了度娘,找到了解决方案,很简单,如下:
1) 下载winutils的windows版本
GitHub上,有人提供了winutils的windows的版本,项目地址是:https://github.com/srccodes/hadoop-common-2.2.0-bin ,直接下载此项目的zip包,下载后是文件名是hadoop-common-2.2.0-bin-master.zip,随便解压到一个目录
2) 配置环境变量
增加用户变量HADOOP_HOME,值是下载的zip包解压的目录,然后在系统变量path里增加$HADOOP_HOME\bin 即可。
再次运行程序,还是一样。
原来是没生效,重启电脑后运行spark-shell,总算正常了。
输出日志好多啊。改下日志配置。在conf中有个日志配置的模板,复制一个log4j.properties.template,改名为log4j.properties,将修改为
重新开一个程序
简洁多了
来个示例
对data元素做累加计算,输出结果为55