Hadoop+Spark 笔记 2025/4/21

读书笔记

定义

1. 大数据(Big Data)
   - 指传统数据处理工具难以处理的海量、高速、多样的数据集合,通常具备3V特性(Volume体量大、Velocity速度快、Variety多样性)。扩展后还包括Veracity(真实性)和Value(价值)。

2. Hadoop
   - 一个开源的分布式计算框架,用于存储和处理大规模数据集。核心组件包括HDFS(存储)和MapReduce(计算),具有高容错性横向扩展能力。

3. HDFS(Hadoop Distributed File System)
   - Hadoop的分布式文件系统,设计用于**廉价硬件集群**。特点:
     - 分块存储(默认128MB/块)
     - 多副本机制(默认3副本)
     - 主从架构(NameNode管理元数据,DataNode存储实际数据)

4. MapReduce
   - 一种批处理编程模型,分为两个阶段:
     - Map阶段:将任务分割成更小任务交给每台服务器分别运行,也就是并行处理输入数据(映射)
     - Reduce阶段:聚合Map结果(归约)
   - 适合离线大规模数据处理,但磁盘I/O开销较大。

5. Spark
   - 基于内存的分布式计算引擎,相比MapReduce优势:
     - 内存计算(比Hadoop快10-100倍)
     - 支持DAG(有向无环图)优化执行计划
     - 提供SQL、流处理、图形处理、机器学习等统一API(Spark SQL/Streaming/GraphX/MLlib)

6. 机器学习(Machine Learning)
   - 通过算法让计算机从数据中自动学习规律并做出预测/决策,主要分为:
     - 监督学习(如分类、回归)
     - 无监督学习(如聚类、降维)
     - 强化学习(通过奖励机制学习)

关键区别:Hadoop基于磁盘批处理,Spark基于内存迭代计算,机器学习则是数据分析的高级应用方法。

安装Hadoop

1.虚拟机软件安装(搭建Hadoop cluster集群时需要很多台虚拟机)

2.安装Ubuntu操作系统(hadoop最主要在Linux操作系统环境下运行)

3.安装Hadoop Single Node Cluster(只以一台机器来建立Hadoop环境)

  1. 安装JDK(Hadoop是java开发的,必须先安装JDK)
  2. 设置SSH无密码登录(Hadoop必须通过SSH与本地计算机以及其他主机连接,所以必须设置SSH)
  3. 下载安装Hadoop(官网下载Hadoop,安装到Ubuntu中)
  4. 设置Hadoop环境变量(设置每次用户登录时必须要设置的环境变量)
  5. Hadoop配置文件的设置(在Hadoop的/usr/local/hadoop/etc/hadoop的目录下,有很多配置设置文件)
  6. 创建并格式化HDFS目录(HDFS目录是存储HDFS文件的地方,在启动Hadoop之前必须先创建并格式化HDFS目录)
  7. 启动Hadoop(全部设置完成后启动Hadoop,并查看Hadoop相关进程是否已经启动)
  8. 打开Hadoop Web界面(Hadoop界面可以查看当前Hadoop的状态:Node节点、应用程序、任务运行状态)

常用命令:

启动HDFS

start-dfs.sh

启动YARN(启动Hadoop MapReduce框架YARN)

start-yarn.sh

同时启动HDFS和YARN

start-all.sh

使用jps查看已经启动的进程(查看NameNode、DataNode进程是否启动)

PS:因为只有一台服务器,所以所有功能都集中在一台服务器中,可以看到:

  • HDFS功能:NameNode、Secondary NameNode、DataNode已经启动
  • MapReduce2(YARN):Resource Manager、NodeManager已经启动
jps

监听端口上的网络服务:

打开Hadoop Resource-Manager Web界面

http://localhost:8088/

 NameNode HDFS Web界面

http://localhost:50070/

4.Hadoop Multi Node Cluster的安装(至少有四台服务器,才能发挥多台计算机并行的优势。不过我只有一个电脑,只能创建四台虚拟主机演练)

Hadoop的基本功能

1.HDFS

常用HDFS命令:

