自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(49)
  • 收藏
  • 关注

原创 Zookeeper(2)

Hadoop是一个由Apache基金会所开发的分布式系统基础架构,主要解决海量数据集的存储和分析计算问题。广义上讲,Hadoop是一个更广泛的概念-- Hadoop生态圈。分布式系统是一种由多个独立的计算机(节点)组成的系统,这些节点通过网络通信来协同完成任务,对外表现为一个整体的系统。一般是产品人员提需求 → 数据部门搭建数据平台,分析数据指标 → 数据可视化(报表展示,邮件发送,大屏幕展示等等)前面介绍了大数据的一些基本理论,那大家知道在一家企业中,大数据部门是怎么构成的?又是如何与其他部门协作的吗?

2025-05-16 14:56:58 254

原创 Zookeeper(1)

数据多了之级),这个时候就出现了Spark技术,spark经常和hadoop来对比,更准确是和mapReduce进行对比,因为spark本身也是一个计算框架。spark是基于内存的计算,mapReduce是基于磁盘的计算。进入到我们安装yarn的主机,通过命令来关闭掉yarn和historyServer,然后再重启。大数据不止有数量大这个显著的特点,还有其他的特点,我们总结为4V。例如:11.11期间,京东在1秒内的交易额就超过了10亿。给你家人推荐的内容,也会推荐给你。视频推荐:推荐你喜欢的内容给你。

2025-05-16 14:56:26 167

原创 SparkSQL-数据提取和保存

从给定的user.csv文件中,读入用户数据,过滤掉年龄<18岁的信息,然后把剩余的数据写入mysql数据库中。从csv中读入数据到DataFrame。这里用到的方法是read.csv()// 读入data/user.csv文件的数据。通过mysql -uroot -p 来登录mysql。在mysql中创建数据表,特别注意字符编码的问题。建立一个.csv文件,然后添加基本数据。dataFrame做数据写入到mysql。读入csv文件到 dataFrame。2. spark代码实现。

2025-05-16 14:55:55 226

原创 SparkSQL操作Mysql(2)

请注意,这里并没没有单独添加spark_core的依赖,因为在spark-sql中已经包含了spark_core。(1)scala-library 是 Scala 语言的基础库,是编写 Scala 程序的必要条件。(2)spark-sql_2.12 提供了 Spark SQL 的功能,用于高效的数据处理和分析。(3)mysql-connector-java 提供了与 MySQL 数据库交互的能力。前面演示了数据的查询,现在来看看添加数据到mysql。我们去创建一个新的数据库,数据表,并插入一条数据。

2025-05-16 14:54:54 240

原创 SparkSQL操作Mysql(1)

rpm -ivh 是 Linux 中用于安装 RPM(Red Hat Package Manager)软件包的命令。若已安装,需要先做卸载MySQL的操作命令是:rpm -e --nodeps mariadb-libs。使用的命令是: mysqld --initialize --user=mysql。查看是否已安装MySQL。-v:表示显示详细(verbose)信息,提供更多安装过程中的输出信息。对应的命令是:mysql -uroot -p。-h:表示在安装过程中显示进度条,以 # 符号表示安装进度。

2025-05-16 14:51:51 517

原创 SparkSQL-基本使用

有一个名为 ecommerce_data.csv 的 CSV 文件,包含以下列:order_id(订单编号)、product_id(商品编号)、product_name(商品名称)、quantity(购买数量)、price(商品单价)、user_id(用户编号)、order_date(订单日期)。使用sql风格操作的前提是将DataFrame注册成一个临时表,在程序中直接使用spark.sql()方式执行SQL查询,结果将作为一个DataFrame返回。(三)DataFrame的概念。

2025-05-16 14:49:35 374

原创 自定义分区器(2)

MyPartitioner类继承自Partitioner,实现了numPartitions方法指定分区数量为 3 ,实现getPartition方法,根据球队名称判断分区索引,湖人对应分区 0,火箭对应分区 1,其他球队对应分区 2。2.在main方法中,创建包含球队信息的 RDD,然后调用partitionBy方法并传入自定义分区器MyPartitioner,对 RDD 进行分区,最后将分区后的数据保存到指定路径。("勇士", "info1"),("湖人", "info3"),自定义分区器的实现步骤。

2025-05-16 14:47:57 144

原创 自定义分区器-基础

