- 博客(64)
- 收藏
- 关注
原创 克隆虚拟机组成集群
要注意,这里是虚拟机的名称,而不是它的hostname。克隆之后,我们得到了hadoop101,hadoop102,由于它们是从hadoop100直接扣克隆过来的,所以目前他们的ip和hostname都是很hadoop100是一样的,这里就需要修改下。只是要注意修改对应的名称和IP:在第一台机器的基础上顺延即可。2.hosts文件中的主机名和ip地址是否与finalshell中的连接的主机名以及对应的虚拟的ip地址一致。vm软件提供了克隆的功能,它可以允许我们从一台虚拟机上快速克隆出其他的一模一样的主机。
2025-05-14 12:09:59
305
原创 RDD的自定义分区器-案例
在代码中,通过编写一个自定义的分区函数,根据用户 ID 的范围返回对应的分区编号。接着,定义一个自定义分区器,根据用户 ID 范围把订单数据分到不同的分区。具体来说,将用户 ID 在 0 - 1000 的订单数据分到一个分区,1001 - 2000 的分到另一个分区,2001 及以上的分到第三个分区。对电商订单数据进行处理,订单数据包含用户 ID 和订单金额,不同地区的用户有不同的 ID 范围。问题描述:需要根据特定的用户 ID 范围来定义分区规则,确保相同地区的订单数据被分配到相同的分区。
2025-05-14 12:09:44
828
原创 结构化数据处理
有一个名为 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-14 12:09:31
533
原创 03 linux操作系统命令
文件系统的特点:1. 几乎主流的文件系统都是从/根目录开始的Linux也不例外,而Windows文件系统会以盘符来区分不同文件系统。Linux号称万物皆文件,意味着针对Linux的操作,大多数时间是在针对Linux文件系统操作。接下来,我们快速去实操一下,路径相关的操作。3. mkdir -p 命令: 创建目录,如果父级目录不存在,就建立一个父级目录。3. ~波浪线,当前用户的home目录,比如root用户home目录是/root。在linux中,使用touch命令来创建文件,使用mkdir来创建目录。
2025-05-14 12:09:18
848
原创 linux操作系统命令(二)
ls命令可以查看文件夹下的文件信息,如果某个文件夹下的文件特别多,使用ls命令时,就只能显示后面一部分文件信息,那如果我们希望查看全部的文件信息,要怎么办呢?因为在linux下,我们要去下载安装新的软件时就需要用到它:下载下来的软件大多都是.tar格式,而安装的过程就是解压缩。会把111写入a.txt这个文件中,把之前的内容删除掉。ls 用来显示文件夹下的文件信息,more用来翻页,而 | 就可以把前一个的结果作为输入传递给more。说明:如果源文件和目标文件在同一个目录下,就是重命名,否则就是移动。
2025-05-14 12:08:55
392
原创 配置Hadoop集群环境-使用脚本命令实现集群文件同步
在一台机器上模拟出 Hadoop 分布式系统的各个组件,各个组件在逻辑上是分离的,但是都运行在同一台物理机器上,以此来模拟分布式环境。任务1:在hadoop102上,将hadoop101中/opt/module/hadoop-3.1.3目录拷贝到hadoop102上。任务2:在hadoop101上操作,将hadoop100中/opt/module目录下所有目录拷贝到hadoop102上。现在的目标是:要把hadoop100上的jdk文件夹拷贝到hadoop101中的相同的目录下。(1) 集群文件同步。
2025-05-13 10:47:26
691
原创 分区器和默认分区器
1.MyPartitioner类继承自Partitioner,实现了numPartitions方法指定分区数量为 3 ,实现getPartition方法,根据球队名称判断分区索引,湖人对应分区 0,火箭对应分区 1,其他球队对应分区 2。假设分区数为 n,键为 key,则分区编号的计算公式为 hash(key) % n。2.在main方法中,创建包含球队信息的 RDD,然后调用partitionBy方法并传入自定义分区器MyPartitioner,对 RDD 进行分区,最后将分区后的数据保存到指定路径。
2025-05-13 10:43:35
326
原创 自定义分区器-基础
为了方便管理和查找,你会把这些书籍按照不同的类别,比如文学、历史、科学等,划分到不同的书架上。在 Spark 中,分区是指将数据集按照一定的规则划分成多个较小的子集,每个子集可以独立地在不同的计算节点上进行处理,这样可以实现数据的并行处理,提高计算效率。在 Spark 中,RDD 是数据的集合,它会被划分成多个分区,这些分区可以分布在不同的计算节点上,就像图书馆的书架分布在不同的房间一样。在 Spark 里,弹性分布式数据集(RDD)是核心的数据抽象,它是不可变的、可分区的、里面的元素并行计算的集合。
2025-05-13 10:41:13
359
原创 Spark缓存中的persist和cache方法
MEMORY_ONLY_SER:将 RDD 以序列化的 Java 对象形式存储在内存中,相较于 MEMORY_ONLY,序列化后占用的内存空间更小,但读取时需要进行反序列化操作,会带来一定的性能开销。cache:其实是persist方法的一种特殊情况,它等价于调用 persist(StorageLevel.MEMORY_ONLY),也就是将数据以非序列化的 Java 对象形式存储在内存中。MEMORY_AND_DISK:优先把 RDD 以 Java 对象的形式存储在 JVM 的内存中。
2025-05-13 10:39:02
153
原创 Spark缓存
通过对比两次计算的耗时,可以明显发现第二次计算耗时会远小于第一次(在数据量较大或计算复杂时效果更显著),这就体现了cache方法缓存计算结果、避免重复计算、提升后续操作速度的作用。当持久化某个RDD后,每一个节点都将把计算的分片结果保存在内存中,并在对此RDD或衍生出的RDD进行的其他动作中重用。RDD通过persist方法或cache方法可以将前面的计算结果缓存,但是并不是这两个方法被调用时立即缓存,而是触发后面的行动算子时,该RDD将会被缓存在计算节点的内存中,并供以后重用。这就是没有缓存的效果。
2025-05-13 10:38:00
214
原创 Yarn-概述
通过为每个组织分配专门的队列,然后再为每个队列分配一定的集群资源, 这样整个集群就可以通过设置多个队列的方式给多个组织提供服务了。队列内部又可以垂直划分,这样一个组织内部的多个成员就可以共享这个队列资源了,在一个队列内部,资源的调度是采用的是先进先出(FIFO)策略。但是实际中,资源是有限的,并且在繁忙的群集上, 应用程序通常将需要等待其某些请求得到满足。现在,如果B用户在其他作业仍在运行时开始第二个作业,它将与B的另一个作业共享其资源,因此B的每个作业将拥有资源的四分之一,而A继续将拥有一半的资源。
2025-05-13 10:34:55
512
原创 Spark的local和standalone模式
进入到hadoop100机器,切换目录到/opt/module/spark-standalone/sbin下,运行命令 ./start-all.sh。注意,这里不要省略./,它表示的是当前目录下的start-all命令,如果省略了./,它就会先去环境变量PATH中指定的目录来找这个命令。切换到目录 /opt/module/spark-standalone/bin下,可以看到有一个spark-submit可执行文件,我们通过它来提交任务。进入到spark-local,运行命令spark-submit命令。
2025-05-13 10:28:28
785
原创 Spark处理过程-案例数据清洗
(一)需求说明假设你有一个包含用户信息的文本文件,每行格式为 姓名,年龄,性别,需要清洗掉年龄为空或者非数字的行。以下是 10 条符合上述示例中数据格式(姓名,年龄,性别)的测试数据,包含了一些可能需要清洗掉的无效数据,你可以将其保存为一个文本文件,用于测试上面的数据清洗程序。张三,25,男王五,30,男李四,28,女赵六,a,男刘七,32,女陈八,29,男孙九,55,女这里面:“赵六”的年龄不是有效的数字,在执行数据清洗程序时,这些行应该会被过滤掉。
2025-05-13 10:03:07
159
原创 配置历史服
大家可以通过./stop-all.sh 来停止spark集群,然后再通过start-all来重新启动集群。2.修改/opt/module/spark-standalone/conf/spark-default.conf.temple。代码说明:这里指定了历史任务相关的信息要保存在集群的/directory文件夹下,所以要确保我们有这个目录,并且hdfs服务时是开启的状态。进入/opt/module/spark-standalone/sbin, 运行命令 ./stop-all.sh。此时应该是没有任务的。
2025-05-13 09:27:50
367
原创 案例-流量统计
但是,这里有一个问题:map和reduce这两个函数都是通过key,value的方式来进行数据交互的,这里的key可以设置为手机号,而value值就比较复杂,它有两个信息:上行流量和下行流量要统计。而这就必然引出一个新的问题:因为key,value是需要进行磁盘的读写的,所以它们必须要能序列化,如果我们创建一个新的类来描述流量数据,就必须也实现序列化。在map阶段,我们读入每一行数据,通过空格分割,切分字段,抽取手机号,上行流量和下行流量。在reduce阶段,我们把相同手机号的数据进行求和汇总。
2025-05-13 09:23:12
307
原创 一分钟学会数据清洗
ETL,是英文Extract-Transform-Load的缩写,用来描述将数据从来源端经过抽取(Extract)、转换(Transform)、加载(Load)至目的端的过程。对于reduce函数来说,它的输入参数是:<刷选后的每一行的内容,[null,null,...]>,对于我们的需求来说,并不需要这个阶段。map阶段:按行读入内容,对内容进行检查,如果字段的个数少于等于11,就删除这条日志(不保留)去除日志中字段个数小于等于11的日志内容。我们有去除日志中字段个数小于等于11的日志。
2025-05-13 09:15:27
262
原创 Spark处理过程-行动算子
行动算子是触发 Spark 计算的“触发点”,因为 Spark 的 RDD 是懒惰计算的,只有在执行行动算子时,才会真正开始计算。它会触发 Spark 作业的实际执行,对 RDD 中的所有元素进行计数,并将最终的计数结果返回给驱动程序。f: T => Unit:这是一个函数,它接收一个类型为 T 的元素(T 为 RDD 中元素的类型),并对该元素执行相应的操作,但不返回任何值(返回类型为 Unit)。返回值:返回一个包含 RDD 中所有元素的数组,数组元素的类型与 RDD 中元素的类型一致。
2025-05-13 09:05:11
435
原创 Spark处理过程-转换算子
它的核心作用是对具有相同键的所有值进行聚合操作,通过用户提供的聚合函数将这些值合并成一个结果,从而实现数据的归约和统计。作用:对 RDD 中的每个元素应用给定的函数 f,将每个元素转换为另一个元素,最终返回一个新的 RDD。作用:筛选出 RDD 中满足函数 f 条件(即 f 函数返回 true)的元素,返回一个新的 RDD,新 RDD 中的元素类型与原 RDD 相同。作用:对 RDD 中的每个元素应用函数 f,函数 f 返回一个可遍历的集合,然后将这些集合中的元素扁平化合并成一个新的 RDD。
2025-05-13 08:44:48
945
原创 在sheel中运行Spark
在部分分区数据丢失时,Spark可以通过这个依赖关系重新计算丢失的分区数据,而不是对RDD的所有分区进行重新计算。Resilient Distributed Dataset 叫做弹性分布式数据集,是Spark中最基本的数据抽象,是分布式计算的实现载体,代表一个不可变,可分区,里面的元素并行计算的集合。RDD的分区是RDD数据存储的最小单位。举个生活中的例子:高考的时候,每个班的同学都打散到不同的考场,此时的高3(8)班就是一个抽象的概念,在实际中,这个班级的学生可能分布在5个不同的考场。
2025-05-13 08:33:07
752
原创 如何在idea中写spark程序
文件中添加 Spark 依赖。按照以上步骤,你就可以在 IntelliJ IDEA 中编写、运行和部署 Spark 程序了。命令将项目打包成一个 JAR 文件。如果需要将程序部署到 Spark 集群上运行,可以使用 Maven 的。,并编写一个简单的 Spark 程序。添加完依赖后,Maven 会自动下载所需的库文件。目录下生成一个 JAR 文件。工具窗口中的刷新按钮来手动触发下载。目录下创建一个 Java 类,例如。
2025-04-28 19:57:50
594
原创 如何搭建spark yarn模式的集群
以上步骤完成后,你就成功搭建了一个 Spark YARN 模式的集群。在实际使用中,可根据具体需求对配置进行调整。在所有节点上安装 Java,并配置。
2025-04-28 19:52:14
435
原创 spark和Hadoop之间的对比与联系
综上,Spark和Hadoop虽然在某些方面存在竞争关系,但它们在大数据处理领域中各有优势,并且可以通过协同工作形成强大的解决方案。Spark和Hadoop是两个广泛应用于大数据处理领域的开源框架,它们在设计理念、性能特点、适用场景以及功能上都有显著的联系和区别。Spark(23)-Spark设计及Spark基本运行原理简介以及与Hadoop的对比_spark23-CSDN博客。Spark 和 Hadoop 的区别有哪些?Hadoop和大数据、S…深入浅出Spark(1)什么是Spark - 知乎。
2025-04-22 08:24:28
625
原创 数据清洗的具体内容
它是指对采集到的原始数据进行预处理,以去除错误、重复、不完整或不一致的数据,使数据符合分析要求的过程。对于reduce函数来说,它的输入参数是:<刷选后的每一行的内容,[null,null,...]>,对于我们的需求来说,并不需要这个阶段。在之前的项目的基础之上,重写去写一个包,并创建两个类:WebLogMapper和WebLogDriver类。map阶段:按行读入内容,对内容进行检查,如果字段的个数少于等于11,就删除这条日志(不保留)<偏移量,每一行的内容> → <刷选后的没一行的内容,null>
2025-04-02 15:54:42
1046
原创 mapreduce的工作原理
在整个 MapReduce 过程中,Master 节点负责协调和管理任务的分配、监控任务的执行状态,以及处理节点故障等问题。Worker 节点则负责实际的计算任务,即执行 Map 和 Reduce 函数对数据进行处理。通过这种分布式的计算方式,MapReduce 能够高效地处理大规模的数据,将计算任务并行地分布到多个节点上执行,大大提高了数据处理的效率和可扩展性。
2025-03-31 19:53:00
306
原创 Hadoop集群的常用命令
hadoop fs -count / # 统计文件数量,返回的数据是目录个数,文件个数,文件总计大小,输入路径。hadoop fs -du -s -h / #统计这个文件夹总大小,返回的数据是,文件夹大小,备份总大小。hadoop fs -du -h / # 统计文件夹下每个文件的大小。把hdfs一堆小文件合并到本地的一个文件中。查看yarn正在运行的任务列表。查找yarn已经完成的任务列表。查找yarn所有任务列表。
2025-03-31 19:46:14
359
原创 虚拟机配置ip
linux中,ip地址是写在配置文件(/etc/sysconfig/network-scripts/ifcfg-ens33)中,这里使用 vi 编辑器去修改即可!如果不进行设置,每次启动机器时都可能是随机的IP,不方便我们后续操作。注意:这里的第三个部分的10并不是固定的,我们自己可以约定,但是约定之后就要固定下来。让所有的vm配置的虚拟机使用NAT时,它们的网段都是一致的。配置Windows本地虚拟网卡,让本机也可以访问虚拟机。具体设置为:进入虚拟机,修改对应的IP。(3)设置虚拟机的IP。
2025-02-26 15:21:32
289
原创 vi编辑器
提示:在命令模式下按下shift + zz ,可以实现快速保存退出。3.Home键可以快速定位到首行,End键可以快速定位到行尾。2.nyy(n+两个小y)复制当前行往下n行内容。4.按下G键(大写g)可以调到文件的最后一行。5.按下gg键(两个小g)跳到文件的第一行。2.ctrl+r反撤销(重做上一步的操作)按i开始修改 :wq回车保存(不要省略)1.yy(两个小y)复制光标所在行的内容。1.p(小写p)在当前行的下一行粘贴。2.P(大写P)在当前行的上一行粘贴。(3):wq 保存退出。
2025-02-25 11:36:24
416
原创 如何使用VMware创建虚拟机
创建完虚拟机后,点击编辑虚拟机设置。点击确定后,就可以开启虚拟机了。设置虚拟机名称,点击下一步。选择自定义,点击下一步。
2025-02-25 11:16:01
424
原创 Linux的基本命令
路径中的特殊字符 :1 .开头是隐藏文件 2 ..当前目录的上一级目录 3 ~波浪线,当前用户的home目录,比如root用户home目录是/root。cd / 根目录 pwd 当前路径 相对路径 绝对路径。
2025-02-25 08:47:42
204
原创 Scala的模式匹配
模式匹配是Scala中非常有特色、非常强大的一种功能,类似子Java中的svitch case语法即对一个值进行条件判断,然后针对不同的条件进行不同的处理。但是Scala的模武匹配的功能比Java中的功能要强大,Java的switch case语法只能对值进行匹配。Scala的模式匹配数据类型非常丰富,既可以是自定义的类,也可以是Scala本身的类。模式匹配属于Scala中的高级特性,在Scala中占有非常重要的地位,Scala程序的源代码中存在大量的模式匹配。下面举例说明Scala的模式匹配。
2024-12-09 15:17:51
383
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人