【作者主页】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
文件。
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` ;doecho$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.templae
为
slaves
。
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` ;doecho$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
版权归原作者 Francek Chen 所有, 如有侵权,请联系我们删除。