前言
本文是《Spark集群配置》的第一篇。主要讲解安装Spark
前系统的基础配置。其他的几篇传送门:
. Spark集群配置(2):安装Hadoop
. Spark集群配置(3):安装Spark
. Spark集群配置(4):其他填坑杂项
本文要求读者有一定的Linux
命令基础,最好有一个或多个比较好的机器,可以跟着一步一步安装。下面我们开始正文。
安装Linux
本文使用的Ubuntu-16.10-x64
版本的Linux。
这里需要说一下版本的选择,我个人的感觉是,最好选择老一点稳定一点的版本。我之前使用过Ubuntu-16.04
版本的,结果蓝屏了好几次,感觉是很不稳定。之所以选择16.10
,主要是想体验下新版本,不过还好,目前还没啥问题。
需要提醒的是,安装时要选择安装英文版,主要原因是英文版的文件目录中不会出现汉字,可以为后续操作省去很多麻烦。如果英文实在不好,也要先安装为英文版,安装完成后再选择系统语言为中文版。此外在安装过程中,会要求你设置机器的名称和创建新用户。我的建议是,选定一台机器为主节点,命名为master
,其他为从节点,依次命名为slave1
、slave2
、slave3
等。然后所有机器创建的用户名一定要相同,比如都为spark,密码为了方便记住,也尽量设为一致的。
配置root用户密码
安装完毕后,打开终端,执行命令sudo passwd
,会要求你先输入当前用户的密码,然后输入root
用户的密码并重复即可。
安装Vim
Vim
是Linux上使用终端修改文件的工具。一般情况下,我们对于有界面的机器可以使用记事本之内的编辑器直接编辑,但对于部分权限限制文件、系统隐藏文件和远程文件,编辑器则无能为力,一般是因为权限不够或者无法显示界面。因此需要使用Vim。想使用Linux,则最好熟练使用Vim,其道理类似于想使用互联网,则最好有个浏览器一样。
保持机器联网,在所有机器上执行执行:
安装完成后可以通过这里学习Vim的命令《Vim配置及插件安装管理》
配置hosts
首先确保所有机器在同一局域网络中,并且能ping通。在每台机器上执行ifconfig命令,获取每台机器的IP地址。
使用终端命令sudo vim /etc/hosts
打开hosts
文件。hosts
件是本地的DNS路由表,使用vim
命令来修改。
假设各个机器的IP分别为
以修改master机器为例:保留127.0.0.1 localhost
,并将hosts文件中127.0.0.1 master
修改为 192.168.1.10 master
,并在文件尾添加所有剩下机器的信息比如我这里的内容如下:
|
|
其他机器也同理修改。
配置ssh无密码登录
本部分请参考《Linux下SSH免密登录设置》
配置ssh的要求是,主节点(master
)可以免密登录所有从节点(slave
)即可。从节点无需访问主节点和其他从节点。
安装JDK
JDK所有机器都安装。在下载JDK
时,要看清楚自己系统的位数,下载对应的版本。可以去JAVA官网下载,要求是1.7及更新版本。完成后依次执行以下命令:
然后修改环境变量。环境变量的修改方法有很多种,最推荐的是修改系统环境变量/etc/profile
,这样在使用各种用户身份时可以免去很多麻烦。执行命令sudo vim /etc/profile
,将以下内容添加到文件结尾处并保存:
执行source /etc/profile
重新加载环境变量,并执行java -version
即可查看JDK是否安装好。
安装Scala
同安装JDK
的方法相同,去Scala
官网下载合适版本,执行:
然后添加以下内容到/etc/profile
:
执行source /etc/profile
重新加载环境变量,并执行scala -version
即可查看scala是否安装好。
安装Anaconda
Anaconda
是一个集成的Python
安装环境,是专门为科学计算和数据分析制作的。安装它的原因是,许多需要用到的科学计算库之间有着复杂的依赖关系,而且很多是不同版本的依赖,如果单纯需要使用时才安装的话,各种安装错误绝对会把人逼疯。因此强烈推荐安装。
需要注意的是,不同版本的Anaconda
包含了不同版本的Python
,最新版的Anaconda3-4.3.1-Linux-x86.sh
对应的是最新版的Python3.6
,然而最新版本的Spark
尚不支持Python3.6
,会导致运行错误。
因此我在这里强烈推荐使用Anaconda3-4.2.0-Linux.sh
,由于安装包较大,推荐去清华大学镜像站下载。下载时要选择正确的位数(32位或者64位)。
下载完成后,执行命令开始安装程序。
安装时会询问你安装在什么位置。为了方便后面的配置,请选择与之前一致的目录,即要输入安装路径为 /usr/anaconda3
,然后一路回车。其中有一项是问你是否添加到环境变量,选择不添加(稍后我们手动添加)。
安装完毕后,将以下内容添加到环境变量:
执行source /etc/profile
重新加载环境变量,并执行python -V
,如果提示类似为Python 3.5.2 :: Anaconda 4.2.0 (64-bit)
即为安装成功。
如果显示的是系统自带的Python版本,可以按照这篇文章《Ubuntu更改默认python版本的两种方法》修改系统默认的Python
版本。需要注意的是,千万不要卸载系统自带的Python
,因为很多系统工具都是依赖于系统自带的Python
,一旦卸载,很可能会导致系统崩溃。
配置Jupyter Notebook远程访问
Jupyter Notebook
的前身是IPython Notebook
,是一个将命令行搬到浏览器中的工具。在浏览器中执行命令行的好处是可以方便复制,可以查看历史,可以保存命令记录等等,反正是好处多多。而且在配置完集群之后,如果每次要执行程序都要到集群中写代码无疑是很不方便的,而使用Jupyter
可以很方便的远程上传、修改、执行文件。Jupyter
在上一步安装Anaconda
时会自动被安装了。这里我们只需要配置一下Jupyter
就可以了。需要注意的是,这里只用配置master
机器的,从节点不需要配置。
首先进入Python
命令行,执行:
上面的执行中会要求你输入一个密码,这是你之后远程访问Jupyter时的密码,以防止别人访问你的机器。输入密码后你会获得一个很长的字符串,这是一个加盐的 sha1加密
字符串,记录下这个字符串(单引号内部的全部内容)。然后退出Python。
在spark用户下执行jupyter notebook --generate-config
,该命令是用来生成Jupyter的配置文件。
打开该文件vim /home/spark/.jupyter/jupyter_notebook_config.py
,修改为以下内容:
修改后保存,此时终端中执行Shell命令jupyter notebook
,就可以发现启动了Jupyter,其中有条提示为:
换一台同局域网内的电脑打开浏览器,访问http://master:8888
就可进入Jupyter
登录页面了,输入你自己设置的密码即可进入。
关于如何使用Jupyter
,可以参见《Jupyter Notebook各种使用方法记录》,这里不再啰嗦。
到此基础配置部分就结束了,如需继续进行,可以参见Spark集群配置(2):安装Hadoop