HDFS 常见命令 -CSDN博客

回头再写那些常用命令

2.MapReduce

批处理为主。

首先使用Map将待处理的数据分割成很多的小份数据,由每台服务器分别运行。

再通过Reduce程序进行数据合并,最后汇总整理出结果。

单词计数

Spark 

Spark的Cluster模式架构图👇

  • 安装Spark
  • 安装Scale
  • 启动spark-shell交互界面
  • 启动Hadoop(start-all.sh命令)
  • 本地运行spark-shell(比如spark-shell --master local[4]->读取本地文件->读取HDFS文件)
  • 在Hadoop YARN运行spark-shell(spark可以在Hadoop YARN上运行,让Yarn帮助它进行多台机器资源的管理。在Hadoop Yarn运行spark-shell->读取本地文件->读取HDFS文件->在Hadoop Web界面可以查看spark-shell APP,8080端口)
  • 构建Spark Standalone Cluster执行环境(在master虚拟机设置spark-env.sh->复制spark程序到data1、data2、data3->在master虚拟机编辑slaves文件)
  • 在Spark Standalone运行spark-shell(启动Spark Standalone Cluster也就是start-all.sh->在Spark Standalone运行Spark-shell->Spark Standalone Web UI界面->读取本地文件->读取HDFS文件->停止Spark stand alone cluster)

Spark本身是以Scala开发的,所以先安装Scala。试着安装在master虚拟机上。

安装:官网下载->解压缩并移动->配置环境变量->启动

PS:spark-shell默认显示很多信息,可以自己手动改,让它只显示警告信息。(cp复制log4j.properties.template模板到log4j.properties)👇

spark-shell --master local[4] 其中local[N]表示本地运行,使用N个线程,也就是说可以同时执行N个程序。

读取本地文件👇

读取HDFS文件👇

Spark的基本功能

1.RDD的特性

spark的核心是RDD(弹性分布式数据集),属于一种分布式的内存系统的数据集应用,RDD也是spark的主要优势。

RDD能与其他系统兼容,可以导入外部存储系统的数据集,如HDFS、Hbase或其他Hadoop数据源。

RDD的三种基本运算:转换Transformation、动作Action、持久化Persistence

2.基本RDD“转换”运算

  • 先进入spark-shell
  • 创建intRDD
  • 创建stringRDD
  • map运算
  • map字符串运算
  • filter数字运算
  • filter字符串运算
  • distinct运算
  • randomSplit运算
  • groupBy运算

命令就不写了,下面也是

3.多个RDD“转换”运算

  • 先创建3个RDD来示范
  • union并集运算
  • intersection交集运算
  • subtract差集运算
  • cartersian笛卡尔乘积运算

4.基本“动作”运算

  • 读取元素
  • 统计功能

5.RDD Key-Value基本“转换”运算

  • 创建范例Key-Value RDD
  • 列出keys值
  • 列出values值
  • 使用filter筛选key运算
  • 使用filter筛选value运算
  • mapValues运算
  • sortByKey从小到大按照key排序
  • sortByKey从大到小按照key排序
  • reduceByKey(如(3,4)(3,5)(1,1)相同key进行合并(3,9)(1,1))

6.多个RDD Key-Value“转换”运算

  • 创建Key-Value RDD范例
  • Key-Value RDD join运算
  • Key-Value leftOuterJoin运算
  • Key-Value rightOuterJoin运算
  • Key-Value subtractByKey运算

7.Key-Value“动作”运算

  • Key-Value first运算
  • 读取第一条数据的元素
  • Key-Value countByKey运算
  • Key-Value collectAsMap运算
  • 使用对照表转换数据

8.Broadcast广播变量

9.accumulator累加器

共享变量包括:

  • Broadcast广播变量
  • accumulator累加器

10.RDD Persistence持久化

Spark RDD持久化机制,可以用于将需要重复运算的RDD存储在内存中,以便大幅提升运算效率。

使用方法:

  • RDD.persist()——可指定存储等级
  • RDD.unpersist()——取消持久化