这就类似于 Spark 中的分区,每个分区的数据可以在不同的计算节点上同时进行处理,从而加快整个数据处理的速度。在 Spark 中,分区是指将数据集按照一定的规则划分成多个较小的子集,每个子集可以独立地在不同的计算节点上进行处理,这样可以实现数据的并行处理,提高计算效率。在 Spark 中,RDD 是数据的集合,它会被划分成多个分区,这些分区可以分布在不同的计算节点上,就像图书馆的书架分布在不同的房间一样。【现场演示,如果文件是一个.gz文件,是一个不可拆分的文件,那么默认分区的数量就会是1】

2025-05-16 14:46:49 939

原创 spark缓存(2)

MEMORY_ONLY_SER:将 RDD 以序列化的 Java 对象形式存储在内存中,相较于 MEMORY_ONLY,序列化后占用的内存空间更小,但读取时需要进行反序列化操作,会带来一定的性能开销。cache:其实是 persist 方法的一种特殊情况,它等价于调用 persist(StorageLevel.MEMORY_ONLY),也就是将数据以非序列化的 Java 对象形式存储在内存中。MEMORY_AND_DISK:优先把 RDD 以 Java 对象的形式存储在 JVM 的内存中。

2025-05-16 14:45:10 315

原创 Spark缓存

通过对比两次计算的耗时,可以明显发现第二次计算耗时会远小于第一次(在数据量较大或计算复杂时效果更显著),这就体现了cache方法缓存计算结果、避免重复计算、提升后续操作速度的作用。当持久化某个RDD后,每一个节点都将把计算的分片结果保存在内存中,并在对此RDD或衍生出的RDD进行的其他动作中重用。RDD通过persist方法或cache方法可以将前面的计算结果缓存,但是并不是这两个方法被调用时立即缓存,而是触发后面的行动算子时,该RDD将会被缓存在计算节点的内存中,并供以后重用。这就是没有缓存的效果。

2025-05-16 14:44:11 341

原创 Spark处理过程-行动算子

它会触发 Spark 作业的实际执行,对 RDD 中的所有元素进行计数,并将最终的计数结果返回给驱动程序。作用:reduce 用于对 RDD 中的元素进行全局聚合操作,例如计算 RDD 中所有元素的总和、最大值、最小值等。f: T => Unit:这是一个函数,它接收一个类型为 T 的元素(T 为 RDD 中元素的类型),并对该元素执行相应的操作,但不返回任何值(返回类型为 Unit)。返回值:返回一个包含 RDD 中所有元素的数组,数组元素的类型与 RDD 中元素的类型一致。参数说明:该算子没有参数。

2025-05-16 14:42:27 339

原创 Spark处理过程-转换算子

它的核心作用是对具有相同键的所有值进行聚合操作,通过用户提供的聚合函数将这些值合并成一个结果,从而实现数据的归约和统计。作用:对 RDD 中的每个元素应用给定的函数 f,将每个元素转换为另一个元素,最终返回一个新的 RDD。:筛选出 RDD 中满足函数 f 条件(即 f 函数返回 true)的元素,返回一个新的 RDD,新 RDD 中的元素类型与原 RDD 相同。作用:对 RDD 中的每个元素应用函数 f,函数 f 返回一个可遍历的集合,然后将这些集合中的元素扁平化合并成一个新的 RDD。

2025-05-16 14:39:58 377

原创 自定义分区器-基础

当使用 textFile 方法从外部存储(如 HDFS、本地文件系统等)读取文件创建 RDD 时,默认分区数通常由文件的块大小决定。对于 HDFS 文件,默认分区数等于文件的块数。例如,一个 128MB 的文件在 HDFS 上被分成 2 个 64MB 的块,那么创建的 RDD 默认分区数就是 2。在 Spark 里,弹性分布式数据集(RDD)是核心的数据抽象,它是不可变的、可分区的、里面的元素并行计算的集合。RDD 会被划分成多个分区,每个分区就是一个数据集片段,这些分区可以分布在集群的不同节点上。

2025-05-16 14:37:16 397

原创 Linux操作系统命令-复杂命令(2)

ls命令可以查看文件夹下的文件信息,如果某个文件夹下的文件特别多,使用ls命令时,就只能显示后面一部分文件信息,那如果我们希望查看全部的文件信息,要怎么办呢?因为在linux下,我们要去下载安装新的软件时就需要用到它:下载下来的软件大多都是.tar格式,而安装的过程就是解压缩。会把111写入a.txt这个文件中,把之前的内容删除掉。把1.txt,2.txt,3.txt压缩到test.tar文件(会被自动创建)中。-c 建立一个压缩文件,把多个文件或者文件夹压缩到一个新的文件中。

2025-05-16 14:36:44 251

原创 Linux操作系统命令-复杂命令

