Python搭建Spark分布式集群环境


Posted in Python onJuly 05, 2019

前言

Apache Spark 是一个新兴的大数据处理通用引擎,提供了分布式的内存抽象。Spark 最大的特点就是快,可比 Hadoop MapReduce 的处理速度快 100 倍。本文没有使用一台电脑上构建多个虚拟机的方法来模拟集群,而是使用三台电脑来搭建一个小型分布式集群环境安装。

本教程采用Spark2.0以上版本(比如Spark2.0.2、Spark2.1.0等)搭建集群,同样适用于搭建Spark1.6.2集群。

安装Hadoop并搭建好Hadoop集群环境

Spark分布式集群的安装环境,需要事先配置好Hadoop的分布式集群环境。

安装Spark

这里采用3台机器(节点)作为实例来演示如何搭建Spark集群,其中1台机器(节点)作为Master节点,另外两台机器(节点)作为Slave节点(即作为Worker节点),主机名分别为Slave01和Slave02。

在Master节点机器上,访问Spark官方下载地址,按照如下图下载。

Python搭建Spark分布式集群环境

下载完成后,执行如下命令:

sudo tar -zxf ~/下载/spark-2.0.2-bin-without-hadoop.tgz -C /usr/local/
cd /usr/local
sudo mv ./spark-2.0.2-bin-without-hadoop/ ./spark
sudo chown -R hadoop ./spark

配置环境变量

在Mster节点主机的终端中执行如下命令:

vim ~/.bashrc

在.bashrc添加如下配置:

export SPARK_HOME=/usr/local/spark
export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin

执行如下命令使得配置立即生效:

source ~/.bashrc

Spark配置

在Master节点主机上进行如下操作:

配置slaves文件

将 slaves.template 拷贝到 slaves

cd /usr/local/spark/
cp ./conf/slaves.template ./conf/slaves

slaves文件设置Worker节点。编辑slaves内容,把默认内容localhost替换成如下内容:

slave01
slave02

配置spark-env.sh文件

将 spark-env.sh.template 拷贝到 spark-env.sh

cp ./conf/spark-env.sh.template ./conf/spark-env.sh

编辑spark-env.sh,添加如下内容:

export SPARK_DIST_CLASSPATH=$(/usr/local/hadoop/bin/hadoop classpath)
export HADOOP_CONF_DIR=/usr/local/hadoop/etc/hadoop
export SPARK_MASTER_IP=192.168.1.104

SPARK_MASTER_IP 指定 Spark 集群 Master 节点的 IP 地址;

配置好后,将Master主机上的/usr/local/spark文件夹复制到各个节点上。在Master主机上执行如下命令:

cd /usr/local/
tar -zcf ~/spark.master.tar.gz ./spark
cd ~
scp ./spark.master.tar.gz slave01:/home/hadoop
scp ./spark.master.tar.gz slave02:/home/hadoop

在slave01,slave02节点上分别执行下面同样的操作:

sudo rm -rf /usr/local/spark/
sudo tar -zxf ~/spark.master.tar.gz -C /usr/local
sudo chown -R hadoop /usr/local/spark

启动Spark集群

启动Hadoop集群

启动Spark集群前,要先启动Hadoop集群。在Master节点主机上运行如下命令:

cd /usr/local/hadoop/
sbin/start-all.sh

启动Spark集群

1.启动Master节点

在Master节点主机上运行如下命令:

cd /usr/local/spark/
sbin/start-master.sh

在Master节点上运行jps命令,可以看到多了个Master进程:

15093 Jps
14343 SecondaryNameNode
14121 NameNode
14891 Master
14509 ResourceManager

2.启动所有Slave节点

在Master节点主机上运行如下命令:

sbin/start-slaves.sh

分别在slave01、slave02节点上运行jps命令,可以看到多了个Worker进程

37553 DataNode
37684 NodeManager
37876 Worker
37924 Jps

3.在浏览器上查看Spark独立集群管理器的集群信息

在master主机上打开浏览器,访问http://master:8080,如下图:

Python搭建Spark分布式集群环境

关闭Spark集群

1.关闭Master节点

sbin/stop-master.sh

