Mac 系统 搭建Spark数据挖掘平台(含Scala)

近期该做一个数据挖掘课程的大作业,要求搭建Spark平台实现算法,自己搭建的时候踩了一些坑,同时也感觉所找到的一些博客写的不太详细或是有些容易产生误导的地方,决定自己写一篇Mac系统下Spark软件搭建的博文,与大家交流分享下。

由于写技术分享博客对我来说是“大姑娘上花轿--头一回”如果有写的有误或是表述不清的地方,还请谅解,并在评论区为我留下宝贵意见,感激万分!

下面正文开始:

Mac系统搭建Spark还是比较简单的(在看完我实验室同学搭建win+spark后尤其能体会),本文主要分为4部分的内容:

1.安装JDK
2.安装Scala
3.安装Spark
4.测试运行


---------------------------------------------------------------------------------------------



JDK、Scala、Spark这三者是依次依赖的关系,Spark是使用Scala语言开发的(可在搭建好的交互界面直接用Scala语言写算法),Scala语言必须运行与JVM上,所以,Scala依赖于Java环境。


1.安装JDK

1.1下载安装包

进入官网http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html,点击 Accept License Agreement,然后就可以下载Mac OSX 版本,后缀为.dmg格式。

数据挖掘建模平台 开源_Spark

1.2安装JDK

下载完成后,将文件移动到你想存放的地方,双击安装即可。

安装完成后打开终端(terminal),输入java -version,查看:

MBP:~ zhangweixun$ java -version
java version "1.8.0_151"
Java(TM) SE Runtime Environment (build 1.8.0_151-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.151-b12, mixed mode)

显示为上面的结果,就安装成功了。

2.安装Scala

这一步有两种办法,大家自行选择,如果提前装过homebrew的肯定是方法一方便。

方法一:(也是我用的方法)homebrew安装

(关于homebrew的安装,可以查看官网链接https://brew.sh,或者看这篇博客(csdn上找的)。

Homebrew是一个包管理器,用于在Mac上安装一些OS X没有的UNIX工具,它将这些工具统统安装到了 /usr/local/Cellar 目录中,并在 /usr/local/bin 中创建符号链接。很好用很强大,强烈建议安装。

安装完homebrew之后就很简答了,直接一行 brew install scala 即可。

MBP:~ zhangweixun$ brew install scala

安装完成后在终端输入scala,效果如下:

MBP:~ zhangweixun$ scala
Welcome to Scala 2.12.6 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_151).
Type in expressions for evaluation. Or try :help.

scala>


安装完成。

方法二:安装包安装

首先下载安装包,官网链接https://www.scala-lang.org/download/

数据挖掘建模平台 开源_数据挖掘建模平台 开源_02

将Scala压缩包scala-2.12.6.tgz解压缩到/usr/local/Cellar文件夹下面,生成scala-2.12.6文件夹

然后配置环境变量

使用sudo su进入管理员权限,配置/etc/bashrc文件:

MBP:~ zhangweixun$ sudo su
Password:
sh-3.2# vim /etc/bashrc
在打开的文件中,加入如下内容:
export PATH="$PATH:/usr/local/Cellar/scala-2.12.6/bin" 
 然后source /etc/bashrc 即可。 
安装完成后在终端输入scala,效果如下:
MBP:~ zhangweixun$ scala
Welcome to Scala 2.12.6 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_151).
Type in expressions for evaluation. Or try :help.


scala> 

安装完成。

3.安装Spark

3.1下载安装包

官网下载链接http://spark.apache.org/downloads.html,我选择的版本如下spark-2.1.1-bin-hadoop2.7.tgz

数据挖掘建模平台 开源_Mac_03

3.2解压安装包到所需路径

解压缩压缩文件到文件夹/usr/local/Cellar,生成spark-2.1.1-bin-hadoop2.7文件夹。


tar -zxvf spark-2.1.1-bin-hadoop2.7.tgz


3.3配置环境变量

使用sudo su进入管理员权限,配置/etc/bashrc文件,添加如下内容:

