首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

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

  • 25-03-03 09:40
  • 3052
  • 10944
blog.csdn.net

在这里插入图片描述

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

文章目录

    • 一、实验目的
    • 二、实验要求
    • 三、实验原理
      • (一)Spark 简介
      • (二)Spark 适用场景
    • 四、实验环境
    • 五、实验内容和步骤
      • (一)部署 HDFS
      • (二)配置 Spark 集群
      • (三)配置 HDFS
      • (四)提交 Spark 任务
    • 六、实验结果
    • 七、实验心得


一、实验目的

能够理解 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文件。

vi /etc/hosts
  • 1

在这里插入图片描述

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

(2)配置 SSH 免密登录

ssh-keygen
ssh-copy-id master
ssh-copy-id slave1
ssh-copy-id slave2
  • 1
  • 2
  • 3
  • 4

在这里插入图片描述

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

ssh slave1
ssh slave2
  • 1
  • 2

在这里插入图片描述

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

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

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

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

vi /usr/local/servers/hadoop/etc/hadoop/slaves
slave1
slave2
  • 1
  • 2
  • 3

在这里插入图片描述

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

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;
  • 1
  • 2

在这里插入图片描述

(4)启动 HDFS

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

hdfs namenode -format
  • 1

统一启动 HDFS:

start-dfs.sh
  • 1

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

jps
  • 1

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

在这里插入图片描述

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

在这里插入图片描述 在这里插入图片描述

(二)配置 Spark 集群

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

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

ls /usr/local
  • 1

在这里插入图片描述

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

cd /usr/local/spark/conf
cp slaves.template slaves
  • 1
  • 2

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

vim slaves
  • 1

在这里插入图片描述

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

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

vim /usr/local/spark/sbin/spark-config.sh
  • 1

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

在这里插入图片描述

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

cd /usr/local
cat machines
for x in `cat /usr/local/machines` ; do echo $x ; scp -r /usr/local/spark/ $x:/usr/local/; done;
  • 1
  • 2
  • 3

在这里插入图片描述

(三)配置 HDFS

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

stop-all.sh
  • 1

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

cd /usr/local/spark/conf
cp spark-env.sh.template spark-env.sh
  • 1
  • 2

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

vim spark-env.sh
  • 1

在这里插入图片描述

3、重新启动 Spark。

start-all.sh
  • 1

在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

(四)提交 Spark 任务

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

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

hadoop fs -mkdir -p /user/spark/in/
hadoop fs -put /home/chen/datasets/in.txt /user/spark/in/
  • 1
  • 2

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

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
  • 2
  • 3

六、实验结果

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

文章知识点与官方知识档案匹配,可进一步学习相关知识
云原生入门技能树首页概览20242 人正在系统学习中
学习交流 | 商务合作 (备注来意)
微信名片
注:本文转载自blog.csdn.net的Francek Chen的文章"https://blog.csdn.net/Morse_Chen/article/details/142578290"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

101
推荐
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2025 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top