因为硬件原因,博文一直没有更新,非常抱歉,最近去买了一个配置比较好的笔记本,尝试了下spark在linux下环境的搭建,利用一个星期的业余时间,终于是搭建成功了,特此记下了,也是给大家一些借鉴,如有问题,可以留言,或者邮箱(xlydq1206@sina.com)。好,下面切入正题啦~
首先,我的笔记本是双核四线程的,大环境是mac下同下用平行桌面搭建了四个虚拟机(win7+3个centos的linux系统),亲测可以正常同时使用(之前很长一段时间被网上的一些言论误导为N核CPU就最多能支持N个虚拟机同时工作,亲测只要内存和CPU使用率不高就可以继续加虚拟机)。
还是惯例,先列举下本文要讲的事情:
目录
1、centos安装
2、jdk安装
3、openssh安装
4、scala安装
5、spark安装
6、集群配置
1、centos安装
这个在VM或者Parallel Desktop上都很容易,基本是傻瓜式的,可参考
Mac OS X 开发环境搭建之利用 Parallel Desktop 安装 CentOS 7
2、jdk安装
spark是依赖于JVM的,所以它也算是跨平台的。jdk的安装就很常规了,一般是下载文件、加入环境变量和是环境变量生效——
下载文件就不说了,去官网或者参照上一篇博客
添加环境变量:
vim ~/.bashrc
export JAVA_HOME = /usr/lib/java/jdk1.8.0 #jdk安装路径
export PATH=$JAVA_HOME/bin:$PATH
退出编辑后 source ~/.bashrc
3、openssh安装(非常重要)
先一句话说下这一步的重要性吧,集群之间的无密连接靠的就是SSH协议(外壳协议)。并且还需要用root用户操作(su root),否则在测试spark集群的时候会出现什么情况呢,来,看下图
即最后连接的时候都被拒绝了(spark2是spark2,spark1/spark3是slaves),使用root可是统一管理集群。下面来讲下步骤。
首先需要更换下主机名:
hostname spark1
vi /etc/sysconfig/network
HOSTNAME=spark1
vi /etc/hosts
192.168.1.105 spark1
192.168.1.107 spark2
192.168.1.108 spark3
192.168.1.105 localhost
参考博客设置主机名
a、查看ssh协议的安装情况:rpm -qa | grep ssh
b、启动ssh协议:service sshd restart
c、设置免密登陆:ssh-keygen -t rsa -p ""
(ssh-keygen是连着的,这个易犯错~)
这样在~/.ssh目录下会生成两个文件:id_rsa,id_rsa.pub
d、追加公钥:cat ~/.ssh/id_rsa.pub>>~/.ssh/authorized_keys
e、测试:ssh localhost
f、在spark1和spark3上登陆root用户后重复执行a~d
g、将各自公钥传到spark2上:
在spark2上新建目录:
mkdir ~/.ssh/id_rsa.pub.spark1
mkdir ~/.ssh/id_rsa.pub.spark3
scp id_rsa.pub root@spark2: ~/.ssh/id_rsa.pub.spark1 --spark1上执行
scp id_rsa.pub root@spark2: ~/.ssh/id_rsa.pub.spark3 --spark3上执行
到spark2上查看相应的文件是否已经传过来了
h、spark2上追加spark1和spark3的公钥
cat ~/.ssh、id_rsa.pub.spark1/id_rsa.pub>>~/.ssh/authorized_keys
cat ~/.ssh、id_rsa.pub.spark3/id_rsa.pub>>~/.ssh/authorized_keys
至此,spark2上的authorized_keys包含了三台机器交互的公钥信息了,我们需要复制它到spark1和spark3
scp authorized_keys root@spark1: ~/.ssh/authorized_keys
scp authorized_keys root@spark3: ~/.ssh/authorized_keys
比如,我用spark1登陆后,利用ssh登陆spark3(并没有输入密码),成功后会有如下提示:
4、scala安装
这个比较简单,下载(Wget http://downloads.typesafe.com/scala/2.11.6/scala-2.11.6.tgz?_ga=1.41078626.1125902863.1429259252)
解压,设置环境变量,ok,不会的可以参照scala安装 centos
将相关文件(环境变量配置文件和scala文件)用scp复制到spark1和spark3中
5、spark安装
首先还是去官网上下载、解压,最好下载包含hadoop的版本,因为spark虽然是基于内存计算的,但是还是会用到hadoop的hdfs机制,如果是单独的spark版本,那么还需要单独去配置与之匹配的hadoop版本(这个在很多博客都有讲,但是我没有亲自搭建过,具体的博文行不行靠大家自己去测试才行咯)
我下载的是目前的最新版spark-2.0.2-bin-hadoop2.7,当然除去了spark3.0 beta版。
a、配置环境变量
[root@spark2 ~]$ vi ~/.bashrc
export SCALA_HOME = ~/Desktop/soft/scala-2.11.6
export SPARK_HOME = ~/Desktop/soft/spark-2.0.2-bin-hadoop2.7
export PATH = ${SCALA_HOME}/bin:${SPARK_HOME}/bin:$PATH
[root@spark2 soft]$ scp ~/.bashrc root@spark1:~/.bashrc
.bashrc 100% 403 0.4KB/s 00:00
[root@spark2 soft]$ scp ~/.bashrc root@spark3:~/.bashrc
.bashrc 100% 403 0.4KB/s 00:00
[root@spark2 soft]$
scp -r spark-2.0.2-bin-hadoop2.7 root@spark3:~/Desktop/soft
scp -r spark-2.0.2-bin-hadoop2.7 root@spark1:~/Desktop/soft
至此,spark就配置完成了
6、集群配置
要想启动集群,还需要配置一些spark下的文件
a、cp spark-env.sh.template spark-env.sh
b、vi spark-env.sh
添加
export SCALA_HOME=/usr/local/scala/scala-2.10.4
export JAVA_HOME=/usr/local/jdk/jdk1.8.0_74
export HADOOP_HOME=/usr/local/hadoop
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
#export HADOOP_CONF_DIR=/usr/local/spark/spark-2.0.2-bin-hadoop2.6/conf
export SPARK_MASTER_IP=192.168.1.107
export SPARK_LOCAL_DIRS=/usr/local/spark/spark-2.0.2-bin-hadoop2.6
export SPARK_DRIVER_MEMORY=1G
export master=spark://192.168.1.107:7070
c、vi slaves
spark1
spark3
d、进入到spark的sbin目录下,执行./start-all.sh
启动集群
e、在webUI上访问spark2:8080,即使在没有联网的情况下应该是可以访问的,类似下图(单机版的访问结果):
如果将spark的bin目录设置到环境变量中(如 ~/.bashrc),则可以在任意位置输入 spark-shell
来启动集群,会有spark的字样显示
=============后话====================
另外,也可以顺便把IDEA也安装好,方便后续scala的开发
IDEA安装的参考网址-《Spark入门实战系列–3.Spark编程模型(下)–IDEA搭建及实》
不建议大家使用eclipse开发spark程序和阅读源代码,推荐使用Intellij IDEA
● 下载IDEA14.0.5:
http://confluence.jetbrains.com/display/IntelliJIDEA/Previous+IntelliJ+IDEA+Releases
http://download.jetbrains.8686c.com/idea/ideaIU-14.0.5.tar.gz
https://download.jetbrains.8686c.com/idea/ideaIU-2016.2.5-no-jdk.tar.gz(只支持JDK1.8以上)
解压,进入到解压后文件夹的bin目录下执行
tar -zxvf ideaIU-14.tar.gz -C /usr/intellijIDEA
export IDEA_JDK=/usr/local/java/jdk1.8.0
./idea.sh
key:IDEA
value:61156-YRN2M-5MNCN-NZ8D2-7B4EW-U12L4
安装Scala插件
http://www.linuxdiyf.com/linux/19143.html
下载地址:http://plugins.jetbrains.com/files/1347/19005/scala-intellij-bin-1.4.zip
环境搭建好了,下一步是不是该干点啥了呢^V^