700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > spark 广播变量大数据_大数据处理 | Spark集群搭建及基本使用

spark 广播变量大数据_大数据处理 | Spark集群搭建及基本使用

时间:2020-05-20 23:53:30

相关推荐

spark 广播变量大数据_大数据处理 | Spark集群搭建及基本使用

点击蓝字关注我

前面用了一篇文章详细的介绍了集群HDFS文件系统的搭建,HDFS文件系统只是一个用于存储数据的系统,它主要是用来服务于大数据计算框架,例如MapReduce、Spark,本文就接着上一篇文章来详细介绍一下Spark集群的搭建及Spark的运行原理、运行模式。

—▼—

Spark集群环境搭建

如果已经理解了前文Hadoop集群环境的搭建,那么学习Spark集群环境的搭建会容易很多,因为Hadoop和Spark不仅安装包目录结构非常相似,在配置方面也十分接近。均是在master节点上进行所有配置,然后打包复制到每个slave节点,然后启动集群Spark即可,下面就来详细介绍一下Spark集群环境的搭建。

下载安装

进入Spark的下载目录,

/downloads.html

可以看到Spark分多个版本,有基于Hadoop构建好的,有没基于Hadoop构建的,有基于Hadoop2.6之前版本构建的,也有基于Hadoop2.7以后版本构建的,由于前面讲解Hadoop集群环境搭建时采用的是Hadoop 3.2.1,因此,而且本文需要使用HDFS依赖Hadoop,因此需要下载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/

然后进入目录并像Hadoop那样,修改Spark目录的拥有者,

$cd/usr/local$sudomv./spark-2.4.4-bin-hadoop2.7./spark$sudochowm-Ruser_name./spark

配置环境变量

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

$vim~/.bashrcexportSPARK_HOME=/usr/local/sparkexportPATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbinexportPYTHONPATH=$SPARK_HOME/python:$SPARK_HOME/python/lib/py4j-0.10.7-src.zip:$PYTHONPATHexportPYSPARK_PYTHON=python3

Master节点配置

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

$cd/usr/local/spark$vim./conf/spark-env.sh

在spark-env.sh中添加下面内容,

exportSPARK_DIST_CLASSPATH=$(/usr/local/hadoop/bin/hadoopclasspath)exportHADOOP_CONF_DIR=/usr/local/hadoop/etc/hadoopexportSPARK_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

然后添加如下内容,

slave0slave0slave1

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

slave节点配置

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

$cd/usr/local$tar-zcf~/spar.tar.gz./spark$scp~/spark/tar.gzslave0:~/$scp~/spark/tar.gzslave1:~/$scp~/spark/tar.gzslave2:~/

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

$sudorm-rf/usr/local/spark$sudotar-zxvf~/spark.tar.gz-C/usr/local$sudochown-Ruser_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.sh10.110.113.132

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

Spark基本使用

运行原理

如果使用过tensorflow的话,应该对Spark的使用很容易理解,Spark的计算过程和tensorflow有相似之处。

回忆一下,我们在使用tensorflow时需要首先构造一个计算图,然后实例化一个session,然后用session.run来启动图运算。

其实Spark也是这样,RDD(弹性分布式数据集)是Spark中最重要的概念之一,它提供了一个共享内存模型。Saprk的执行过程中主要包括两个动作:转换与行动。其中转换操作就如同tensorflow中的构造计算图的过程,在这个过程中Spark构造一个有向无环图(DAG),但是不进行运算,输入为RDD输出则是一个不同的RDD,当执行行动操作时就如同tensorflow中的session.run,开始执行运算。

Spark中有很多转换操作,例如,

groupByKey

reduceByKey

sortByKey

map

filter

join

……

行动操作包括,

count

collect

first

foreach

reduce

take

……

运行模式

Spark中通过master url来执行Spark的运行模式,Spark的运行模式包括本地运行、集群运行、yarn集群等,关于Spark master url的指定不同运行模式的含义如下,

示例

下面就以一个简单的示例把前面Hadoop和Spark串联在一起,讲解一下HDFS+Spark的使用方法。上传数据到HDFS新建一个hello_world.txt的本地文件,并在文件中添加3行hello world,然后上传至HDFS,

$cd/usr/local/hadoop/$./bin/hdfsdfs-mkdir-p/usr/hadoop$touchhello_world.txt$echo-e"helloworld\nhelloworld\nhelloworld">>hello_world.txt$./bin/hdfsdfs-put./hello_world.txt/usr/hadoop

编写Spark程序新建一个spark.py的Python文件,

$vimspark.py

添加如下内容,

frompysparkimportSparkConffrompysparkimportSparkContextconf=SparkConf().setAppName("FirstProject").setMaster("local[*]")sc=SparkContext.getOrCreate(conf)rdd=sc.textFile("hdfs:///master:9000/usr/hadoop/hello_world.txt")rdd.map(lambdaline:line).foreach(print)

然后运行程序,

$pythonspark.pyhelloworldhelloworldhelloworld

以上就是Spark的集群配置过程和基本使用方法。

END

有趣的灵魂在等你

长按扫码可关注

相关文章效率工具 | 推荐一款提高Python编程效率的神器实用工具 | 推荐5款值得安装的Windows工具学习资源 | 推荐2份Github热门校招面试汇总资料文章好看就点这里

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。