11.用Spark创建WordCount

  1. 创建测试文件(mkdir -p ~workspace/WordCount/data,cd到刚刚创建的文件夹,编辑test.txt)
  2. 进入spark-shell(~workspace/WordCount/data下输入spark-shell)
  3. 执行WordCount spark命令
  4. 查看data目录(ll)
  5. 查看output目录(cd output,ll,因为结果保存在/data/output)
  6. 查看part-00000输出文件(cat part-00000)

Spark的集成开发环境

使用eclipse集成开发环境(IDE)开发Spark应用程序。

  1. 下载与安装eclipse Scala IDE,安在master服务器上
  2. 下载项目所需要的Library
  3. 启动eclipse
  4. 创建新的Spark项目(要添加外部Jar或者创建后像第五步一样添加,设置scala library版本)
  5. 设置项目链接库
  6. 新建scala程序
  7. 创建WordCount测试文本文件
  8. 创建WordCount.scala
  9. 编译WordCount.scala程序
  10. 运行Word.scala程序
  11. 导出jar文件
  12. spark-submit介绍
  13. 在本地local模式运行WordCount程序(记得删除之前的/data/output目录,切换到WordCount目录,本地运行WordCount——spark-submit...代码巴拉巴拉,查看结果/data/output里)
  14. 在Hadoop yarn-client运行WordCount程序(介绍如何用spark-submit,在Hadoop YARN上运行WordCount Spark程序:启动集群start-all.sh->在HDFS创建data目录,复制LICENSE.txt文件到HDFS,查看HDFS->修改环境配置文件bashrc并使其生效->切换到WordCount项目目录,在Hadoop YARN上运行WordCount(spark-submit),查看HDFS产生的目录和文件,看完删除,因为一会还要测试)
  15. 在Spark Standalone Cluster上运行WordCount程序(仍然是启动Standalone Cluster->运行程序->看结果)

机器学习(推荐引擎)

几个概念和目录,实战。简写,主播也第一次学

  1. 推荐算法是啥
  2. 推荐引擎在大数据分析的几个使用场景:电影推荐
  3. ALS推荐算法
  4. ml-100k推荐数据(一个数据集)的下载
  5. 使用spark-shell导入ml-100k数据
  6. 查看导入的数据
  7. 使用ALS.train训练(ALS.train命令)
  8. 使用模型进行推荐
  9. 显示推荐电影名
  10. 创建Recommend项目(刚刚是用spark-shell学习的,它的缺点是无法重复使用,这次启动eclipse演示:启动eclipse->创建Recommend项目->创建Recommend.scala文件->起个名字吧->创建完成的Scala程序,接下来开始输入程序代码)
  11. Recommend.scala程序代码(Import导入链接库->main主函数代码(数据准备、训练、推荐)->SetLogger可设置不显示log信息)
  12. 创建PrepareData()数据准备(创建PrepareData()函数->创建用户评分数据->创建电影ID与名称对照表->显示数据记录数)
  13. recommend()推荐程序代码(recommend()推荐程序代码、RecommendMovies()针对此用户推荐电影)
  14. 运行Recommend.scala
  15. 创建AIsEvaluation.scala调校推荐引擎参数(前面使用的ALS.train命令训练,会返回model训练完成的模型,其中rank、Iterations、lambda这些参数值的设置会影响结果的准确度,以及训练所需的时间。接下来将进行调校找出最佳的参数组合)
  16. 创建PrepareData()数据准备(共有4步,前3部与Recommend.scala完全相同:1.创建用户评分数据;2.创建电影ID与名称对照表;3.显示数据记录数;4.以随机方式将数据分为3个部分并且返回(以8:1:1比例分成训练数据、验证数据、测试数据))
  17. 进行训练评估(1.train Validation训练评估:评估rank参数、评估numIterations参数、评估lambda参数、所有参数交叉评估。2.evaluateParamter评估单个参数。3.Chart.plotBarLineChart绘制出柱形图与折线图。4.trainModel训练模型。5.计算RMSE,表示预测与实际的误差平均值,通常RMSE越小误差越小。6.evaluateAllParameter程序将三个参数交叉评估找出最好的参数组合)
  18. 运行AlsEvaluation(运行AlsEvaluation,评估rank参数,评估lambda参数、所有参数交叉评估找出最好的参数组合)
  19. 修改Recommend.scala为最佳参数组合(刚刚我们已经找出了最佳参数组合)

