百度360必应搜狗淘宝本站头条
当前位置:网站首页 > IT技术 > 正文

大数据处理 | Spark集群搭建及基本使用

wptr33 2024-12-20 19:03 12 浏览


本文将详细介绍Spark集群的搭建及Spark的运行原理、运行模式。

—▼—

Spark集群环境搭建

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

下载安装

进入Spark的下载目录,

https://spark.apache.org/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
$?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基本使用

运行原理

如果使用过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的指定不同运行模式的含义如下,

URL值运行模式local使用1个线程本地化运行local[K]使用K个线程本地化运行local[*]使用逻辑CPU个数数量的线程来本地化运行spark://HOST:PORT指定集群模式运行Sparkyarn-cluster集群模式连接YARN集群yarn-client客户端模式连接YARN集群mesos://HOST:PORT连接到指定的Mesos集群

示例

下面就以一个简单的示例把前面Hadoop和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的集群配置过程和基本使用方法。

大数据开发高薪必备全套资源【免费获取】

Oracle高级技术总监多年精心创作一套完整课程体系【大数据、人工智能开发必看】,全面助力大数据开发零基础+入门+提升+项目=高薪

「大数据零基础入门」

「大数据架构系统组件」

「大数据全套系统工具安装包」

Java必备工具

大数据必备工具

「大数据行业必备知资讯」

「大数据精品实战案例」

「大数据就业指导方案」

最后说一下的,也就是以上教程的获取方式!

领取方法:

还是那个万年不变的老规矩

1.评论文章,没字数限制,一个字都行!

2.成为小编成为的粉丝!

3.私信小编:“大数据开发教程”即可!

谢谢大家,祝大家学习愉快!(拿到教程后一定要好好学习,多练习哦!)

相关推荐

Python自动化脚本应用与示例(python办公自动化脚本)

Python是编写自动化脚本的绝佳选择,因其语法简洁、库丰富且跨平台兼容性强。以下是Python自动化脚本的常见应用场景及示例,帮助你快速上手:一、常见自动化场景文件与目录操作...

Python文件操作常用库高级应用教程

本文是在前面《Python文件操作常用库使用教程》的基础上,进一步学习Python文件操作库的高级应用。一、高级文件系统监控1.1watchdog库-实时文件系统监控安装与基本使用:...

Python办公自动化系列篇之六:文件系统与操作系统任务

作为高效办公自动化领域的主流编程语言,Python凭借其优雅的语法结构、完善的技术生态及成熟的第三方工具库集合,已成为企业数字化转型过程中提升运营效率的理想选择。该语言在结构化数据处理、自动化文档生成...

14《Python 办公自动化教程》os 模块操作文件与文件夹

在日常工作中,我们经常会和文件、文件夹打交道,比如将服务器上指定目录下文件进行归档,或将爬虫爬取的数据根据时间创建对应的文件夹/文件,如果这些还依靠手动来进行操作,无疑是费时费力的,这时候Pyt...

python中os模块详解(python os.path模块)

os模块是Python标准库中的一个模块,它提供了与操作系统交互的方法。使用os模块可以方便地执行许多常见的系统任务,如文件和目录操作、进程管理、环境变量管理等。下面是os模块中一些常用的函数和方法:...

21-Python-文件操作(python文件的操作步骤)

在Python中,文件操作是非常重要的一部分,它允许我们读取、写入和修改文件。下面将详细讲解Python文件操作的各个方面,并给出相应的示例。1-打开文件...

轻松玩转Python文件操作:移动、删除

哈喽,大家好,我是木头左!Python文件操作基础在处理计算机文件时,经常需要执行如移动和删除等基本操作。Python提供了一些内置的库来帮助完成这些任务,其中最常用的就是os模块和shutil模块。...

Python 初学者练习:删除文件和文件夹

在本教程中,你将学习如何在Python中删除文件和文件夹。使用os.remove()函数删除文件...

引人遐想,用 Python 获取你想要的“某个人”摄像头照片

仅用来学习,希望给你们有提供到学习上的作用。1.安装库需要安装python3.5以上版本,在官网下载即可。然后安装库opencv-python,安装方式为打开终端输入命令行。...

Python如何使用临时文件和目录(python目录下文件)

在某些项目中,有时候会有大量的临时数据,比如各种日志,这时候我们要做数据分析,并把最后的结果储存起来,这些大量的临时数据如果常驻内存,将消耗大量内存资源,我们可以使用临时文件,存储这些临时数据。使用标...

Linux 下海量文件删除方法效率对比,最慢的竟然是 rm

Linux下海量文件删除方法效率对比,本次参赛选手一共6位,分别是:rm、find、findwithdelete、rsync、Python、Perl.首先建立50万个文件$testfor...

Python 开发工程师必会的 5 个系统命令操作库

当我们需要编写自动化脚本、部署工具、监控程序时,熟练操作系统命令几乎是必备技能。今天就来聊聊我在实际项目中高频使用的5个系统命令操作库,这些可都是能让你效率翻倍的"瑞士军刀"。一...

Python常用文件操作库使用详解(python文件操作选项)

Python生态系统提供了丰富的文件操作库,可以处理各种复杂的文件操作需求。本教程将介绍Python中最常用的文件操作库及其实际应用。一、标准库核心模块1.1os模块-操作系统接口主要功能...

11. 文件与IO操作(文件io和网络io)

本章深入探讨Go语言文件处理与IO操作的核心技术,结合高性能实践与安全规范,提供企业级解决方案。11.1文件读写11.1.1基础操作...

Python os模块的20个应用实例(python中 import os模块用法)

在Python中,...