频道栏目
首页 > 网络 > 云计算 > 正文

Spark2.0.0集群部署教程

2017-12-16 11:03:36         来源:Liri  
收藏   我要投稿

1.引言

在前面的博客中介绍了Spark的伪分布安装,在本篇博客中将介绍一下Spark的集群部署,在本博客中Spark的调度采用Hadoop的Yarn平台,因此在安装Spark之前,需要先部署Hadoop的集群,因为我在安装Hadoop集群的时候,配置了HA的自动切换,因此也需要安装zookeeper集群。其次Spark是基于scala开发的,综上所述,在本博客中会搭建三个集群:

zookeeper集群 hadoop集群 spark集群

在本博客中安装环境为:

操作系统为:Centos6.7 jdk的版本为:1.7 jdk的安装路径为:/usr/local/jdk hadoop的版本为:2.6.1 hadoop的安装路径为:/usr/local/hadoop zookeeper的版本为:3.4.9 zookeeper的安装路径为:/usr/local/zookeeper scala的版本为:2.11.8 scala的安装路径为:/usr/local/scala spark的版本为:2.0.0 spark的安装路径为:/usr/local/spark 使用root用户进行集群搭建

接下来我将按照下表进行搭建集群环境:

HOST名称 ip地址 运行的进程
hadoop1 192.168.159.130 NameNode,ResourceManger,JournalNode,QuorumPeerMain,DFSZKFailoverController,Master
hadoop2 192.168.159.131 NameNode,JournalNode,QuorumPeerMain,DFSZKFailoverController
hadoop3 192.168.159.132 DataNode,NodeManger,JournalNode,QuorumPeerMain,Worker
hadoop4 192.168.159.133 DataNode,NodeManger,Worker
hadoop5 192.168.159.134 DataNode,NodeManger,Worker

2. 搭建Hadoop集群

如何搭建Hadoop自动切换NameNode的集群,请参考链接:Hadoop 2.6.1 集群部署—自动切换HA

在上面的链接中介绍了如何搭建zookeeper集群和hadoop集群,搭建完成后,实现了以下表格的内容,因此接下来我们只需要在此基础上搭建spark集群即可。

HOST名称 ip地址 运行的进程
hadoop1 192.168.159.130 NameNode,ResourceManger,JournalNode,QuorumPeerMain,DFSZKFailoverController
hadoop2 192.168.159.131 NameNode,JournalNode,QuorumPeerMain,DFSZKFailoverController
hadoop3 192.168.159.132 DataNode,NodeManger,JournalNode,QuorumPeerMain
hadoop4 192.168.159.133 DataNode,NodeManger
hadoop5 192.168.159.134 DataNode,NodeManger

3. 安装scala环境

解压scala安装包并改名

//解压scala安装包
tar -zxvf scala-2.11.8.tgz -C /usr/local/
//进入/usr/local文件夹
cd /usr/local
//改名文件夹
mv scala-2.11.8 scala
修改环境变量
//编辑环境变量文件
vim /etc/profile
//环境变量的内容修改:
export SCALA_HOME=/usr/local/scala
export PATH=$PATH:$SCALA_HOME/bin

这里写图片描述

将scala分发到hadoop2,hadoop3,hadoop4,hadoop5机器
scp -rq /usr/local/scala hadoop2:/usr/local/
scp -rq /usr/local/scala hadoop3:/usr/local/
scp -rq /usr/local/scala hadoop4:/usr/local/
scp -rq /usr/local/scala hadoop5:/usr/local/
将环境变量文件分发到hadoop2,hadoop3,hadoop4,hadoop5机器
scp  /etc/profile hadoop2:/etc/profile
scp  /etc/profile hadoop3:/etc/profile
scp  /etc/profile hadoop4:/etc/profile
scp  /etc/profile hadoop5:/etc/profile
在各机器上重新加载环境变量
//在hadoop1,hadoop2,hadoop3,hadoop4,hadoop5执行命令重新加载环境变量
source /etc/profile

4. 安装spark集群

4.1 解压spark安装包并改名

//解压spark安装包
tar -zxvf spark-2.0.0-bin-hadoop2.6.tgz -C /usr/local/
//进入/usr/local目录
cd /usr/local
//修改文件夹名称
mv spark-2.0.0-bin-hadoop2.6 spark

4.2 修改配置文件spark-env.sh

修改spark-env.sh配置文件内容
//修改spark-env.sh配置文件
vim spark-env.sh
//配置文件内容:
    /*
        SPARK_LOCAL_IP:本机ip或hostname(每台机器都不一样)
        SPARK_LOCAL_DIRS:配置spark的local目录
        SPARK_MASTER_IP:master节点ip或hostname
        SPARK_MASTER_WEBUI_PORT:web页面端口
        SPARK_MASTER_OPTS:spark-shell启动使用核数(根据自己电脑实际情况写)
        SPARK_WORKER_CORES:Worker的cpu核数
        SPARK_WORKER_MEMORY:Worker内存大小
        SPARK_WORKER_DIR:worker目录
        SPARK_WORKER_OPTS:worker自动清理及清理时间间隔
        SPARK_HISTORY_OPTS:history server页面端口、备份数、log日志在HDFS的位置(这里需要注意,因为我使用的是hadoop的ha,所以采用逻辑名cluster1,如果不使用HA,应该使用hdfs://hadoop1:9000/var/log/spark的格式)
        SPARK_LOG_DIR:配置Spark的log日志目录
        JAVA_HOME:jdk的安装地址
        SCALA_HOME:scala的安装地址
        SPARK_WORKER_MEMORY:Worker内存大小
        SPARK_MASTER_IP:master节点ip或hostname
        HADOOP_HOME:hadoop的安装地址
        HADOOP_CONF_DIR:hadoop配置文件的安装地址
    */
