前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >【智能大数据分析 | 实验二】Spark实验:部署Spark集群

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

作者头像
Francek Chen
发布2025-01-22 23:10:05
发布2025-01-22 23:10:05
8100
代码可运行
举报
运行总次数:0
代码可运行

智能大数据分析是指利用先进的技术和算法对大规模数据进行深入分析和挖掘,以提取有价值的信息和洞察。它结合了大数据技术、人工智能(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)数据量不是特别大,但是要求实时统计分析需求。

四、实验环境

  • 云创大数据实验平台:
  • Java 版本:jdk1.7.0_79
  • Hadoop 版本:hadoop-2.7.1
  • Spark 版本:spark-1.6.0

五、实验内容和步骤

(一)部署 HDFS

1、配置各节点之间的免密登录,具体步骤参考:【大数据技术基础 | 实验一】配置SSH免密登录

2、因为下面实验涉及 Spark 集群使用 HDFS,所以按照之前的实验预先部署好 HDFS。具体部署 HDFS 的步骤参考:【大数据技术基础 | 实验三】HDFS实验:部署HDFS

3、验证HDFS启动成功:分别在 master、slave1~2 三台机器上执行如下命令,查看 HDFS 服务是否已启动。

代码语言:javascript
代码运行次数:0
复制
jps

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

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

(二)配置 Spark 集群

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

代码语言:javascript
代码运行次数:0
复制
ls /usr/cstor

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

代码语言:javascript
代码运行次数:0
复制
cd /usr/cstor/spark/conf
cp slaves.template slaves

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

代码语言:javascript
代码运行次数:0
复制
vim slaves

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

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

代码语言:javascript
代码运行次数:0
复制
vim /usr/cstor/spark/sbin/spark-config.sh

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

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

代码语言:javascript
代码运行次数:0
复制
cd /root/data/2
cat machines
for x in `cat /root/data/2/machines` ; do echo $x ; scp -r /usr/cstor/spark/ $x:/usr/cstor/; done;

5、在 master 机上操作:启动 Spark 集群。

代码语言:javascript
代码运行次数:0
复制
/usr/cstor/spark/sbin/start-all.sh

在 slave1~2 上查看进程:

(三)配置 HDFS

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

代码语言:javascript
代码运行次数:0
复制
/usr/cstor/spark/sbin/stop-all.sh

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

代码语言:javascript
代码运行次数:0
复制
cd /usr/cstor/spark/conf
cp spark-env.sh.template spark-env.sh

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

代码语言:javascript
代码运行次数:0
复制
vim spark-env.sh

3、重新启动 Spark。

代码语言:javascript
代码运行次数:0
复制
/usr/cstor/spark/sbin/start-all.sh
(四)提交 Spark 任务

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

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

代码语言:javascript
代码运行次数:0
复制
hadoop fs -mkdir -p /user/spark/in/
hadoop fs -put /root/data/13/in.txt /user/spark/in/

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

代码语言:javascript
代码运行次数:0
复制
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/43cf46ec0d4d 提取码:SwUU

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-12-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、实验目的
  • 二、实验要求
  • 三、实验原理
    • (一)Spark 简介
    • (二)Spark 适用场景
  • 四、实验环境
  • 五、实验内容和步骤
    • (一)部署 HDFS
    • (二)配置 Spark 集群
    • (三)配置 HDFS
    • (四)提交 Spark 任务
  • 六、实验结果
  • 七、实验心得
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档