win7系统 spark 安装配置及排错

日期:17.5.1-5.4


我原本计划在Linux Ubuntu系统上安装Spark,网上教程和攻略细细读了几篇,准备工作基本就绪,却唯独差了一个u盘。为了赶时间,不因此拖进度的后腿,临时起意转战windows。

对于我来说,在Linux系统上安装和配置Spark是一件麻烦事,接触不多,学习各种代码命令需要花费比较多的时间。Windows系统操作比较熟悉,排错会更容易一些。

安装容易,但后期配置和编译时windows系统就略显劣势了。整个工作耗费了我很多的精力和时间。一次次较真、一次次苦恼,又一次次惊喜、一次次欣慰。其实总的看,只是把这几个软件的配置好而已,但是让我没想到的是,两个整晚没有睡觉,因为较真也因为急着想赶赶进度。所以我很庆幸我以文字的形式记录下了这个过程,这帮助我做有条不紊的思路整理。原理是互通的,这些排错的思路过程,对下次我在Linux系统上配置Spark会有帮助。但愿也能帮助到遇类似困难的同学,尽早解决问题,节约宝贵的时间。

ps:如果老师不要求写题记,我不会主动做记录,便不会有这份小收获。十分感谢老师。By the way~ 希望学业顺利,花开结果。


##1.JDK安装与环境变量配置
参考:https://jingyan.baidu.com/article/6dad5075d1dc40a123e36ea3.html
刚开始教程看的不仔细,jdk和jre没放在分开的文件夹。正准备卸载,发现电脑还有旧版本JDK,360一并卸载并强力清扫残留后重装,出现问题:”Invalid characters in hostname”。
网上没有合适的解决方法,想到idea: 恢复文件,但文件数量庞大故放弃。
配置了JDK的环境变量,cmd检测配置成功,故不再理会这个问题。

##2.scala安装

官网下载安装(spark官方文档要求的相应版本,spark2.0要求scala2.11.x)。尽管有些教程没提及环境变量配置(貌似现在版本的scala会自动修改系统的环境变量),保险起见,和JDK一样配置了环境变量。

##3.spark安装

##4.sbt安装和配置

问题(1)
cd到spark安装目录,敲入命令sbt/sbt package,出错:

“sbt 不是内部命令或外部命令。”

重新配置sbt环境变量,问题解决。

问题(2)
重新敲入,等待。。。(this may take some time,其实真的蛮久)。
结果依然报错,报错内容:

Jaca HotSpot™ 64-Bit Server VM warning: ignoring option MaxPermSize=256m; suport was removed in 8.0

stackoverflow找到解答:对于Java8.0版本,这条报错是无意义的,可忽略

问题(3)
sbt出了问题。。

WARN:: No sbt.version set in project/build.properties, base directory: F:\spark\spark-2.0.2-bin-hadoop2.7\spark-2.0.2-bin-hadoop2.7

官网重新下载scala2.11.11相应版本的sbt后解决

问题(4)
还是sbt的问题。。

[info] The current project is built against Scala 2.10.6

stackoverflow找到官方解答:

“We can’t break binary compatibility for all the sbt 0.13 plugins
until we release the next version sbt 0.14 or potentially sbt 1.0, so
no Scala 2.11.x sbt until then.” “One way to work around this is to
use Fork API. sbt 0.13 is capable of building Scala 2.11 source using
Scala 2.11 compilers. You can mimic the way its done, and run Scala
2.10 or 2.11 code from sbt.”

既然是sbt还没有相应更新,这个问题先暂时忽略。如果运行过程出问题,再想办法解决吧。。

(Updata:囧。。刚注意到是14年的回答,三年了都没有更新吗,看来得另寻办法了。)

(我的思想斗争过程:如果改用scala2.10,则需要下载相应的spark源码包和支持文件(Spark官网这样说的),这不是更可取的办法,所以只好忽略这个sbt和scala版本差异。)

问题(5)
但不在spark的根目录下运行sbt package,不影响吗?以后搞清楚再解答吧。