SPARK_LOCAL_IP=hadoop1
SPARK_LOCAL_DIRS=/usr/local/spark
SPARK_MASTER_IP=hadoop1
SPARK_MASTER_WEBUI_PORT=8080
export SPARK_MASTER_OPTS="-Dspark.deploy.defaultCores=4"
SPARK_WORKER_CORES=2
SPARK_WORKER_MEMORY=1g
SPARK_WORKER_DIR=/usr/local/spark/work
export SPARK_WORKER_OPTS="-Dspark.worker.cleanup.enabled=true -Dspark.worker.cleanup.appDataTtl=604800"
export SPARK_HISTORY_OPTS="-Dspark.history.ui.port=18080 -Dspark.history.retainedApplications=3 -Dspark.history.fs.logDirectory=hdfs://cluster1/var/log/spark"
SPARK_LOG_DIR=/usr/local/spark/logs
export JAVA_HOME=/usr/local/jdk
export SCALA_HOME=/usr/local/scala
export SPARK_MASTER_IP=hadoop1
export SPARK_WORKER_MEMORY=1024m
export HADOOP_HOME=/usr/local/hadoop
export HADOOP_CONF_DIR=/usr/local/hadoop/etc/hadoop/

这里写图片描述

4.3 修改配置文件spark-defaults.conf

修改spark-defaults.conf配置文件内容
//将模版文件修改为配置文件
cp spark-defaults.conf.template spark-defaults.conf
//修改配置文件
vim spark-defaults.conf
// 配置文件的内容:
/*
    spark.eventLog.enabled:eventLog是否生效
    spark.eventLog.compress:eventLog是否启用压缩(cpu性能好的情况下建议开启,以减少内存等的占用)
    spark.eventLog.dir: eventLog的文件存放位置,与spark-env.sh中的history server配置位置一致,这两个位置必须手动创建,否则spark启动失败
    spark.broadcast.blockSize:广播块大小
    spark.executor.cores:Executor的cpu核数
    spark.executor.memory:Executor的内存大小
    spark.executor.heartbeatInterval:Executor心跳交换时间间隔
    spark.files.fetchTimeout:文件抓取的timeout
    spark.task.maxFailures:作业最大失败次数(达到此次数后,该作业不再继续执行,运行失败)
    spark.serializer:设置序列化机制(默认使用java的序列化,但是速度很慢,建议使用Kryo)
    spark.kryoserializer.buffer.max:序列化缓冲大小
    spark.akka.frameSize:Akka调度帧大小
    spark.default.parallelism:默认并行数
    spark.network.timeout:最大网络延时
    spark.speculation:Spark推测机制(建议开启)
*/
spark.eventLog.enabled          true
spark.eventLog.compress         true
spark.eventLog.dir              hdfs://cluster1/var/log/spark
spark.broadcast.blockSize       8m
spark.executor.cores            1
spark.executor.memory           512m
spark.executor.heartbeatInterval        20s
spark.files.fetchTimeout        120s
spark.task.maxFailures          6
spark.serializer                org.apache.spark.serializer.KryoSerializer
spark.kryoserializer.buffer.max         256m
spark.akka.frameSize            128
spark.default.parallelism       20
spark.network.timeout           300s
spark.speculation               true

这里写图片描述

创建hadoop的历史日志目录(在hadoop1上操作)
//首先进入hadoop的bin目录
cd /usr/local/hadoop/bin
//创建文件夹命令
./hadoop fs -mkdir /var
./hadoop fs -mkdir /var/log
./hadoop fs -mkdir /var/log/spark

4.4 修改slaves配置文件

编辑slaves配置文件
//编辑slaves文件
vim slaves
//slaves内容(设置从节点的位置)
hadoop3
hadoop4
hadoop5

这里写图片描述

4.5 将spark分发到其他节点,并修改配置

将spark分发到其他节点
scp -rq /usr/local/spark hadoop3:/usr/local/
scp -rq /usr/local/spark hadoop4:/usr/local/
scp -rq /usr/local/spark hadoop5:/usr/local/
修改hadoop3,hadoop4,hadoop5的spark-env.sh配置(只需要修改SPARK_LOCAL_IP配置)

这里写图片描述

这里写图片描述

这里写图片描述

4.6 启动Spark集群

在hadoop1启动spark集群
//启动master和slaves
start-all.sh
//停止master和slaves                   
stop-all.sh
//启动job历史端口
./start-history-server.sh                  

4.7 查看Spark集群是否启动成功

访问地址:http://hadoop1:8080,出现以下界面启动成功。

这里写图片描述

访问地址:http://hadoop1:18080查看历史job日志,出现以下界面启动成功。

这里写图片描述

上一篇:HBase1.2.6集群部署教程
下一篇:大数据技术GBDT算法解析
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站