大数据hadoop之 四十六.Spark基于YARN的部署方案
本文于2086天之前发表,文中内容可能已经过时。
1. 软件环境
1 | Ubuntu 14.04.1 LTS (GNU/Linux 3.13.0-32-generic x86_64) |
2. 环境准备
修改主机名
我们将搭建1个Master,2个Slave的集群方案。首先修改主机名nano /etc/hostname
,在Master上修改为Master,其中一个Slave上修改为Slave1,另一个同理。
配置hosts
在每台主机上修改host文件
1 | nano /etc/hosts |
配置之后ping一下用户名看是否生效
1 | ping Slave1 |
3. SSH 免密码登录
安装Openssh server
1 | sudo apt-get install openssh-server |
在所有机器上都生成私钥和公钥
1 | ssh-keygen -t rsa |
需要让机器间都能相互访问,就把每个机子上的id_rsa.pub发给Master节点,传输公钥可以用scp来传输。
1 | scp ~/.ssh/id_rsa.pub spark@Master:~/.ssh/id_rsa.pub.Slave1 |
在Master上,将所有公钥加到用于认证的公钥文件authorized_keys中
1 | cat ~/.ssh/id_rsa.pub* >> ~/.ssh/authorized_keys |
将公钥文件authorized_keys分发给每台Slave
1 | scp ~/.ssh/authorized_keys spark@Master:~/.ssh/ |
在每台机子上验证SSH无密码通信
1 | ssh Master |
如果登陆测试不成功,则可能需要修改文件authorized_keys的权限(权限的设置非常重要,因为不安全的设置安全设置,会让你不能使用RSA功能 )
1 | chmod 600 ~/.ssh/authorized_keys |
4. 安装 Java
从官网下载最新版 Java 就可以,Spark官方说明 Java 只要是6以上的版本都可以,我下的是 jdk-7u75-linux-x64.gz在~/workspace目录下直接解压
1 | tar -zxvf jdk-7u75-linux-x64.gz |
修改环境变量sudo vi /etc/profile,添加下列内容,注意将home路径替换成你的:
1 | export JAVA_HOME=/usr/lib/jvm/ |
然后使环境变量生效,并验证 Java 是否安装成功
1 | source /etc/profile #生效环境变量 |
5. 安装 Scala
Spark官方要求 Scala 版本为 2.10.x,注意不要下错版本,我这里下了 2.10.6
1 | tar -zxvf scala-2.10.4.tgz |
再次修改环境变量sudo vi /etc/profile,添加以下内容:
1 | export SCALA_HOME=/usr/lib/scala |
同样的方法使环境变量生效,并验证 scala 是否安装成功
1 | source /etc/profile #生效环境变量 |
6. 安装配置 Hadoop YARN
此处参考以前的安装过程
7. Spark安装
下载解压进入官方下载地址下载最新版 Spark。我下载的是 spark-1.6.0-bin-hadoop2.6.tgz。
1 | tar -zxvf spark-1.6.0-bin-hadoop2.6.tgz |
配置 Spark
1 | chmod -R 775 /usr/local/spark |
注:在设置Worker进程的CPU个数和内存大小,要注意机器的实际硬件条件,如果配置的超过当前Worker节点的硬件条件,Worker进程会启动失败。
nano Slaves在slaves文件下填上Slave主机名:
1 | Slave1 |
将配置好的spark-1.6.0文件夹分发给所有Slaves吧
启动Spark
1 | sbin/start-all.sh |
验证 Spark 是否安装成功
用jps检查,在 master 上应该有以下几个进程:
1 | $ jps |
在 slave 上应该有以下几个进程:
1 | $jps |
8. 运行示例
本地模式两线程运行
1 | ./bin/run-example SparkPi 10 --master local[2] |
Spark Standalone 集群模式运行
1 | ./spark-submit --class org.apache.spark.examples.SparkPi --master spark://Master:7077 /usr/local/spark/lib/spark-examples-1.6.0-hadoop2.6.0.jar 100 |
Spark on YARN 集群上 yarn-cluster 模式运行
1 | ./spark-submit --class org.apache.spark.examples.SparkPi --master yarn-cluster /usr/local/spark/lib/spark-examples-1.6.0-hadoop2.6.0.jar 10 |
注意 Spark on YARN 支持两种运行模式,分别为yarn-cluster和yarn-client,具体的区别可以看这篇博文,从广义上讲,yarn-cluster适用于生产环境;而yarn-client适用于交互和调试,也就是希望快速地看到application的输出。