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

news2024/9/28 16:44:30

在这里插入图片描述

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

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.coloradmin.cn/o/2174117.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

网易云多久更新一次ip属地

‌在数字化时代,网络成为了我们日常生活中不可或缺的一部分。无论是社交娱乐还是工作学习,IP地址作为网络身份的象征,都扮演着重要的角色。对于网易云音乐这样的热门应用来说,IP属地的显示不仅关乎用户体验,也涉及用户…

Supervisor进程管理工具安装

Supervisor进程管理工具安装 一、Supervisor概况及作用1.概况2.主要作用1)、进程管理(1). 启动与停止进程(2). 自动重启进程(3). 进程状态监控 2)、日志管理(1).集中化日志记录 3)、资源管理与优化(1). 控制进程资源使用 二.安装 Supervisor1…

小白学大模型RAG:十大步骤分析GraphRAG的工作原理

对于普通的RAG,也就是前面课程讲的RAG,它的原理是通过将文本进行切分和向量化,通过计算文本之间的向量相似度,从而得到两个文本之间的语义相似度,从知识库中找出跟问题语义相似的知识点,再送给LLM得出最终答…

学习Java (五)

1.学习封装 package com.msb.test07; //封装 public class Girl {private int age; // 赋值public void setAge(int age){if(age > 30){this.age 18;}else{this.age age;}} // 读取public int getAge(){return age;} }package com.msb.test07;public class Test {p…

【Linux 报错】“make: ‘xxxx‘ is up to date.” 解决办法

一、报错原因 我们使用 make 命令,想要将 text.c 文件编译形成 可执行文件 text 时,报错如下 make: test is up to date. 中文含义:test 文件已经达到最新状态 意思是: test.c 文件里面的 所有源代码都没有修改过,你…

c++11~c++20 numeric_limits

在c中应该尽量少使用宏&#xff0c;用模板取而代之是明知的选择。我们可以使用numeric_limits来获取最大值和最小值&#xff0c;例如 #include <iostream> #include <limits> #include <iostream> using namespace std;int main() {cout << "int…

Go基础学习04-变量重声明;类型转换;类型断言;Unicode代码点;类型别名;潜在类型

目录 变量重声明 类型断言 类型转换 类型转换注意事项 Unicode代码点 类型别名、潜在类型 类型别名的意义 变量重声明 编写代码&#xff1a; package mainimport "fmt"var container []string{"Beijing", "Shanghai"}func main() {fmt.Pr…

Qt开发技巧(八)自带对话框的美化,内置快捷代码段,巧用匿名槽函数,另类动态换肤,资源动态加载

继续讲一些Qt开发中的技巧操作&#xff1a; 1.自带对话框的美化 Qt中有一些自带的对话框&#xff0c;比如文件选择对话框&#xff0c;颜色选择对话框等等&#xff0c;这些对话框看着跟系统的对话框没太大差别&#xff0c;实际这是Qt有意为之&#xff0c;为的是跟系统保持一致。…

欺诈文本分类检测(十七):支持分类原因训练

1. 引言 前文数据校正与增强进行了数据增强&#xff0c;本文将使用增强后的数据对模型进行进一步训练&#xff0c;以便得到能同时预测出分类标签、欺诈者、分类原因多个信息的模型。 为此&#xff0c;我们需要对整个训练过程进行调整&#xff0c;包括&#xff1a; 交叉训练逻…

苹果端侧AI布局深度分析

苹果 - 国际巨头的端侧 AI布局 深度分析 1.1.1 苹果AI&#xff1a;模型侧&#xff1a;MM1 3月&#xff0c;苹果发布多模态大模型MM1&#xff0c;拥有高达300亿参数。MM1融合密集模型与MoE变体&#xff0c;涵盖300亿、70亿、30亿参数版。MM1预训练指标领先&#xff0c;在多个多…

ubuntu 安装k8s

#关闭 Swap 内存&#xff0c;配置完成建议重启一下 nano /etc/fstab #注释下面相似的一行 #/swapfile none swap sw 0 0 #重启 reboot#部属k8s apt update && apt install -y apt-transport-https 下载 gpg 密钥 curl https://mi…

基于SpringBoot+Vue的高校实习管理系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码 精品专栏&#xff1a;Java精选实战项目…

一次眼睛受损然后恢复的过程

由于多年没有社交比较宅,多年长期盯着电脑和手机,没有保护好眼睛 之前早上醒来有一段时间我眼睛老是分泌各种乱起八遭的东西,导致我眼睛看不清, 2023年3月有天的早上,我又不小心眼睛揉出血了,出门上班路上的时候才知道有这个问题,第二天早上就挂了去了眼科,医生给我开了如下的药…

单细胞转录组|scATAC-seq 数据整合

引言 本文在此展示了如何将多个源自人类外周血单核细胞的单细胞染色质数据集进行整合。其中一个数据集是通过10x Genomics的多组学技术获得的&#xff0c;它涵盖了每个细胞的DNA可及性和基因表达数据。另一个数据集则是通过10x Genomics的单细胞ATAC测序(scATAC-seq)技术得到的…

Mybatis-Plus自动填充时间的配置类

引言&#xff1a;在现代软件开发中&#xff0c;数据库操作是不可或缺的一部分。为了确保数据的准确性和完整性&#xff0c;我们常常需要在数据库记录中添加时间戳&#xff0c;例如创建时间和更新时间。MyBatis-Plus作为一个流行的持久层框架&#xff0c;提供了灵活的机制来实现…

官方权威解读|CNAS-CL01计量溯源性部分解读,供CNAS软件测试实验室参考

CNAS-CL01《检测和校准实验室能力认可准则》是软件测试实验室申请CNAS资质&#xff0c;建设符合CNAS要求的实验室质量管理体系时必须要参考的一部强制性准则。CNAS-CL01一共分为五大核心部分&#xff1a;通用要求、结构要求、资源要求、过程要求和管理体系要求。前面的文章中我…

【零散技术】微信支付保姆教程(一)

序言:时间是我们最宝贵的财富,珍惜手上的每个时分 微信支付十余年&#xff0c;早已成为国内必不可少的支付工具。但是开发对接中 繁杂的各类参数与文档&#xff0c;以及各种证书的申请&#xff0c;着实也成了不少开发者的噩梦&#xff0c;那么今天我们来看看&#xff0c;如何申…

3-3 AUTOSAR RTE 对SR Port的作用

返回总目录->返回总目录<- 一、前言 RTE作为SWC和BSW之间的通信机构,支持Sender-Receiver方式实现ECU内及ECU间的通信。 对于Sender-Receiver Port支持三种模式: 显式访问:若运行实体采用显示模式的S/R通信方式,数据读写是即时的;隐式访问:当多个运行实体需要读取…

小阿轩yx-案例:代码管理系统简介与部署

小阿轩yx-案例&#xff1a;代码管理系统简介与部署 前言 开发一个项目时&#xff0c;如果只有几十行代码或几百行代码时维护还算简单&#xff0c;但是代码数量达到一定程度或两三个人共同开发一个项目时&#xff0c;就很容易会出现代码混乱、冲突、排错难等问题。代码编写完成…

vue3中< keep-alive >页面实现缓存及遇到的问题

vue3中< keep-alive >页面实现缓存及遇到的问题 实现原理&#xff1a;keep-alive 是 Vue 的内置组件&#xff0c;当它包裹动态组件时&#xff0c;会缓存不活动的组件实例&#xff0c;而不是销毁它们。实现不同路由是否缓存只需要设置对应路由参数keepAlive为true&#xf…