一、完全分布式安装
前提: 已安装scala(2.11.8)、hadoop(2.7.7)
1、配置到环境变量:
vim /etc/profile(这里是修改的root的环境变量配置,一般修改~/.bash_profile个人用户下的环境变量比较稳妥)
在配置文件末尾追加上如下内容:
export SPARK_HOME=/home/hadoop/apps/spark
export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin
然后source /etc/profile
2、解压spark-2.2.2-bin-hadoop2.7
cd /home/hadoop/apps
tar -zxvf spark-2.2.2-bin-hadoop2.7.tgz
lnspark-2.2.2-bin-hadoop2.7 spark(配置软链,要不spark的包名太长)
3、修改配置文件
3.1修改spark-env.sh
cd /home/hadoop/apps/spark/conf
mv spark-env.sh.template spark-env.sh
vi spark-env.sh
添加如下内容:
#java的home
export JAVA_HOME=/opt/jdk1.8.0_73
#scala的home
export SCALA_HOME=/home/hadoop/apps/scala-2.11.8
#主节点的master的ip地址或者hostname
export SPARK_MASTER_HOST=hadoop01
#7077的作业就相当于hdfs中9000,切忌不是50070--->8080
export SPARK_MASTER_PORT=7077
#从节点中每一个worker的cpu core的个数
export SPARK_WORKER_CORES=1
#在slaves配置中配置的每一台机器上面启动的worker的个数
export SPARK_WORKER_INSTANCES=1
#每一个worker的内存资源,配置不要超过当前机器的内存资源
#建议不要低于500m
export SPARK_WORKER_MEMORY=615m
#hadoop的conf目录
export HADOOP_CONF_DIR=/home/hadoop/apps/hadoop/etc/hadoop
3.2修改slaves配置文件
mv slaves.template slaves
给slaves文件添加两行如下记录(一定要把localhost删掉)
hadoop01
hadoop02
hadoop03
3.3部署到hadoop02和hadoop03这两台机器上(这两台机器需要提前安装scala)
scp -r /home/hadoop/apps/spark-2.2.2-bin-hadoop2.7 hadoop@hadoop02:/home/hadoop/apps/
scp -r /home/hadoop/apps/spark-2.2.2-bin-hadoop2.7 hadoop@hadoop03:/home/hadoop/apps/
在hadoop02和hadoop03上加载好环境变量,需要source生效
scp /etc/profile hadoop@hadoop02:/etc/profile
scp /etc/profile hadoop@hadoop03:/etc/profile
4、启动
为了避免和hadoop中的start/stop-all.sh和start-all.sh脚本发生冲突,将spark/sbin/start/stop-all.sh和start-all.sh重命名
mv start-all.sh start-spark.sh
mv stop-all.sh stop-spark.sh
4.1正式启动
start-spark.sh
会在我们配置的主节点master上启动一个进程Master
会在我们配置的从节点hadoop02上启动一个进程Worker
会在我们配置的从节点hadoop03上启动一个进程Worker
4.2验证
启动spark-shell
spark-shell
启动成功就行
或者:
网页访问
master的host:8080
说明:
8080–>spark集群的访问端口,类似于hadoop中的50070和8080的综合
4040–>sparkUI的访问地址
7077–>hadoop中的9000端口
二、基于Zookeeper的HA的配置
最好在集群停止的时候来做!!!
1、注释掉spark-env.sh中两行内容
#export SPARK_MASTER_IP=hadoop01
#export SPARK_MASTER_PORT=7077
2、在spark-env.sh中加一行内容
export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=hadoop01:2181,hadoop02:2181,hadoop03:2181 -Dspark.deploy.zookeeper.dir=/spark"
解释:
spark.deploy.recoveryMode设置成 ZOOKEEPER
spark.deploy.zookeeper.urlZooKeeper URL
spark.deploy.zookeeper.dir ZooKeeper 保存恢复状态的目录,缺省为 /spark
3、发送给其他节点
scp spark-env.sh hadoop@hadoop02:/home/hadoop/apps/spark/conf/spark-env.sh
scp spark-env.sh hadoop@hadoop03:/home/hadoop/apps/spark/conf/spark-env.sh
4、重启集群(此时需要把集群zookeeper启动起来)
在任何一台spark节点上启动start-spark.sh
手动在集群中其他从节点上再启动master进程:start-master.sh,例如我们可以在hadoop02上
5、验证
通过浏览器方法 hadoop01:8080 /hadoop02:8080–>Status: STANDBY Status: ALIVE
验证HA,只需要手动停掉master上spark进程Master,等一会hadoop01上的进程Master状态会从STANDBY变成ALIVE