2.关闭Worker节点

sbin/stop-slaves.sh

3.关闭Hadoop集群

cd /usr/local/hadoop/
sbin/stop-all.sh

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
理解python多线程(python多线程简明教程)
Jun 09 Python
Python数据类型详解(二)列表
May 08 Python
python中的lambda表达式用法详解
Jun 22 Python
Python实现的列表排序、反转操作示例
Mar 13 Python
Python实现将字符串的首字母变为大写,其余都变为小写的方法
Jun 11 Python
python调用函数、类和文件操作简单实例总结
Nov 29 Python
用python介绍4种常用的单链表翻转的方法小结
Feb 24 Python
利用python生成照片墙的示例代码
Apr 09 Python
python print 格式化输出,动态指定长度的实现
Apr 12 Python
Python列表元素删除和remove()方法详解
Jan 04 Python
Python实现简单的2048小游戏
Mar 01 Python
教你怎么用Python生成九宫格照片
May 20 Python
详解python解压压缩包的五种方法
Jul 05 #Python
用python3 返回鼠标位置的实现方法(带界面)
Jul 05 #Python
python中的colorlog库使用详解
Jul 05 #Python
Python+selenium点击网页上指定坐标的实例
Jul 05 #Python
用Python实现将一张图片分成9宫格的示例
Jul 05 #Python
python获取txt文件词向量过程详解
Jul 05 #Python
Python 的字典(Dict)是如何存储的
Jul 05 #Python
You might like
php开发留言板的CRUD(增,删,改,查)操作
2012/04/19 PHP
thinkPHP统计排行与分页显示功能示例
2016/12/02 PHP
用JavaScript获取网页中的js、css、Flash等文件
2006/12/20 Javascript
jQuery实现列表的全选功能
2015/03/18 Javascript
jQuery实现弹出窗口中切换登录与注册表单
2015/06/05 Javascript
基于javascript编写简单日历
2016/05/02 Javascript
详解JS中的柯里化(currying)
2017/08/17 Javascript
浅谈Node.js CVE-2017-14849 漏洞分析(详细步骤)
2017/11/10 Javascript
在Angular中使用JWT认证方法示例
2018/09/10 Javascript
在element-ui的el-tree组件中用render函数生成el-button的实例代码
2018/11/05 Javascript
JS字符串与二进制的相互转化实例代码详解
2019/06/28 Javascript
js实现的订阅发布者模式简单示例
2020/03/14 Javascript
python监控网卡流量并使用graphite绘图的示例
2014/04/27 Python
给Python初学者的一些编程技巧
2015/04/03 Python
使用Python脚本来控制Windows Azure的简单教程
2015/04/16 Python
python 爬取微信文章
2016/01/30 Python
Python日期的加减等操作的示例
2017/08/15 Python
Python利用itchat对微信中好友数据实现简单分析的方法
2017/11/21 Python
使用python和Django完成博客数据库的迁移方法
2018/01/05 Python
numpy中的高维数组转置实例
2018/04/17 Python
Django项目实战之用户头像上传与访问的示例
2018/04/21 Python
python模块smtplib实现纯文本邮件发送功能
2018/05/22 Python
基于tensorflow加载部分层的方法
2018/07/26 Python
Python用SSH连接到网络设备
2021/02/18 Python
js实现移动端H5页面手指滑动刻度尺功能
2017/11/16 HTML / CSS
教师见习期自我鉴定
2014/04/28 职场文书
对照检查剖析材料
2014/09/30 职场文书
代领学位证书毕业证书委托书
2014/09/30 职场文书
个人合伙协议书范本
2014/10/14 职场文书
医德医风个人工作总结2014
2014/11/14 职场文书
信息技术教研组工作总结
2015/08/13 职场文书
2019年工作总结范文
2019/05/21 职场文书
HTML基础-标签分类(闭合标签,空标签,块级元素,行内元素,行级块元素,可替换元素)
2021/03/31 HTML / CSS
使用Pytorch训练two-head网络的操作
2021/05/28 Python
springboot项目以jar包运行的操作方法
2021/06/30 Java/Android
Win11开始菜单添加休眠选项
2022/04/19 数码科技