准备工作
linux系统默认情况下,防火墙软件都是开启的,几乎所有的端口都是不对外开发的,spark集群内的各个节点间的通信需要用到相关的端口,如master节点的--webui-port:8080,worker节点的--webui-port:8081,master节点与worker节点间的通信需要用6066,7077端口,因此需要在防火墙中设置相关规则,开放这些端口,现以CentOS系统为例,方法如下:
#在CentOS上永久打开一个新端口(如TCP/8080)
firewall-cmd --zone=public --add-port=8080/tcp --permanent
#重启防火墙,使上述更改生效
firewall-cmd --reload
一、配置主机名和映射
以三台机器为例来搭建机器
1、修改主机名
修改/etc/sysconfig/network文件,将主机名改为spark-master,操作系统启动的时候,会读取该文件并设置主机名。因此,修改后不会立即生效。只有当系统重启后,主机名便会生效。
在所有主机上执行上面两步,将三台机器的主机名分别改为spark-master,tomas122,tomas123。
2、映射
Spark通过主机名来进行互相访问,通过修改/etc/hosts文件可配置本地主机名映射关系,在hosts文件中添加计
算机的名称和IP的对应关系,如在本机中添加spark-master的主机(假设IP为15.62.32.109),在末尾添加内容为:
15.62.32.109 spark-master
算机的名称和IP的对应关系,如在本机中添加spark-master的主机(假设IP为15.62.32.109),在末尾添加内容为:
15.62.32.109 spark-master
所有主机都在/etc/hosts添加:
15.62.32.109 spark-master
15.62.32.122 tomas122
15.62.32.123 tomas123
15.62.32.122 tomas122
15.62.32.123 tomas123
二、配置SSH无密码登录
master与worker节点之间需要配置SSH无密码登录1.使用ssh-keygen生成私钥和公钥
命令如下:
ssh-keygen -t rsa
然后一直按回车键即可。
例子:
fdipzone@ubuntu:~$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/fdipzone/.ssh/id_rsa): 这里输入要生成的文件名
Enter passphrase (empty for no passphrase): 这里输入密码
Enter same passphrase again: 这里重复输入密码
Your identification has been saved in /home/fdipzone/.ssh/id_rsa.
Your public key has been saved in /home/fdipzone/.ssh/id_rsa.pub.
The key fingerprint is:
f2:76:c3:6b:26:10:14:fc:43:e0:0c:4d:51:c9:a2:b0 fdipzone@ubuntu
The key's randomart image is:
+--[ RSA 2048]----+
| .+=*.. |
| . += + |
| o oo+ |
| E . . o |
| ..S. |
| .o . |
| .o + |
| ...oo |
| +. |
+-----------------+
参数 -t rsa 表示使用rsa算法进行加密,执行后,会在/home/当前用户/.ssh目录下找到id_rsa(私钥)和id_rsa.pub(公钥)
也可以使用 dsa 加密算法进行加密,命令如下:
ssh-keygen -t dsa
2.需要让机器间都能相互访问,就把每个机子上的id_rsa.pub发给spark-master节点,传输公钥可以用scp来传输
scp root@15.62.32.122:/root/.ssh/id_rsa.pub ~/.ssh/id_rsa.pub.
scp root@15.62.32.123:/root/.ssh/id_rsa.pub ~/.ssh/id_rsa.pub.tomas123
3.在spark-master上,将所有公钥加到用于认证的公钥文件authorized_keys中
cat ~/.ssh/id_rsa.pub* >> ~/.ssh/authorized_keys
4.将公钥文件authorized_keys分发给tomas122、tomas123节点scp root@10.62.32.109:/root/.ssh/authorized_keys ~/.ssh/
5.在每台机子上验证SSH无密码登录ssh tomas122
ssh tomas123
注:.ssh 文件夹的权限必须为700,authorized_keys文件权限必须为600或644
三、安装spark
在Spark集群的每个节点上都安装spark,详细步骤参考:http://blog.csdn.net/wangkai_123456/article/details/53860626
1.向环境变量添加spark homeexport SPARK_HOME=/usr/local/spark
export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin
2.配置./conf/slaves
首先将slaves.template拷贝一份
cp slaves.template slaves
修改slaves文件
# A Spark Worker will be started on each of the machines listed below.
tomas122
tomas123
3.配置./conf/spark-env.sh
同样将spark-env.sh.template拷贝一份
cp spark-env.sh.template spark-env.sh
在spark-env.sh最后加入以下几行
export JAVA_HOME=/usr/java/jdk1.8.0_111
export SCALA_HOME=/usr/local/scala
export SPARK_MASTER_HOST=spark-master
export SPARK_WORKER_MEMORY=25g
export SPARK_WORKER_CORES=34
最后将spark文件夹拷贝到tomas122和tomas123结点即可。
scp -r root@10.62.32.109:/usr/local/spark /usr/local/spark
四、手动启动集群
1、通过如下命令在任一节点上启动一个standalone master server:
./sbin/start-all.sh
2、