【智能大数据分析 | 实验二】Spark实验:部署Spark集群

【作者主页】Francek Chen

【专栏介绍】⌈ ⌈ ⌈智能大数据分析 ⌋ ⌋ ⌋ 智能大数据分析是指利用先进的技术和算法对大规模数据进行深入分析和挖掘,以提取有价值的信息和洞察。它结合了大数据技术、人工智能(AI)、机器学习(ML)和数据挖掘等多种方法,旨在通过自动化的方式分析复杂数据集,发现潜在的价值和关联性,实现数据的自动化处理和分析,从而支持决策和优化业务流程。与传统的人工分析相比,智能大数据分析具有自动化、深度挖掘、实时性和可视化等特点。智能大数据分析广泛应用于各个领域,包括金融服务、医疗健康、零售、市场营销等,帮助企业做出更为精准的决策,提升竞争力。

【GitCode】专栏资源保存在我的GitCode仓库:https://gitcode.com/Morse_Chen/Intelligent_bigdata_analysis

文章目录


一、实验目的

能够理解 Spark 存在的原因,了解 Spark 的生态圈,理解 Spark 体系架构并理解 Spark 计算模型。学会部署 Spark 集群并启动 Spark 集群,能够配置 Spark 集群使用 HDFS。

二、实验要求

要求实验结束时,每位学生均已构建出以 Spark 集群:master 上部署主服务 Master;slave1、2 上部署从服务 Worker;待集群搭建好后,还需在 master 上进行下述操作:提交并运行 Spark 示例代码 WordCount,将 master 上某文件上传至 HDFS 里刚才新建的目录。

三、实验原理

(一)Spark 简介

Spark 是一个高速的通用型集群计算框架,其内部内嵌了一个用于执行 DAG(有向无环图)的工作流引擎,能够将 DAG 类型的 Spark- App 拆分成 Task 序列并在底层框架上运行。在程序接口层,Spark 为当前主流语言都提供了编程接口,如用户可以使用 Scala、Java、Python、R 等高级语言直接编写 Spark-App。此外,在核心层之上,Spark 还提供了诸如 SQL、Mllib、GraphX、Streaming 等专用组件,这些组件内置了大量专用算法,充分利用这些组件,能够大大加快 Spark-App 开发进度。

一般称 Spark Core 为 Spark,Spark Core 处于存储层和高层组建层之间,定位为计算引擎,核心功能是并行化执行用户提交的 DAG 型 Spark-App。目前,Spark 生态圈主要包括 Spark Core 和基于 Spark Core 的独立组件(SQL、Streaming、Mllib 和 Graphx)。

(二)Spark 适用场景

(1)Spark 是基于内存的迭代计算框架,适用于需要多次操作特定数据集的应用场合。

(2)由于 RDD 的特性,Spark 不适用那种异步细粒度更新状态的应用,例如 web 服务的存储或者是增量的 web 爬虫和索引。

(3)数据量不是特别大,但是要求实时统计分析需求。

四、实验环境

虚拟机软件:VMware 16 Pro

Linux 操作系统版本:CentOS-7-64位

Java 版本:jdk1.7.0_79

Hadoop 版本:hadoop-2.7.1

五、实验内容和步骤

(一)部署 HDFS

1、配置各节点之间的免密登录,并在/etc/hosts中写好 hostname 与 IP 的对应,这样方便配置文件的相互拷贝。

(1)添加域名映射:登录到 master 服务器,使用 vi 命令编辑/etc/hosts文件。

powershell 复制代码
vi /etc/hosts

依次登录 slave1~2 服务器,重复该操作。

(2)配置 SSH 免密登录

powershell 复制代码
ssh-keygen
ssh-copy-id master
ssh-copy-id slave1
ssh-copy-id slave2

验证 master 服务器 ssh 免密登录其余服务器。

powershell 复制代码
ssh slave1
ssh slave2

其余服务器按照同样的方式配置 ssh 免密登录,完成后验证是否可以互相之间实现 SSH 免密登录。

2、因为下面实验涉及 Spark 集群使用 HDFS,所以按照之前的实验预先部署好 HDFS。

(1)具体部署 HDFS 的步骤参考:大数据存储技术(1)------ Hadoop简介及安装配置

(2)配置slaves文件,将 localhost 修改为 slave1~2:

powershell 复制代码
vi /usr/local/servers/hadoop/etc/hadoop/slaves
slave1
slave2

(3)部署完成后,拷贝集群配置至其它服务器。在 master 机上执行下列命令,将配置好的 hadoop 拷贝至 slave1~2。

powershell 复制代码
cat /usr/local/machines
for x in `cat /usr/local/machines` ; do echo $x ; scp -r /usr/local/servers/hadoop/etc $x:/usr/local/servers/hadoop ; done;

(4)启动 HDFS

在 master 服务器上格式化主节点:

powershell 复制代码
hdfs namenode -format

统一启动 HDFS:

powershell 复制代码
start-dfs.sh

通过查看进程的方式验证 HDFS 启动成功。分别在 master、slave1~2 三台机器上执行如下命令,查看 HDFS 服务是否已启动。

powershell 复制代码
jps

若启动成功,在 master 上会看到类似的如下信息:

而在 slave1、slave2 上会看到类似的如下信息:

(二)配置 Spark 集群

Spark 的安装教程可参考:Spark环境搭建和使用方法

1、在 master 机上操作:确定存在 spark。

powershell 复制代码
ls /usr/local