机器学习(二元分类)

机器学习(多元分类)

机器学习(回归分析)

数据可视化

使用Apache Zeppelin数据可视化。

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

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

相关文章

femap许可不足如何解决

在复杂的工程仿真领域,Femap以其强大的功能和广泛的应用场景而备受青睐。然而,随着用户需求的增长和项目规模的扩大,Femap许可不足的问题逐渐凸显,成为了许多工程师和团队面临的挑战。本文将为您详细解析Femap许可不足的原因&…

【Microsoft Store 中的软件推荐】

目录: 😀 TranslucentTB😀 Snipaste😀 Watt Toolkit😀 NVIDIA Control Panel😀 Typedown 微软应用商店中的软件会直接安装在C盘,所以,下面分享的这些是即超级好用,又占用…

AOSP Android14 Launcher3——RecentsView最近任务数据加载

最近任务是Launcher中的一个重要的功能,显示用户最近使用的应用,并可以快速切换到其中的应用;用户可以通过底部上滑停顿进入最近任务,也可以在第三方应用底部上滑进最近任务。 这两种场景之前的博客也介绍过,本文就不…

Flink介绍——实时计算核心论文之Flink论文

引入 通过前面的文章,我们梳理了大数据流计算的核心发展脉络: S4论文详解S4论文总结Storm论文详解Storm论文总结Kafka论文详解Kafka论文总结MillWheel论文详解MillWheel论文总结Dataflow论文详解Dataflow论文总结 而我们专栏的主角Flink正是站在前人的…

极狐GitLab CEO 柳钢受邀出席 2025 全球机器学习技术大会

极狐GitLab 是 GitLab 在中国的发行版,关于中文参考文档和资料有: 极狐GitLab 中文文档极狐GitLab 中文论坛极狐GitLab 官网 2025 年 4 月 18 日至 19 日,2025 全球机器学习技术大会(ML-Summit 2025)在上海隆重举行。…

Linux Sed 深度解析:从日志清洗到 K8s 等12个高频场景

看图猜诗,你有任何想法都可以在评论区留言哦~ 摘要:Sed(Stream Editor)作为 Linux 三剑客之一,凭借其流式处理与正则表达式能力,成为运维场景中文本批处理的核心工具。本文聚焦生产环境高频需求&#xff…

C++ STL 容器简介(蓝桥杯适用精简版)

C的万能头文件是&#xff1a; #include <bits/stdc.h> 一、常用 STL 容器 1.vector&#xff08;动态数组&#xff09; #include<iostream> #include<string> #include <vector> #include <algorithm> // 包含排序所需的头文件 using namespa…

Java语言的进化:JDK的未来版本

作为一名Java开发者&#xff0c;我们正处在一个令人兴奋的时代&#xff01;Java语言正在以前所未有的速度进化&#xff0c;每个新版本都带来令人惊喜的特性。让我们一起探索JDK未来版本的发展方向&#xff0c;看看Java将如何继续领跑编程语言界&#xff01;&#x1f4aa; &…

不要使用Round函数保留小数位了

不要使用Round函数保留小数位了 如果你表格不需要保留公式&#xff0c;那么就不要使用Round函数保留小数位了。用Excel工作圈插件&#xff0c;可以轻松以数值形式保留小数位&#xff0c;且支持合并单元格、不连贯区域快速处理。 如下图&#xff0c;有文本&#xff0c;有跨行合并…

【C++】入门基础【下】

目录 一、缺省参数二、函数重载1. 函数类型不同2. 参数个数不同3、函数类型顺序不同 三、引用1、引用的概念和定义2、引用的功能2.1 功能1&#xff1a; 做函数形参&#xff0c;修改形参影响实参2.2 功能2&#xff1a; 做函数形参&#xff0c;减少拷贝&#xff0c;提高效率2.3 功…