##5.更新python到3.6.1
(Updata:因为anaconda已内嵌python3.6.0,担心版本冲突,我卸载了python。ps:Spark2.1并不支持3.6版本的python并不支持,需要改用3.5版本。此时anaconda的一个优点得以体现,内嵌可同时含有3.5和3.6版本的python)

在简书上找到一篇很有帮助的博文:
http://www.jianshu.com/p/7b325155edab

##6.hadoop安装
问题(1)
解压缩时报错。。错误信息:

F:\hadoop\hadoop-2.7.1.tar.gz: 无法创建符号链接
F:\hadoop\hadoop-2.7.1\hadoop-2.7.1\lib\native\libhadoop.so 您可能需要以管理器身份运行 WinRAR! 客户端没有所需的特权。
F:\hadoop\hadoop-2.7.1.tar.gz: 无法创建符号链接
F:\hadoop\hadoop-2.7.1\hadoop-2.7.1\lib\native\libhdfs.so 您可能需要以管理器身份运行 WinRAR! 客户端没有所需的特权。

以管理员身份运行WinRAR后解压,问题解决。

问题(2)
%HADOOP_HOME%\bin\winutils.exe chmod 777 \tmp\hive
这个命令的意思是让winutils.exe文件对 \tmp\hive有读写权限
但在cmd运行时报错:

ChangeFileModeByMask error (3): ???

网上找到类似问题解决办法:
http://blog.csdn.net/u011242657/article/details/53968135
其中第三条,我又在网上搜索,右键菜单没有“管理员获取所有权”的解决办法
https://jingyan.baidu.com/article/2f9b480d6cfccd41ca6cc276.html
相关代码:
http://bbs.ithome.com/thread-162629-1-1.html
最后,完美解决。

问题(3)
下面贴一个看起来比较重要,但我还没有掌握的东西:
(From blogspot:Apache Spark checkpoint issue on windows)

set environmental variable “HADOOP_HOME” to the folder which contains bin/winutils.exe

  • option A: use global environment variables. My Computer -> Properties -> Advanced system settings -> Environment variables
  • option B: from your source code
    System.setProperty("hadoop.home.dir", <PATH_TO_WINUTILS>)

(Note: 上方的<PATH_TO_WINUTILS> 应该根据winutils的路径做相应的修改,比如我的路径是:F:\hadoop\hadoop-2.7.1\hadoop-2.7.1\bin\winutils.exe。那么我应该把<PATH_TO_WINUTILS> 改成"F:\hadoop\hadoop-2.7.1\hadoop-2.7.1")
##7.Spark-shell配置小插曲之出错
cmd运行spark-shell,仍然只有下面的spark context,没有sql context,并且sc在单引号内:‘sc’,我不知道是否有问题,待排查。

Spark context available as sc.
SQL context available as sqlContext.

在百度上查了很多很多资料,试了很多很多方法,都没能解决。
时间过得很快,一个小问题困扰了我整个下午。找不到前人的经验,我决定在stackoverflow提问。等待中…
(Updata:没过多久便收获了解答:spark2.0版本之后,SQL context 被表示为 spark version。)
第一次在stackoverflow上提问,以往只是看已有的问答,有点小激动。

第二篇很有帮助的博文:
http://blog.csdn.net/u011513853/article/details/52896230

##8.ItelliJ IDEA安装
记录(1)
加scala插件,
配置jdk安装路径,加载jdk
配置sdk安装路径,加载scala sdk

(出现小插曲,而后搜索资料,已解决)

(Updata:回想一下,sbt和scala版本不匹配,是不是sdk配置不顺利的原因呢?仅仅是一个猜测,以后搞清楚了再回答吧。)
(Updata:网上查找资料,搞清楚了其实IDEA自带集成scala,导致IDEA ivy的scala与System的scala冲突,版本不同。我选择了本地scala,这个问题就解决了。)

记录(2)
最后,编写了第一个scala程序,调试一下。hello world!
哈哈,终于成功了。开心。渺小的人,感动于渺小。
感动之余,趁热打铁学习了打包jar。

