Spark完全分布式搭建过程
来源:互联网 发布:2017年春运数据 编辑:程序博客网 时间:2024/06/10 13:48
1 环境准备
1.1 建立虚拟集群
本博客内容基于虚拟的分布式集群进行Spark平台的搭建部署,运用Windows平台下的虚拟机软件VMware创建拥有3个节点的集群,其中集群拥有1个Master节点、2个Slave节点。
1.新建虚拟机
运用VMware软件新建一台名称为Master的虚拟机,硬件配置为2GB的内存、双核CPU以及20GB的硬盘容量,网络连接方式选用桥接模式,并在虚拟网络编辑器中配置网络桥接到物理网卡,最后为其安装Ubuntu 14.04 LTS 64位操作系统,安装过程中设定用户名为czb。
2.克隆虚拟机
关闭新建的虚拟机,采用克隆的方式完整克隆虚拟机的软硬件配置,其中克隆的第一台虚拟机取名Slave1,第二台虚拟机取名Slave2。为保证虚拟机配置不超出物理内存,修改各Slave节点内存为1GB。
3.为每台虚拟机配置IPv4
为保证宿主机与虚拟机之间能够相互通信,集群各节点的IP设置与宿主机位于同一局域网内,如下所示(其中宿主机IP地址为10.100.129.117):
Master 10.100.129.88Slave1 10.100.129.89Slave2 10.100.129.90
其余配置一致:
子网掩码 255.255.255.0网关 10.100.129.1DNS服务器 202.196.64.1
4.修改hostname文件
配置各节点的主机名hostname。打开hostname文件:
$sudo gedit /etc/hostname
各节点hostname设置如下:
Master masterSlave1 slave1Slave2 slave2
5.修改hosts文件
配置各节点的hosts文件,方便集群间通信。打开hosts文件:
$sudo gedit /etc/hosts
各节点hosts配置一致,在文件开头的第二行加入以下语句:
10.100.129.88 master10.100.129.89 slave110.100.129.90 slave2
6.检测各节点间互联
采用ping命令检测各节点间是否能够相互ping通:
如在master下执行ping 10.100.129.89 -c 3。
1.2 安装与配置JDK
为每台虚拟机安装与配置JDK,其中JDK存放路径及版本保持一致。
1.创建JDK存放路径
$sudo mkdir /usr/lib/jvm
2.到官网下载jdk-7u80-linux-x64.tar.gz,并解压缩到/usr/lib/jvm
$sudo tar -zxvf jdk-7u80-linux-x64.tar.gz -C /usr/lib/jvm/
3.打开/etc/profile,配置JDK环境变量
$sudo gedit /etc/profile
在文件末尾追加如下语句:
export JAVA_HOME=/usr/lib/jvm/jdk1.7.0.80export CLASSPATH=.:${JAVA_HOME}/lib:${JAVA_HOME}/jre/libexport PATH=${JAVA_HOME}/bin:$PATH
保存并退出,执行source /etc/profile使得配置立即生效。
4.执行java -version查看当前JDK版本,检测配置是否生效
1.3 配置SSH免密钥登录
该配置是为了避免节点间访问时需要密码登录的困扰。
1.在各节点安装SSH服务器
$sudo apt-get install openssh-server
2.在各节点创建.ssh文件夹
$sudo mkdir .ssh
3.在各节点生成密钥对
$ssh-keygen -t rsa
一路按下Enter键,生成的密钥对保存在~/.ssh/目录下,其中id_rsa为私钥,id_rsa.pub为公钥。
4.各节点实现自身免密钥登录
$cat .ssh/id_rsa.pub >> .ssh/authorized_keys
执行ssh localhost检测是否配置成功。
5.实现各节点相互免密钥登录
以master免密钥登录slave1为例。
将master公钥拷贝至slave1:
$scp .ssh/id_rsa.pub czb@slave1:~/
在slave1节点将master公钥追加至authorized_keys文件中:
$cat id_rsa.pub >> .ssh/authorized_keys
检测是否配置成功,在master节点执行:
$ssh slave1
1.4 安装时间同步工具ntpdate
虚拟机节点在集群运行过程中的时间不一致,会造成分布式计算工作无法并行执行,ntpdate工具可以保证各slave节点与master节点时间保持同步。
集群在开启时,各slave节点执行:
$sudo ntpdate master
2 Spark集群配置
2.1 安装与配置Scala
为每台虚拟机安装与配置Scala,其中Scala存放路径及版本保持一致。
1.到官网下载scala-2.10.6.tgz,并解压缩到/usr/lib/scala
$sudo tar -zxvf scala-2.10.6.tgz -C /usr/lib/scala
2.打开/etc/profile,配置Scala环境变量
$sudo gedit /etc/profile
在文件末尾加入以下语句:
export SCALA_HOME=/usr/lib/scala/scala-2.10.6export PATH=${SCALA_HOME}/bin:$PATH
保存后退出,执行source /etc/profile配置生效。
3.执行scala -version查看当前Scala版本,检测配置是否生效
2.2 配置Spark
该配置需要在各节点上进行,本集群以spark-1.4.0为例配置Spark集群。首先对master节点执行如下操作:
1.下载安装spark-1.4.0,解压缩至用户目录下
$sudo tar -zxvf ~/下载/spark-1.4.0-bin-hadoop2.6.tgz -C ~
修改解压缩后的spark-1.4.0-bin-hadoop2.6的文件夹权限:
$sudo chown -R spark-1.4.0-bin-hadoop2.6 czb:czb
2.配置Spark环境变量
修改/etc/profile,追加如下内容:
export SPARK_HOME=/home/czb/spark-1.4.0-bin-hadoop2.6export PATH=${SPARK_HOME}/bin:${SPARK_HOME}/sbin:$PATH
保存后退出,执行source /etc/profile配置生效。
3.修改Spark配置文件
进入spark-1.4.0-bin-hadoop2.6/conf目录下:
(1)重命名spark-env.sh.template为spark-env.sh,并在文件末尾追加如下语句:
export JAVA_HOME=/usr/lib/jvm/jdk1.7.0_80export SCALA_HOME=/usr/lib/scala/scala-2.10.6export HADOOP_HOME=/home/czb/hadoop-2.6.0export SPARK_MASTER_IP=10.100.129.88export HADOOP_CONF_DIR=/home/czb/hadoop-2.6.0/etc/hadoopexport SPARK_HISTORY_OPTS="-Dspark.history.fs.logDirectory=hdfs://master:9000/sparkLogs"
(2)重命名spark-defaults.conf.template为spark-defaults.conf,并在文件末尾追加如下语句:
spark.eventLog.enabled truespark.eventLog.dir hdfs://master:9000/sparkLogsspark.eventLog.compress truespark.yarn.historyServer.address master:18080
(3)编辑slaves:
slave1slave2
最后,将master节点配置好的整个spark文件夹拷贝至各slave节点:
$scp -r spark-1.4.0-bin-hadoop2.6 czb@slave1:~$scp -r spark-1.4.0-bin-hadoop2.6 czb@slave2:~
4.启动Spark集群
启动master节点。
$start-master.sh
启动slave节点。
$start-slaves.sh
启动历史作业服务进程。
$start-history-server.sh
集群配置完成后,可在终端运行命令查看集群状态。
运行jps命令查看集群状态。
$jps
master节点显示:
19671 HistoryServer20602 Jps20170 Master
slave节点显示:
3604 Worker3654 Jps
通过Web端口查看集群状态,其中查看集群状态访问master:8080,查看作业运行状态访问master:4040,查看历史作业访问master:18080。
- Spark完全分布式搭建过程
- Spark 完全分布式集群搭建过程
- spark完全分布式集群搭建
- Hadoop完全分布式搭建过程
- 高效搭建Spark完全分布式集群
- hadoop之spark完全分布式环境搭建
- Spark +hadoop 完全分布式搭建 以及常见问题
- Hadoop+Spark分布式集群搭建过程
- ubuntu16.04LTS下Spark完全分布式搭建
- spark完全分布式安装
- spark-1.6.0分布式环境搭建详细过程
- 基于CentOS的Hadoop和Spark分布式集群搭建过程
- Hadoop2.7.3+Spark2.1.0完全分布式集群搭建过程
- Hadoop2.7.3+Spark2.1.0完全分布式集群搭建过程
- Hadoop2.7.3+Spark2.1.0完全分布式集群搭建过程
- spark分布式,伪分布式搭建
- 搭建Spark分布式集群
- 搭建Spark分布式集群
- jQuery 简单总结
- 浅谈h5的新属性(data-*属性)
- Codeforces Round #409 Div2题解
- 10、linux 统计当前文件夹下的文件、目录个数
- 安卓开发-基本UI的设计使用
- Spark完全分布式搭建过程
- 同一进程的线程共享的资源和独有的资源
- 左旋转字符串
- WPS 规划求解
- Jenkins和Docker在HULK的落地实践
- strcop & memcop & sprintf区别
- tensorflow编程: Tensor Handle Operations
- PyTorch学习—PyTorch是什么?
- 表篇(二)-----单链表的创建与使用(c语言版)