git比较不同分支的不同提交文件差异

背景&#xff1a;只想比较某2个分支的某2次提交的差异&#xff0c;不需要带上父提交。 以commitA为基准&#xff0c;用commitB去比较差异 直接上代码&#xff1a; commitAxxxx1 commitBxxxx2 outputFile"output.txt"# 获取与第一个父提交的文件列表 filesA$(git di…

Linux内核之struct pt_regs结构

前沿 项目开发最近进行系统hook功能实现相关业务&#xff0c;主要在centos7和8系列环境开发下关功能。调研了相关知识点&#xff0c;发现在系统7和8上内核版本差别比较大&#xff0c;7-3.10.x系列版本&#xff0c;8-4.18.x系列版本。依据两个系统的内核情况根对应的内核符号表进…

《从混乱到有序:ArkUI项目文件结构改造指南》

在ArkUI开发的广袤天地里&#xff0c;构建一个清晰、有序的文件结构&#xff0c;是打造优质应用的关键。一个合理的文件结构&#xff0c;就像为开发者精心绘制的地图&#xff0c;在项目的各个阶段&#xff0c;都能提供明确的指引&#xff0c;让开发过程顺畅无阻。今天&#xff…

C#基于Sunnyui框架和MVC模式实现用户登录管理

C#基于Sunnyui框架和MVC模式实现用户登录管理 1 Controller1.1 UserManagementController.cs&#xff08;控制器入口&#xff09; 2 Model2.1 UserRepository.cs&#xff08;用户管理模型&#xff09;2.2 User.cs&#xff08;用户结构体&#xff09;2.3 SQLiteHelper.cs&#x…

自然语言处理(NLP)技术的实例

自然语言处理&#xff08;NLP&#xff09;技术在各个领域都有广泛的应用&#xff0c;以下是几个例子&#xff1a; 语音识别&#xff1a;通过NLP技术&#xff0c;计算机可以识别和理解语音指令&#xff0c;例如智能助手如Siri和Alexa就是通过语音识别技术实现与用户的交互。 机…

Spring Boot实战(三十六)编写单元测试

目录 一、什么是单元测试&#xff1f;二、Spring Boot 中的单元测试依赖三、举例 Spring Boot 中不同层次的单元测试3.1 Service层3.2 Controller 层3.3 Repository层 四、Spring Boot 中 Mock、Spy 对象的使用4.1 使用Mock对象的背景4.2 什么是Mock对象&#xff0c;有哪些好处…

aws服务(四)文件存储服务S3 介绍使用代码集成

一、介绍 1、简介 Amazon S3 是 Amazon Web Services 提供的一种对象存储服务(Object Storage),用于在云中存储和检索任意数量的数据。它以高可用性、高扩展性和高持久性著称,非常适合用来存储网站资源、数据备份、日志文件、大数据、机器学习输入输出等。 2、主要特性 …

应用信息1.13.0发布

增加工具箱 增加启动器功能 增加布局查看器 增加手动安装和卸载应用 增加APK文件解析 增加应用多选功能 增加查看应用预装版本 增加应用信息和ADB命令导出 修复其它问题... 百度下载&#xff1a;百度网盘 请输入提取码 提取码&#xff1a;1234

【Vue3 实战】插槽封装与懒加载

一、为什么需要插槽&#xff1f;从一个面板组件说起 在电商首页开发中&#xff0c;经常遇到这样的场景&#xff1a; 「新鲜好物」「人气推荐」同样类型模块都需要相同的标题栏&#xff0c;但内容区布局不同 这时候&#xff0c;插槽&#xff08;Slot&#xff09;就像一个「内容…

虚无隧穿产生宇宙(true nothing tunneling) 是谁提出的

是 亚历克斯.维连金 英文名&#xff08;alex vilenkin 或者 Alexander Vilenkin)提出来的。 “虚无隧穿产生宇宙”&#xff08;true nothing tunneling&#xff09;这一概念并非一个标准的物理学术语&#xff0c;它更像是对某些现代宇宙学理论的描述&#xff0c;尤其是涉及宇宙…