示例:把目录dir1复制一份得到dir2. 那么对应的命令就是:cp -r dir1 dir2。示例: 把file1.txt 复制一份得到file2.t x t。移动操作: mv file.txt newdir/file.txt。说明:如果源文件和目标文件在同一个目录下,就是重命名,否则就是移动。重命名操作: mv file.txt newfile.txt。复制和移动都分为文件和文件夹,具体的命令是cp和mv。3. more -tail:查看文件的结尾部分的内容。格式: cp 源文件 目标文件。

2025-05-16 14:36:19 199

原创 Spark集群搭建-Standalone模式

对应的命令是:tar -zxvf spark-3.3.1-bin-hadoop3.tgz -C /opt/module。进入/opt/module/把解压的内容重命名一下,mv spark-3.1.1-bin-hadoop3.2/ spark-standalone。Spark 的 Standalone 模式是一种独立的集群部署模式,自带完整服务,可单独部署到一个集群中,无需依赖任何其他资源管理系统。要布置standalone模式,需要准备多台机器(linux,ip设置,能ping 百度),免密互联。

2025-05-14 09:56:57 316

原创 MapReduce架构-打包运行

从 Java 7 开始,为了简化版本号的表示,Oracle 开始采用新的命名方式,将 1.x 改为 x。从 Java 9 开始,版本号的命名方式完全统一为 x,例如 Java 9、Java 11、Java 17 等,不再使用 1.x 的形式。我们集群上安装的java环境是1.8的,那么我们生成的代码也必须是这个版本的,否则,就会无法运行。我们集群上安装的java环境是1.8的,那么我们生成的代码也必须是这个版本的,否则,就会无法运行。在上面的代码中,我们的程序只能完成固定目录下的功能。

2025-05-14 09:56:30 471

原创 MapReduce架构-序列化

Java的序列化是一个重量级序列化框架(Serializable),一个对象被序列化后,会附带很多额外的信息(各种校验信息,Header,继承体系等),不便于在网络中高效传输。下面我们来看一个例子:通过代码来定义一个类,并创建它的一个对象,把这个对象保存到文件中(序列化),然后再写代码读取这个文件并还原回来。序列化就是把内存中的对象,转换成字节序列(或其他数据传输协议)以便于存储到磁盘(持久化)和网络传输。反序列化就是将收到字节序列(或其他数据传输协议)或者是磁盘的持久化数据,转换成内存中的对象。

2025-05-14 09:54:40 365

原创 Yarn-tool接口

org.apache.hadoop.util.Tool 是 Apache Hadoop 框架里的一个接口,其用途是协助开发可通过命令行运行的 Hadoop 应用程序。ToolRunner 是 Hadoop 提供的一个实用类,可用于运行实现了 Tool 接口的应用程序。run(String[] args):此方法为应用程序的主要执行逻辑,接收命令行参数,返回一个整数代表执行结果(通常 0 表示成功,非 0 表示失败)。2.run 方法会打印出接收到的命令行参数,你可以在此添加自己的业务逻辑。

2025-05-14 09:54:08 262

原创 Spark-core-RDD入门

通过 SparkConf 类,你可以设置应用程序的名称、运行模式(如本地模式、集群模式)、资源分配(如内存、CPU 核心数)等。Resilient Distributed Dataset 叫做弹性分布式数据集,是Spark中最基本的数据抽象,是分布式计算的实现载体,代表一个不可变,可分区,里面的元素并行计算的集合。- Distributed: 分布式存储的,表示数据是存放在不同的机器上的。不可变的:immutable。并行计算:集合中的数据可以被并行的计算处理,每个分区数据被一个Task任务处理。

2025-05-14 09:53:29 310

原创 如何在idea中写spark程序