(Updata:后期发现一篇比较好的blog:)
http://nanxiao.me/en/build-apache-spark-application-in-intellij-idea-14-1/
(Updata:外加一篇思路比较清晰的blog,尽管并没有多少帮助,但还是想记录一下:)
http://blog.csdn.net/jameshadoop/article/details/52305228

问题(3)
IDEA编写scala程序Spark2.0依赖jar包的问题:
https://zhidao.baidu.com/question/1449809115871447060.html

问题(4)
运行程序时出错。。

Error in running Spark in Intellij: “object apache is not a member of
package org”

出现这个问题时,解决步骤:Project Structure>>Modules>>Dependencies>>green plus>>library>>jars

(Note:此jars包,在上一步提及)

又发现了一篇博客:
http://blog.csdn.net/a_step_further/article/details/51176969

##9.anaconda安装
记录(1)
http://www.th7.cn/Program/Python/201507/515289.shtml
(含部分软件功能讲解)
记录(2)
在anaconda中安装tenserflow
http://www.th7.cn/system/win/201703/209385.shtml

##10.使用pycharm配置tensorflow环境
最后一步不太成功,在网上找到了原因,但现在还不能着手处理。贴一下链接,以备以后需要。
http://stackoverflow.com/questions/37866877/pycharm-anaconda-import-tensor-flow-library-issue

原因大概可以总结为:配置多个python环境时,需要分离。回想一下,我在anaconda中安装tenserflow时,已经在spyder中配置并进入tenserflow会话,我猜测与这有关。等以后搞清楚再说,待解决。

(Updata:已解决。在网上找到了解决方法:pycharm设置Project Iterpreter时,还需要create VirtualEnv,并选择tensorflow路径下的python.exe,创建之后选择即可。在虚拟环境下,列表中终于包含tenserflow了~)

(或许是因为,Project Iterpreter列表中的python时最新版本3.6,tensorflow路径下的python是用anaconda提前下载的旧版本3.5)

(Updata:最后已改用anaconda文件夹下的envs的python35。现在搞清楚了,原因在于版本不兼容,改用python3.5就好了。 并且,需要把spark的python支持包(也就是pyspark文件夹)复制到anaconda\envs\python35\Lib\site-packages目录下)

##11. 在pycharm中配置开发环境
http://blog.csdn.net/huangxia73/article/details/51372557

问题来了。。
cmd中无法启动pyspark。。提示错误信息:

“TypeError:namedtuple<> missing 3 required keyword-only arguments: ‘verbose’, ‘rename’, and ‘module’”

网上找到解答:

Spark 2.1.0 doesn’t support python 3.6.0. To solve this change your
python version in anaconda environment. Run following command in your
anaconda env (To download python3.5 environment,use:) conda create -n
py35 python=3.5 anaconda (To activate this environment, use:) activate
py35 ( To deactivate this environment, use:) deactivate py35

终于成功了!cmd中pySpark终于启动成功!!(记得关闭py3.5环境哦

##12.pySpark安装&Pycharm
http://blog.csdn.net/a819825294/article/details/51782773
(note:此博客的调试代码少了一行,导致编译错误,Line10,11的代码如下:count = lines.count print(count);注意添加。而且print函数也错了,改为print()

又出现一个问题。。

pycharm ImportError: No module named ‘py4j’

网上搜了很多,但处理的并不太好,我尝试了一个方法:在官网下载py4j的zip压缩包,解压缩后,在cmd命令行先cd到py4j的安装目录下,再cd到py4j-0.10.3\py4j-0.10.3下,运行命令:python setup.py install, 等待安装,这个问题就被完美解决了。

网上有人提及要把安装路径添加到PYTHONPATH,但我没添加也没有什么问题,有待考究吧,参见网址:http://blog.csdn.net/hongrj/article/details/17528293

##13.git 安装和配置
http://www.360doc.com/content/17/0111/10/39439016_621721670.shtml
http://www.cnblogs.com/MrJun/p/3351478.html
学习了IDEA中github相关的操作,以后会用到吧。
(Updata: Pycharm 中也可以用,十分方便。github的克隆和上传,还可以追订克隆。暂时没用到,不过很强大的样子。。。)

到此结束啦!!

##14.投入实战吧

  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SunnyGJing

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值