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

在这里插入图片描述

【作者主页】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

在这里插入图片描述

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

(2)配置 SSH 免密登录

ssh-keygen
ssh-copy-id master
ssh-copy-id slave1
ssh-copy-id slave2

在这里插入图片描述

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

ssh slave1
ssh slave2

在这里插入图片描述

其余服务器按照同样的方式配置 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

在这里插入图片描述

(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;

在这里插入图片描述

(4)启动 HDFS

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

hdfs namenode -format

统一启动 HDFS:

start-dfs.sh

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

jps

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

在这里插入图片描述

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

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

(二)配置 Spark 集群

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

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

ls /usr/local

在这里插入图片描述

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

cd /usr/local/spark/conf
cp slaves.template slaves

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

vim slaves

在这里插入图片描述

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

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

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

加入以下内容: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;

在这里插入图片描述

(三)配置 HDFS

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

stop-all.sh

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

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

vim spark-env.sh

在这里插入图片描述

3、重新启动 Spark。

/usr/local/servers/hadoop/sbin/start-all.sh
/usr/local/spark/sbin/start-all.sh

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

(四)提交 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/

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、进程查看

在 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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/887032.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

如何编写一个优雅的commit message

在Git中,git commit 命令扮演着至关重要的角色。它的主要作用是将暂存区(staging area)里的改动内容提交到本地仓库(repository)中,形成一个新的版本或提交(commit)。这个过程是 Git…

【HarmonyOS】时间处理Dayjs

背景 在项目中经常会使用要时间的格式转换,比如数据库返回一个Date数据,你需要转成2024-10-2的格式,鸿蒙的原生SDK中是没有办法实现的,因此,在这里介绍第三方封装好并且成熟使用的库Dayjs。 安装 切换到Entry文件夹下…

【学习资源】人在环路的机器学习

说明:本文图片和内容来源 Human-in-the-Loop Machine Learning Human-in-the-Loop Machine Learning Active learning and annotation for human-centered AI by Robert (Munro) Monarch, June 2021 介绍Human-in-the-Loop的目标,学习过程&#xff0c…

gdb 调试 linux 应用程序的技巧介绍

使用 gdb 来调试 Linux 应用程序时,可以显著提高开发和调试的效率。gdb(GNU 调试器)是一款功能强大的调试工具,适用于调试各类 C、C 程序。它允许我们在运行程序时检查其状态,设置断点,跟踪变量值的变化&am…

基于Arduino的宠物食物分配器

创作本文的初衷是本人的一个养宠物的梦想(因为家里人对宠物过敏,因此养宠物的action一直没有落实),但是梦想总是要有的哈哈哈哈哈。上周正好是和一个很好的朋友见面,聊到了养宠物的事情,她大概是讲到了喂宠…

震撼!工业史上第一家万级别规模的工业数字化设备效果图平台

耗时八年打造,国内第一家万级别规模的工业数字化设备效果图平台 平台:www.kingview3d.cn 创作者:kingview3d郭工 行业:煤矿综合自动化、污水处理、净水处理、楼宇暖通、环保工程、医药废水处理、二供、无负压加压站、提升泵站、一…

《NoSQL》非关系型数据库MongoDB 学习笔记!

Mongo基础: 使用数据库: 使用use 命令 后面跟着要使用的数据库名字即可, 例如:use cities, 值得注意的是, mongo中不像mysql, 还需要先创建数据库,后访问, mongo中,你无…

【WebGis开发 - Cesium】如何确保Cesium场景加载完毕

目录 引言一、监听场景加载进度1. 基础代码2. 加工代码 二、进一步封装代码1. 已知存在的弊端2. 封装hooks函数 三、使用hooks方法1. 先看下效果2. 如何使用该hooks方法 三、总结 引言 本篇为Cesium开发的一些小技巧。 判断Cesium场景是否加载完毕这件事是非常有意义的。 加载…

在 Elasticsearch Serverless 上使用 Eland

作者:来自 Elastic Quentin Pradet 本博客将向你展示如何使用 Eland 将机器学习模型导入 Elasticsearch Serverless,然后如何使用类似 Pandas 的 API 探索 Elasticsearch。 Elasticsearch Serverless 中的 NLP 自 Elasticsearch 8.0 起,可以…

SQL专项练习第二天

在数据处理和分析中,Hive 是一个强大的工具。本文将通过五个 Hive 相关的问题展示其在不同场景下的应用技巧。 先在home文件夹下建一个hivedata文件夹,把我们所需的数据写成txt文件导入到/home/hivedata/文件夹下面。 一、找出连续活跃 3 天及以上的用户…

【AI论文精读1】针对知识密集型NLP任务的检索增强生成(RAG原始论文)

目录 一、简介一句话简介作者、引用数、时间论文地址开源代码地址 二、摘要三、引言四、整体架构(用一个例子来阐明)场景例子:核心点: 五、方法 (架构各部分详解)5.1 模型1. RAG-Sequence Model2. RAG-Toke…

Python+Matplotlib创建y=sinx、y=cosx、y=sinx+cosx可视化

y sin x (奇函数): 图像关于原点对称。 对于任何 x,sin(-x) -sin(x),符合奇函数定义。 y cos x (偶函数): 图像关于 y 轴对称。 对于任何 x,cos(-x) cos(x),符合偶函数定义。 y sin x cos x (既…

安全帽头盔检测数据集 3类 12000张 安全帽数据集 voc yolo

安全帽头盔检测数据集 3类 12000张 安全帽数据集 voc yolo 安全帽头盔检测数据集介绍 数据集名称 安全帽头盔检测数据集 (Safety Helmet and Person Detection Dataset) 数据集概述 该数据集专为训练和评估基于YOLO系列目标检测模型(包括YOLOv5、YOLOv6、YOLOv7…

LabVIEW机床加工监控系统

随着制造业的快速发展,机床加工的效率与稳定性成为企业核心竞争力的关键。传统的机床监控方式存在效率低、无法远程监控的问题。为了解决这些问题,开发了一种基于LabVIEW的机床加工监控系统,通过实时监控机床状态,改进生产流程&am…

Spring MVC__入门

目录 一、SpringMVC简介1、什么是MVC2、什么是SpringMVC 二、Spring MVC实现原理2.1核心组件2.2工作流程 三、helloworld1、开发环境2、创建maven工程3、配置web.xml4、创建请求控制器5、创建springMVC的配置文件6、测试HelloWorld7、总结 一、SpringMVC简介 1、什么是MVC MV…

html5 + css3(上)

目录 HTML初识基础认知web标准vscode的简介和使用注释 HTML标签学习排版标签标题和段落换行和水平线标签 文本格式化标签媒体标签图片标签图片-基本使用图片-属性 路径绝对路径相对路径 音频标签视频标签链接标签 HTML基础列表标签列表-无序和有序列表-自定义 表格标签表格-使用…

【JAVA开源】基于Vue和SpringBoot的周边产品销售网站

本文项目编号 T 061 ,文末自助获取源码 \color{red}{T061,文末自助获取源码} T061,文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析 六、核心代码6.1 查…

Java网络通信—UDP

0.小记 1.udp通信不需要建立socket管道,一边只管发,一边只管收 2.客户端:将数据(byte)打包成包裹(DatagramPacket),写上地址(IP端口),通过快递站&…

【HTML并不简单】笔记1-常用rel总结:nofollow、noopener、opener、noreferrer,relList

文章目录 rel"nofollow"rel"noopener"与rel"opener"rel"noreferrer"relList对象 《HTML并不简单:Web前端开发精进秘籍》张鑫旭,一些摘要: HTML,这门语言的知识体系非常庞杂,涉…

Nagle 算法:优化 TCP 网络中小数据包的传输

1. 前言 在网络通信中,TCP(传输控制协议)是最常用的协议之一,广泛应用于各种网络应用,如网页浏览、文件传输和在线游戏等。然而,随着互联网的普及,小数据包的频繁传输成为一个不容忽视的问题。…