export PATH="$PATH:/usr/local/Cellar/spark-2.0.1-bin-hadoop2.7/bin" 
 
3.4进行本机SSH配置,在主目录下输入如下命令:
 
ssh-keygen –t rsa –P ""

然后在左上角苹果图标: 系统偏好设置->共享 选中 远程登录


3.5启动Spark

首先cd到,Spark目录中的sbin子目录,运行如下脚本启动Spark:


./start-all.sh
 出现 
org.apache.spark.deploy.master.Master running as process 38613.  Stop it first.
Password:
localhost: starting org.apache.spark.deploy.worker.Worker, logging to /Users/zhangweixun/postgraduate/Big_Data/spark-2.1.1-bin-hadoop2.7/logs/spark-zhangweixun-org.apache.spark.deploy.worker.Worker-1-MBP.out


然后,查看是否启动,输入jps:


MBP:sbin zhangweixun$ jps
46802 Jps
46691 MainGenericRunner
38613 Master
46791 Worker
43640 SparkSubmit


显示这样就没问题了。


4.测试运行

cd 到Spark目录下的bin子目录运行如下脚本启动Spark shell:

MBP:bin zhangweixun$ ./spark-shell
Using Spark's default log4j profile: org/apache/spark/log4j-defaults.properties
Setting default log level to "WARN".
To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel).
18/06/11 16:19:38 WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
18/06/11 16:19:38 WARN Utils: Service 'SparkUI' could not bind on port 4040. Attempting port 4041.
18/06/11 16:19:43 WARN ObjectStore: Failed to get database global_temp, returning NoSuchObjectException
Spark context Web UI available at http://10.162.210.81:4041
Spark context available as 'sc' (master = local[*], app id = local-1528705178927).
Spark session available as 'spark'.
Welcome to
      ____              __
     / __/__  ___ _____/ /__
    _\ \/ _ \/ _ `/ __/  '_/
   /___/ .__/\_,_/_/ /_/\_\   version 2.1.1
      /_/
         
Using Scala version 2.11.8 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_151)
Type in expressions to have them evaluated.
Type :help for more information.

scala> 

看到如上界面,恭喜,成功啦,给自己鼓鼓掌!

还有一个点就是,现在如果在终端中输入python,然后import pyspark是无法正常import的,想要正常import,需要做如下操作:

使用sudo su进入管理员权限,配置/etc/bashrc文件:

MBP:~ zhangweixun$ sudo su
Password:
sh-3.2# vim /etc/bashrc
在打开的文件中,加入如下内容:
export SPARK_HOME=/usr/local/Cellar/spark-2.0.1-bin-hadoop2.7
export PYTHONPATH=${SPARK_HOME}/python:${SPARK_HOME}/python/lib/py4j-0.10.4-src.zip:${PYTHONPATH}



然后source  /etc/bashrc,尝试import pyspark 
MBP:~ zhangweixun$ python
Python 2.7.14 |Anaconda custom (64-bit)| (default, Oct  5 2017, 02:28:52) 
[GCC 4.2.1 Compatible Clang 4.0.1 (tags/RELEASE_401/final)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import pyspark
>>>

没有报错,成功啦!恭喜下自己!

注意一:在使用homebrew的时候,会遇到updating很久的情况,其实不需要每次都自动更新,可以在环境变量中加入

export HOMEBREW_NO_AUTO_UPDATE=true

这样homebrew就不会每次都自动更新了,需要的时候可以手动更新。


注意二:

关于修改环境变量,很多博文都直接修改/etc/profile,这样其实不太好,具体如下:

Mac配置变量环境的地方有

1./etc/profile(建议不修改这个文件)

全局(公有)配置,不管是哪个用户,登录时都会读取该文件。

2./etc/bashrc (一般在这个文件中添加系统级环境变量)

全局(公有)配置,bash shell执行时,不管是何种方式,都会读取此文件。

3.~/.bash_profile (一般在这个文件中添加用户级环境变量)

每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次!