WangLiuying's blog

Spark本地版-Win10+虚拟机linux

Spark本地版-Win10+虚拟机linux

写在前面

最近动起了学spark的念头,于是准备配置一个试试。作为计算机菜鸟几天来踩坑不少。

关于网上推荐spark进阶书籍和路线,好多人说看官方文档就够了,而我必须说,

信了你们的鬼话!!

什么 零基础入门Spark在Linux虚拟机上配置Spark傻瓜教程 ,喵的一步步做为什么就光报错??

(唉??心虚地看了眼标题)

从图书馆随手预约了一本书迟迟未到,在我艰难的一步一个脚印踩着坑终于配置好了本地版(对,小菜鸡用了三天才配了个本地版)时,书到了,然后我翻开目录:

spark本地单机模式体验-安装虚拟机-安装JDK-下载Spark预编译包……

高可用Spark分布式集群部署-集群总览-机器型号选择-……部署SparkStandalone集群……

不说了,都是泪。这本书-《Spark最佳实践》by陈欢、林世飞

交代一下环境:Win10,虚拟机VMWare搭Ubuntu16.04.3

Spark的配置模式

Spark有好几种模式:

  1. 本地调试版,就是专门用来调试代码的
  2. 伪分布式部署,其实没有集群,自己在PC上装好几个虚拟机,假装自己是大户,连起来玩
  3. 集群(集群也有好几种)

Windows上安装本地版Spark

配置JDK

通常提到JAVA都会分JDK和JRE。

JDK是JAVA的开发者工具套件,包括JRE;JRE则是运行JAVA脚本程序所需要的虚拟机环境。

直接百度JDK,下载对应的版本,window是exe安装程序,没什么可说的。

有个小坑:1.8版本以前JDK安装完目录下都有一个JRE文件夹,但是最新发布的1.9版本将JRE里面的Classes全都整合模块化了,于是JRE路径消失……

之前我装了1.9,再部署Spark的时候老是说 xxx找不到,不知道是不是这个原因,反正后来我用了1.8的JDK,部署好后也没有精力再去验证。

准备Spark和Hadoop

各路说法说spark本地版不需要弄Hadoop的。。。

安装spark后在目录里能发现一个叫Jars的文件夹,目测里面就是Spark依赖的Hadoop相关文件 但是 不全 ,启动后会报警,各种 找不到对象 ,强迫症简直不能忍。而且做伪分布的话还是需要一个完整的hadoop的,咸鱼也要有梦想。

去官网上下载spark的预编译包,然后注意名字with-hadoop-xx注明了对应的hadoop的版本,再到hadoop官网上下载一个相对应的版本。(不给传送门了自己找吧)

然后这两个都是压缩包,腾个地方解压就行了。

winutils

传送门 这个东西用来解决权限问题,windows下可能运行spark可能发生“空指针”问题(虽然我并不懂这啥意思)

下载 winutils.exe 放到.\hadoop\bin\目录下面,然后在这个目录下使用powershell运行。

winutils.exe chmod 777 /tmp/hive 

配置环境变量

主要考虑两个东西:Path和环境变量

折腾了好几天自己对这些东西有点见解,不知道对不对

我们这边要用调用到的程序,都要把所在路径配到Path里面去,另外还得新建几个环境变量

  • Java:window里JAVA好像会自己配置Path(如果没有就做到...\Jdk\bin这一层,...\jdk\jre也扔进去),但另需设置两个环境变量(系统变量页,新建变量):JAVA_HOME=.\jdk(JAVA安装路径);CLASSPATH=.\jdk\lib(JAVA类文件)

  • Spark: 首先把 .\spark\bin扔到Path里,然后SPARK_HOME=.\spark

  • Hadoop: Path-.\hadoop\bin;新建HADOOP_HOME=.\hadoop

记住环境变量就按这个名字命名。按理说都配到Path里小电脑应该啥都能找到了,但是这几个HOME其实是Spark要访问的。环境变量说白了也就是所有程序都能访问的全局变量。

配置文件

.\spark\conf目录下,里面有好几个.template结尾的文件,备份一份,然后把末尾.template删掉

主要是 spark-env.sh spark-default.conf slaves

测试

打开cmd,输入spark-shell

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

出现这两句的话就说明成功啦。

虚拟机Linux的配置方法

解压

菜鸡之前摸都没摸过linux,第一次入门,关于虚拟机安装linux过几天再写。为了完整性写一下linux安装spark

首先必须要的 JDK1.8(linux的也是压缩包),Hadoop,Spark都备好 (要用pyspark的话linux自带python,喜欢用anaconda也可以下一个,安装方法都差不多)

然后通过共享文件夹传到虚拟机里面,找个地方解压好,建议在home目录下找个地就好了,不然还有权限问题有点纠结。

linux解压通过命令

tar -zxvf 路径/文件名 -C 目标路径

得到三个目录。

感觉linux安装东西就是 解压安装包-配置环境变量

环境变量

环境变量写到这里:ctrl+alt+t唤出shell

sudo vi /etc/profile

或者

sudo vim /etc/profile

这些命令的含义:

  • sudo-管理员权限操作;
  • vi/vim-一个文本编辑器(如果没有vim可以通过 sudo apt-get install vim 安装)
  • vi默认只读模式打开,可以用上下左右移动光标,移到需编辑位置按i启动编辑模式,修改完用esc返回只读模式;
  • 全部改完后,在只读模式下输入:q退出,:q!不保存强制退出,:w保存,’:wq’保存并退出。

环境变量配置

配置如上图

如果安装了Anaconda,要把Anaconda的bin目录连在PATH之前,优先级比较高

配置文件

进入到./spark/conf目录里面

复制文件用

cp (路径/)文件名 新名

然后用 vi spark-env.sh

仔细看注释的字,是些配置说明

这边本地版写上

export SPARK_LOCAL_IP=虚拟机ip
export SPARK_WORKING_MEMORY=2G

测试运行

唤出shell 也要出

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

才算安装好

本文遵守 CC-BY-NC-4.0 许可协议。

Creative Commons License

欢迎转载,转载需注明出处,且禁止用于商业目的。