(1)访问Scala官方网站(https://www.scala-lang.org/download/)下载适合操 作系统的Scala安装包。安装Scala的操 作,也是一路默认安装即可。(2) 打开命令提示符(CMD),输入以下命令:scala -version 如果显示Scala 的版本信息,说明安装成功。Spark是基于scala的,当然它也可以支持java和scala还有python语言,我们这里会使用scala。它的功能是wordcount的功能:从指定的文件夹中去读取文件,并做词频统计。

2025-05-14 09:47:44 498

原创 如何搭建spark yarn模式的集群

1.上传并解压spark-3.1.2-bin-hadoop3.2.tgz,重命名解压之后的目录为spark-yarn。对应的命令是:tar -zxvf spark-3.3.1-bin-hadoop3.tgz -C /opt/module。使用xsync /opt/module/hadoop-3.1.3/etc/hadoop/同步一下。

2025-05-14 09:42:36 395

原创 Spark集群搭建-Standalone

配置步骤在开始配置之前,请确保三台虚拟机都正确启动了!具体配置步骤如下。1.上传spark安装包到某一台机器(例如:hadoop100)。 spark.3.1.2-bin-hadoop3.2.tgz。2.解压。 把第一步上传的安装包解压到/opt/module下(也可以自己决定解压到哪里)。对应的命令是:tar -zxvf spark-3.3.1-bin-hadoop3.tgz -C /opt/module3.重命名。进入/opt/module/把解压的内容重命名一下,mv spark-3.1.1-bin

2025-05-14 09:42:05 232

原创 spark和Hadoop之间的对比和联系

Spark可以与Hadoop生态系统无缝集成,例如,Spark可以使用HDFS作为数据存储层,可以与Hive共享元数据,可以与YARN进行资源管理等。例如,Spark Streaming可以处理实时数据流,Spark SQL可以进行SQL查询,Spark MLlib可以进行机器学习,Spark GraphX可以进行图计算。架构特点:Hadoop的架构较为复杂,需要分别搭建HDFS和MapReduce,且MapReduce的执行过程较为繁琐,需要经过多个阶段(如Shuffle和Sort),导致延迟较高。

2025-05-14 09:41:25 341

原创 关于hadoop和yarn的问题

YARN(Yet Another Resource Negotiator)是 Hadoop 2.0 引入的资源管理平台,其核心功能是将资源管理与作业调度/监控分离,支持多计算框架(如 MapReduce、Spark 等)运行在同一个集群中,提高资源利用率和系统扩展性。YARN(Yet Another Resource Negotiator):资源管理和作业调度框架,负责集群资源的统一分配和任务调度,提升集群利用率。ResourceManager(RM):集群资源的总管理者,负责全局资源分配与调度。

2025-05-14 09:40:51 259

原创 mapreduce的工作原理

**分区(Partitioning)**:根据 key 的哈希值决定数据发送到哪个 Reduce 任务。- **Combiner(可选)**:本地 reduce,减少网络传输量。- **排序(Sorting)**:每个分区内的数据按键排序。- **数据本地性优化**:优先在存储数据的节点上执行任务。- **Map 阶段**:处理输入数据并生成中间键值对。- **Reduce 阶段**:对中间结果进行汇总处理。- **数据从 Map 端拷贝到 Reduce 端**

2025-05-14 09:40:17 300

原创 Hadoop集群常用命令

启动所有Hadoop服务。# 停止所有Hadoop服务。# 列出所有运行中的应用程序。# 查看MapReduce作业状态。## MapReduce作业命令。# 检查YARN节点状态。2. **文件权限和所有权**# 查看集群资源使用情况。# 提交MapReduce作业。1. **平衡HDFS数据**1. **启动/停止集群**# 检查HDFS一致性。2. **检查集群状态**# 检查HDFS状态。# 检查集群健康状态。1. **基本文件操作**# 查看应用程序日志。2. **检查文件系统**

2025-05-14 09:39:33 386

原创 finalshell的配置

我们在从本机开始去连接虚拟机时,都是通过ip地址来连接的,不方便。我们可以通过hostname的方式来访问。ping hadoop100或者是ping 192.168.10.100都应该可以通。5. 找到刚才建立的连接,点击连接。主机:192.168.10.100,或者是配置hosts之后的主机名。1. 点击开始安装,安装到D盘。安装目录没有中文,没有空格。2. 启动finalshell,新建。这个文件是一个没有后缀名的文本文件。输入对应主机的用户名密码。1. 修改hosts文件。来,我们一起操作一下。

2025-05-14 09:38:43 317

原创 linux常见操作命令

ls命令可以查看文件夹下的文件信息,如果某个文件夹下的文件特别多,使用ls命令时,就只能显示后面一部分文件信息,那如果我们希望查看全部的文件信息,要怎么办呢?因为在linux下,我们要去下载安装新的软件时就需要用到它:下载下来的软件大多都是.tar格式,而安装的过程就是解压缩。会把111写入a.txt这个文件中,把之前的内容删除掉。但是,在linux里,这不能使用鼠标操作,需要用到显示文件的命令。ls 用来显示文件夹下的文件信息,more用来翻页,而 | 就可以把前一个的结果作为输入传递给more。

2025-05-14 09:37:52 404

原创 vi常见操作命令

命令模式:在这个模式下,所敲的按键编辑器都理解为命令,以命令来驱动执行不同的功能。当我们通过VI命令第一次打开文件的时候,进入的就是命令模式。vi编辑器有三种工作模式,分别是命令模式,编辑模式,底线模式。(2)按下o:进入到编辑输入模式后,在当前行的后面添加一行空行(当前行的下一行)2. 如果文件已经存在,此时就打开这个文件,进入命令模式。从命令模式切换到底线命令模式,输入: 进入底线命令模式。(1)按下i: 进入编辑模式,定位到当前光标前面。(3)在输入模式下,按下ESC退回到命令模式。

2025-05-14 09:37:19 642

原创 yarn的定义

YARN 是 Hadoop 2.x 及更高版本中的核心组件,它从 Hadoop 1.x 的 MapReduce 框架中分离出来,独立成为一个资源管理系统。它的主要目标是将资源管理和作业调度从 MapReduce 框架中解耦,从而提供一个更通用、更灵活的资源管理平台,支持多种计算框架(如 MapReduce、Spark、Tez 等)在同一个 Hadoop 集群中运行。

2025-04-18 15:10:07 542

原创 hadoop的三大结构及各自的作用?

例如,一个 MapReduce 任务提交到 YARN 后,YARN 会根据任务中 Map 任务和 Reduce 任务的数量以及每个任务所需的资源,合理地分配容器,确保任务能够顺利运行。例如,对于一个大规模的文本数据集,需要统计每个单词出现的次数,MapReduce 框架可以将文本数据分成多个小块,每个 Map 任务处理一个小块数据,将单词和它们出现的次数作为键值对输出,然后 Reduce 任务再对这些键值对进行归并,最终得到每个单词的总出现次数。:它可以存储大量的数据,从 GB 到 PB 级别。

2025-04-18 15:06:31 484

原创 VM虚拟机的安装

选择要安装的操作系统类型(如Windows、Linux等)和版本(如Windows 10、Ubuntu 20.04等)。:Windows 10/11自带的虚拟化工具,适合Windows系统。如果需要网络连接,确保虚拟机的网络设置正确(如NAT、桥接等)。:选择虚拟磁盘类型(如动态磁盘或固定大小磁盘)并分配空间。搜索“Hyper-V”,点击“更多Windows功能”。输入虚拟机的名称(如“Windows 10 VM”)。选择“创建虚拟硬盘”,选择硬盘类型(VDI)。:免费开源,适合初学者,支持多种操作系统。

2025-02-19 11:19:06 674

原创 Scala如何求1+2......+n的和

记:f(n) = 1+2+3+4+...+(n-1)+n。1、基本情况(直接能求和的):f(1) = 1。情况(大事化小):f(n) = f(n-1)+n。

2024-12-12 09:15:27 207

原创 Scala函数的字面量语法

简写2,用_占位符,(Int,Int)=>Int 它表示一种类型:收到两个整形的参数,返回一个整型值。

2024-12-12 09:14:34 190

原创 用Scala求斐波那契数列的第n项

记: 0 1 1 2 3 5 8 13 21 34 55 ... 从第3项开始 f(n) = f(n-1) + f(n-2)2.递归情况(大事化小,自己调用自己): f(n) = f(n-1) + f(n-2)1.基本情况(直接能求的):f(0) = 0,f(1) = 1。问题:求 斐波那契数列的第n项。求斐波那契数列的第n项。

2024-12-12 09:13:48 200

原创 Scala创建不带()的方法

时的()格式:def 方法名:[返回类型]={}

2024-12-12 09:12:52 137

原创 Scala递归中求汉罗塔游戏的步骤

1.基本情况(直接能求的):f(1,"A","B","C"),可以直接求,从A ---->C。记:f(n,"A","B","C")表示n个盘子从A柱子上移动到C柱子上,借用B柱子的过程。f(要移动的盘子的个数,起点,辅助柱子,终点)

2024-12-12 09:11:56 123

原创 Scala的伴生类和伴生对象

当同名的类和单例对象在同一个源码文件中时,这个类称为单例对象的伴生类,对象称为类的伴生对象,这两者是相互的。②必须在同一个源码文件中。场景1:在伴生对象中访问伴生类的私有的私有方法。场景2:单例模式,让一个类只能产生一个对象。伴生对象与伴生类的应用场景。伴生对象与伴生类的定义。

2024-12-12 09:10:52 379

原创 Scala的单例对象

1、不是一个类型:通过object关键字创建的是一个对象,不是一个类型。2、不能使用new关键字:声明单例对象时不可以使用new关键字。3、不能传递参数:单例对象无法传递参数。对象.属性 或 对象.方法()object是声明单例对象的关键字。

2024-12-12 09:09:42 178

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除