2、在 master 机上操作:进入/usr/local目录中。进入配置文件目录/usr/local/spark/conf, 先拷贝并修改slave.templaeslaves

powershell 复制代码
cd /usr/local/spark/conf
cp slaves.template slaves

然后用 vim 命令编辑器编辑slaves文件

powershell 复制代码
vim slaves

上述内容表示当前的 Spark 集群共有两台 slave 机,这两台机器的机器名称分别是 slave1~2。

3、在spark-conf.sh中加入JAVA_HOME

powershell 复制代码
vim /usr/local/spark/sbin/spark-config.sh

加入以下内容:export JAVA_HOME=/usr/local/servers/jdk1.7.0_79

4、将配置好的 Spark 拷贝至 slave1~2。使用 for 循环语句完成多机拷贝。

powershell 复制代码
cd /usr/local
cat machines
for x in `cat /usr/local/machines` ; do echo $x ; scp -r /usr/local/spark/ $x:/usr/local/; done;

(三)配置 HDFS

1、配置 Spark 集群使用 HDFS,首先关闭集群(在 master 上执行)。

powershell 复制代码
stop-all.sh

2、将 Spark 环境变量模板复制成环境变量文件。修改 Spark 环境变量配置文件spark-env.sh

powershell 复制代码
cd /usr/local/spark/conf
cp spark-env.sh.template spark-env.sh

sprak-env.sh配置文件中添加下列内容:export HADOOP_CONF_DIR=/usr/local/servers/hadoop/etc/hadoop

powershell 复制代码
vim spark-env.sh

3、重新启动 Spark。

powershell 复制代码
start-all.sh

(四)提交 Spark 任务

在 master 机上操作:使用 Shell 命令向 Spark 集群提交 Spark-App

1、上传in.txt文件到 HDFS。

powershell 复制代码
hadoop fs -mkdir -p /user/spark/in/
hadoop fs -put /home/chen/datasets/in.txt /user/spark/in/

2、提交 wordcount 示例代码。进入/usr/cstor/spark目录,执行如下命令:

powershell 复制代码
bin/spark-submit --master spark://master:7077 \
> --class org.apache.spark.examples.JavaWordCount \
> lib/spark-examples-1.6.0-hadoop2.6.0.jar hdfs://master:8020/user/spark/in/in.txt

六、实验结果

1、进程查看

在 master 和 slave1-2 上分别执行 jps 命令查看对应进程。master 中进程为 Master,slave 机进程为 Worker。

2、验证 WebUI

在本地浏览器中输入 master 的 IP 和端口号 8080,即可看到 Spark 的 WebUI。此页面包含了 Spark 集群主节点、从节点等各类统计信息。

3、SparkWordcount 程序执行

输入:in.txt

输出:

WebUI 中 Application 的详细信息:

七、实验心得

首先,环境搭建是关键。在部署 Spark 集群之前,我花了不少时间配置 Hadoop 和 Spark 的环境,包括安装 Java、Hadoop 和 Spark 等。通过参考官方文档和社区资源,我逐步克服了各种依赖问题。值得注意的是,确保各个节点的时间同步非常重要,这可以避免因时间差异引发的一些错误。

其次,集群管理与监控至关重要。在部署完成后,我学习了如何使用 Spark 的 Web UI 进行任务监控。这让我对作业的执行过程有了更直观的了解,比如任务的运行时间、资源使用情况等。此外,结合 Hadoop 的 YARN 资源管理器,可以更加有效地分配资源,提高集群的整体性能。

在实验中,我体验到了分布式计算的优势。通过将数据分片分配到不同的工作节点上,Spark 能够并行处理大量数据,大幅提高了计算效率。我实现了一些基本的数据处理任务,比如数据过滤、聚合等,观察到处理速度相较于单机模式有了显著提升。

总结来说,这次 Spark 集群部署实验让我对大数据处理技术有了更深入的理解。从环境搭建到任务执行,再到性能优化,每一步都让我感受到分布式计算的魅力。未来,我期待将这些知识应用于实际项目中,进一步探索大数据的无限可能。

:以上文中的数据文件及相关资源下载地址:

链接:https://pan.quark.cn/s/b6f54909c9c7

提取码:Latg

相关推荐
Data跳动2 小时前
Spark内存都消耗在哪里了?
大数据·分布式·spark
落魄君子2 小时前
GA-BP分类-遗传算法(Genetic Algorithm)和反向传播算法(Backpropagation)
算法·分类·数据挖掘
落魄君子2 小时前
ELM分类-单隐藏层前馈神经网络(Single Hidden Layer Feedforward Neural Network, SLFN)
神经网络·分类·数据挖掘
woshiabc1113 小时前
windows安装Elasticsearch及增删改查操作
大数据·elasticsearch·搜索引擎
lucky_syq3 小时前
Saprk和Flink的区别
大数据·flink
lucky_syq3 小时前
流式处理,为什么Flink比Spark Streaming好?
大数据·flink·spark
袋鼠云数栈3 小时前
深入浅出Flink CEP丨如何通过Flink SQL作业动态更新Flink CEP作业
大数据
Java程序之猿3 小时前
微服务分布式(一、项目初始化)
分布式·微服务·架构
清平乐的技术专栏3 小时前
Hive SQL 查询所有函数
hive·hadoop·sql
来一杯龙舌兰4 小时前
【RabbitMQ】RabbitMQ保证消息不丢失的N种策略的思想总结
分布式·rabbitmq·ruby·持久化·ack·消息确认