主页 > 新闻资讯 > Spark在线使用:Spark集群环境搭建及基本使用

Spark在线使用:Spark集群环境搭建及基本使用

作者:张老师 浏览次数: 2020-02-17 17:44
Spark作为主流的大数据计算引擎之一,是必须掌握的大数据技术技能之一,随着大数据在更多的行业当中落地应用,Spark的应用范围也在不断扩大,Spark在线使用,成为企业的普遍需求之一。今天我们就主要来分享一下Spark集群环境搭建及基本使用。

Spark在线使用

Spark在线使用的第一步,就是先要进行集群环境的搭建。在Spark官网上,Spark的版本很多,有基于Hadoop构建的,也有独立运行的版本,今天我们这里以基于Hadoop构建的Spark版本为例。

Spark集群环境搭建:

进入Spark的下载目录,https://spark.apache.org/downloads.html,下载Pre-built for Apache Hadoop 2.7 and later;

把spark-2.4.4-bin-hadoop2.7.tgz文件下载到home路径下,然后解压到指定目录,

$tar-zxvf~/spark-2.4.4-bin-hadoop2.7.tgz-C/usr/local/

然后进入目录修改Spark目录的拥有者:

$cd/usr/local

$sudo mv./spark-2.4.4-bin-hadoop2.7./spark

$sudo chowm-R user_name./spark

配置环境变量

修改bashrc,配置环境变量,把Spark的bin和sbin路径加入到环境变量,

$vim~/.bashrc

export SPARK_HOME=/usr/local/spark

export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin

export PYTHONPATH=$SPARK_HOME/python:$SPARK_HOME/python/lib/py4j-0.10.7-src.zip:$PYTHONPATH

export PYSPARK_PYTHON=python3

Master节点配置

进入Spark目录,修改spark-env.sh文件,

$cd/usr/local/spark

$vim./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=10.110.113.132

SPARK_MASTER_IP指定的是master节点的IP,后面启动集群Spark时slave节点会注册到SPARK_MASTER_IP,如果这一项不配置,Spark集群则没有可使用资源,

修改slaves文件

配置完master节点信息之后需要配置slave节点信息,slave节点的信息配置在slaves文件里,由于Spark目录下没有这个文件,因此需要首先从slaves.template拷贝一下,

$cd/usr/local/spark/

$cp./conf/slaves.template./conf/slaves

然后添加如下内容,

slave0

slave0

slave1

需要注意的是,slaves文件里配置的是运行作业任务的节点(worker),这样的话master的节点只作为控制节点,而不作为工作节点,如果需要把master节点的资源也充分利用起来,需要把master节点也加入到slaves文件中。

slave节点配置

首先在master节点上把配制好的目录进行打包,拷贝到每个slave节点上,

$cd/usr/local

$tar-zcf~/spar.tar.gz./spark

$scp~/spark/tar.gz slave0:~/

$scp~/spark/tar.gz slave1:~/

$scp~/spark/tar.gz slave2:~/

然后在每个slave节点上执行下方命令,把文件解压到相应路径下,

$sudo rm-rf/usr/local/spark

$sudo tar-zxvf~/spark.tar.gz-C/usr/local

$sudo chown-R user_name/usr/local/spark

这样就完成了slave节点的配置。

启动Spark集群

如果要使用HDFS的话,在启动Spark集群前需要先启动Hadoop集群,

$cd/usr/local/hadoop/

$./sbin/start-all.sh

然后进入Spark目录,启动Spark集群,

$cd/usr/local/spark

$./sbin/start-all.sh

需要说明一下,前面配置Hadoop集群是提到,需要配置ssh免密登陆,对于Spark也是同样的道理,如果不配置ssh免密登陆的话,执行./sbin/start-all.sh会提示输入密码。

除了使用./sbin/start-all.sh启动Spark集群外,还可以分开启动,先启动master节点,然后启动slave节点,

$./sbin/start-master.sh

$./sbin/start-slaves.sh

如果前面没有完成Master节点配置指定master节点IP,那么执行./sbin/start-slaves.sh时则无法注册master节点的IP,这样集群计算资源则无法使用。除了配置spark-env.sh指定master节点IP外,还可以通过下面方式指定注册的master节点IP,

$./sbin/start-slave.sh 10.110.113.132

然后分别在master节点和slave节点执行下面命令会看到分别多出一个Master进程和Worker进程。

Spark在线使用:

下面就以一个简单的示例,讲解一下HDFS+Spark的使用方法。

上传数据到HDFS

新建一个hello_world.txt的本地文件,并在文件中添加3行hello world,然后上传至HDFS,

$cd/usr/local/hadoop/

$./bin/hdfs dfs-mkdir-p/usr/hadoop

$touch hello_world.txt

$echo-e"hello world\nhello world\nhello world">>hello_world.txt

$./bin/hdfs dfs-put./hello_world.txt/usr/hadoop

编写Spark程序

新建一个spark.py的Python文件,

$vim spark.py

添加如下内容,

from pyspark import SparkConf

from pyspark import SparkContext

conf=SparkConf().setAppName("FirstProject").setMaster("local[*]")

sc=SparkContext.getOrCreate(conf)

rdd=sc.textFile("hdfs:///master:9000/usr/hadoop/hello_world.txt")

rdd.map(lambda line:line).foreach(print)

然后运行程序,

$python spark.py

hello world

hello world

hello world

关于Spark在线使用及集群配置过程,以上就是一个简单的介绍了。在Spark和Hadoop的集成当中,涉及到很多细节方面的调整,这一点大家可以进行实操巩固,多练习,对于后续的学习和掌握也是很有好处的。成都加米谷大数据,专业大数据培训机构,大数据开发2020春季班正在招生中,详情可联系客服了解!
热点排行
推荐文章
立即申请>>