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 time模块用法实例详解
Sep 11 Python
跟老齐学Python之Import 模块
Oct 13 Python
python实现简单温度转换的方法
Mar 13 Python
Python的Flask框架中Flask-Admin库的简单入门指引
Apr 07 Python
Python面向对象class类属性及子类用法分析
Feb 02 Python
Python使用numpy产生正态分布随机数的向量或矩阵操作示例
Aug 22 Python
Python 多维List创建的问题小结
Jan 18 Python
Python和Go语言的区别总结
Feb 20 Python
python SQLAlchemy 中的Engine详解
Jul 04 Python
python获取栅格点和面值的实现
Mar 10 Python
Python matplotlib读取excel数据并用for循环画多个子图subplot操作
Jul 14 Python
Python定义一个Actor任务
Jul 29 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静态新闻列表自动生成代码
2007/06/14 PHP
PHP+MYSQL 出现乱码的解决方法
2008/08/08 PHP
php微信公众号开发之答题连闯三关
2018/10/20 PHP
JavaScript对象创建及继承原理实例解剖
2013/02/28 Javascript
iframe子页面获取父页面元素的方法
2013/11/05 Javascript
无刷新上传文件并返回自定义值
2015/06/11 Javascript
jquery.mousewheel实现整屏翻屏效果
2015/08/30 Javascript
18个非常棒的jQuery代码片段
2015/11/02 Javascript
jQuery中通过ajax调用webservice传递数组参数的问题实例详解
2016/05/20 Javascript
Dojo获取下拉框的文本和值实例代码
2016/05/27 Javascript
浅谈js和css内联外联注意事项
2016/06/30 Javascript
javascript封装addLoadEvent实现页面同时加载执行多个函数的方法
2016/07/25 Javascript
微信小程序 在Chrome浏览器上运行以及WebStorm的使用
2016/09/27 Javascript
jQuery实现两列等高并自适应高度
2016/12/22 Javascript
vue实现todolist单页面应用
2017/04/11 Javascript
JS实现对json对象排序并删除id相同项功能示例
2018/04/18 Javascript
基于Element的组件改造的树形选择器(树形下拉框)
2020/02/27 Javascript
vue祖孙组件之间的数据传递案例
2020/12/07 Vue.js
[04:11]DOTA2亚洲邀请赛小组赛第一日 TOP10精彩集锦
2015/01/30 DOTA
[01:34]传奇从这开始 2016国际邀请赛中国区预选赛震撼开启
2016/06/26 DOTA
python绘图方法实例入门
2015/05/19 Python
python非递归全排列实现方法
2017/04/10 Python
python 巧用正则寻找字符串中的特定字符的位置方法
2018/05/02 Python
详解利用python+opencv识别图片中的圆形(霍夫变换)
2019/07/01 Python
Python一键查找iOS项目中未使用的图片、音频、视频资源
2019/08/12 Python
详解一种用django_cache实现分布式锁的方式
2019/09/01 Python
使用python+poco+夜神模拟器进行自动化测试实例
2020/04/23 Python
法学专业应届生求职信
2013/10/16 职场文书
拖鞋店创业计划书
2014/01/15 职场文书
儿童诗两首教学反思
2016/02/23 职场文书
修辞手法有哪些?
2019/08/29 职场文书
导游词之安徽醉翁亭
2020/01/10 职场文书
python实现股票历史数据可视化分析案例
2021/06/10 Python
Python OpenCV超详细讲解调整大小与图像操作的实现
2022/04/02 Python
golang三种设计模式之简单工厂、方法工厂和抽象工厂
2022/04/10 Golang
Win11怎么添加用户?Win11添加用户账户的方法
2022/07/15 数码科技