- 博客(73)
- 收藏
- 关注
原创 Spark基础介绍
为了实现这样的要求,同时获得最大灵活性,Spark支持在各种集群管理器(Cluster Manager)上运行,包括Hadoop YARN、Apache Mesos,以及Spark自带的一个简易调度器,叫作独立调度器。例如,在机器学习和图计算等需要多次迭代的算法中,Spark 可以显著减少计算时间。Hadoop:Hadoop 的 MapReduce 编程模型相对较为底层和复杂,开发人员需要编写大量的代码来实现数据处理逻辑,尤其是在处理复杂的数据转换和多阶段计算时,代码量会非常庞大,开发和维护成本较高。
2025-05-12 11:13:01
733
原创 Yarn-tool接口2
/ 它要做7件事 hadoop jar mc8.js com.example.mapreduce.WordCountDriver /要处理的文件夹 /结果路径。// 6. 设置输入路径(D:\vm\wcinput)和输出路径(D:\vm\output01)(4)重新打包生成jar,假设名称为MapReduceDemo1-1.0-SNAPSHOT.jar。// 5. 设置Reduce的键值对泛型。// 4. 设置Map的键值对泛型。// 2. 关联本地的jar包。// 连接到hadoop集群。
2025-05-12 11:12:04
766
原创 Yarn-tool接口
org.apache.hadoop.util.Tool 是 Apache Hadoop 框架里的一个接口,其用途是协助开发可通过命令行运行的 Hadoop 应用程序。ToolRunner 是 Hadoop 提供的一个实用类,可用于运行实现了 Tool 接口的应用程序。run(String[] args):此方法为应用程序的主要执行逻辑,接收命令行参数,返回一个整数代表执行结果(通常 0 表示成功,非 0 表示失败)。让自己编写的程序打包之后得到jar包,也可以支持动态参数,例如在指定的队列中运行程序。
2025-05-12 11:11:22
429
原创 Yarn-概述
通过为每个组织分配专门的队列,然后再为每个队列分配一定的集群资源, 这样整个集群就可以通过设置多个队列的方式给多个组织提供服务了。队列内部又可以垂直划分,这样一个组织内部的多个成员就可以共享这个队列资源了,在一个队列内部,资源的调度是采用的是先进先出(FIFO)策略。但是实际中,资源是有限的,并且在繁忙的群集上, 应用程序通常将需要等待其某些请求得到满足。现在,如果B用户在其他作业仍在运行时开始第二个作业,它将与B的另一个作业共享其资源,因此B的每个作业将拥有资源的四分之一,而A继续将拥有一半的资源。
2025-05-12 11:10:31
875
原创 数据压缩-
数据压缩可以分为有损压缩和无损压缩两类。即使你的MapReduce的输入输出文件都是未压缩的文件,你仍然可以对Map任务的中间结果输出做压缩,因为它要写在硬盘并且通过网络传输到Reduce节点,对其压缩可以提高很多性能,这些工作只要设置两个属性即可,我们来看下代码怎么设置。数据压缩是指在不丢失或尽可能少丢失数据信息的前提下,通过特定的算法和技术,对原始数据进行重新编码和处理,以减少数据存储空间或传输带宽的过程。,只需要在dirvier类的代码中,去设置在reduce端输出压缩开启,并设置压缩的方式即可。
2025-05-12 11:09:04
965
原创 序列化模块
序列化的时候,它会自动被调用,将一个内存中的对象,序列化成为一个字节序列。如果序列化的属性不是Hadoop的序列化类型,就要调用相应的方法把它进行序列化。如果本身就是序列化的属性,就调用这个属性的write方法,写入输出流variable.write(out)反序列化时调用的方法,将一个字节序列,转成内存中的对象。下面我们来看一个例子:通过代码来定义一个类,并创建它的一个对象,把这个对象保存到文件中(序列化),然后再写代码读取这个文件并还原回来。常用的Java的数据类型与Hadoop的序列化的类型对比。
2025-05-12 11:07:55
801
原创 分区器模块
在MapReduce框架中,分区器(Partitioner)是一个关键组件,其主要作用是决定由一个maptask生成的键值,最终是生成在哪个文件中的。我们在做词频统计的时候,把a-m开头的保存在一个文件中,其他单词的统计结果保存在另一个文件中。回顾我们的需求,我们在做词频统计的时候,把a-m开头的保存在一个文件中,n-z开头的保存在另一个文件中。自定义分区器:如果使用自定义分区器,可以根据特定的逻辑(如键的首字母、键的范围等)将数据分配到不同的Reducer中。(2)它返回的分区号是从0开始,且是连续的。
2025-05-12 11:06:59
379
原创 mapreduce-wordcount程序2
uce函数的入参是kv结构,k是单词,v是集合,每个元素值都是1。reduce函数的返回值格式也是kv结构,k是每个单词,v是汇总之后的数字。此时要注意,我们的程序并没有使用集群中的资源,在yarn中看不到运行的任务,我们也没有把结果保存在hdfs中。请注意Mapper的来源,它是mapreduce.Mapper,而不是mapred.Mapper。map函数的入参是kv结构,k是偏移量,v是一行的具体内容。map函数的返回值格式也是kv结构,k是每个单词,v是数字1。它的核心代码有7个步骤,属于固定写法。
2025-05-12 11:04:25
1039
原创 mapreduce-wordcount程序
该阶段编程模型中有一个 reduce 函数需要开发人员重写,reduce 函数的输入也是一个 <key, value> 对,reduce 函数的输出也是一个 < key,List<value>> 对。Reduce是会跨节点fetch属于自己的数据,并进行处理,把结果进行汇总,存储到HDFS。该阶段的编程模型中会有一个 map 函数需要开发人员重写,map 函数的输入是一个 < key,value > 对,map 函数的输出也是一个 < key,value > 对,key和value的类型需要开发人员指定。
2025-05-12 11:02:33
330
原创 hdfs客户端操作-文件上传
接下来,我们向/maven下上传一个文件。要用到的api是put (或者copyFormLocalFile)。上传结束之后,回到hdfs的UI界面去检查是否成功。// 1 获取文件系统。
2025-05-12 10:59:46
299
原创 idea写spark程序
在项目根目录下建立文件夹input,并穿件两个文本文件:word1.txt, word2.txt。(2) 打开命令提示符(CMD),输入以下命令:scala -version 如果显示Scala。的版本信息,说明安装成功。它的功能是wordcount的功能:从指定的文件夹中去读取文件,并做词频统计。如果这里没有看到Scala类的选项,就去检查第2步。添加完成之后,刷新Maven,它会帮助我们去下载依赖。IDEA中,默认是不支持编写Scala的,需要额外配置一个插件。// 读取目录下的所有文本文件。
2025-05-12 10:11:58
834
原创 配置yarn模式——启动集群
2.启动spark和spark的历史服务器。进入/opt/module/spark-yarn/sbin,运行: ./start-all.sh 和 ./start-history-server.sh。在yarn任务面板页面中可以看到任务的信息。使用我们之前配置的脚本:myhadoop start。点击history上的链接,可以跳转进入到spark的历史服务器的界面。注意这里要同时启动hadoop和spark。并通过jps去检查是否有对应的进程。
2025-05-12 09:10:05
287
原创 配置yarn模式
首先在finalshell中打开第一个虚拟机,打开文件/opt/software,cd进入,准备解压文件spark-3.1.1-bin-hadoop3.2.tgz。找到hadoop的配置文件 /opt/module/hadoop-3.1.3/etc/hadoop/yarn-site.xml。使用xsync /opt/module/hadoop-3.1.3/etc/hadoop/同步。使用xsync /etc/profile.d命令同步。
2025-05-12 08:59:21
445
原创 4.21 从0开始的spark-local模式
这里使用单机模式快运行第一个Spark程序,让大家有个基本的印象。在安装Spark时,它就提供了一些示例程序,我们可以直接来调用。进入到spark-local,运行命令spark-submit命令。4.重命名,把解压后的文件夹改成spark-local。接下来的操作,我们把它上传到集群中的节点,并解压运行。1.打开etc/profile.d/my_env.sh文件中,补充设置spark的环境变量。2.通过finalshell连接虚拟机,并上传安装文件到 /opt/software下。
2025-04-21 10:41:34
332
原创 4.21 从0开始配置spark-local模式
在任务还处于运行状态时,可以通过FanLing001:4040来查看。请注意,一旦任务结束,则这个界面就不可访问了。使用source /etc/profile命令让环境变量生效。即在spark运行了第一个程序。
2025-04-21 10:37:25
358
原创 4.21 spark和hadoop的区别与联系
例如,在一个单词统计的场景中,Map任务会将文本文件中的每一行(key为行的偏移量,value为行的内容)转换成以单词为key,数字1为value的中间结果(如“apple” - 1,“banana” - 1)。例如,在一个数据挖掘任务中,如果需要对数据进行多次迭代计算(如机器学习算法中的梯度下降过程),将数据存储在内存中的RDD可以大大减少磁盘I/O操作,提高计算效率。例如,在互联网公司中,对海量的用户行为日志进行分析,这些日志数据量巨大,而且不需要实时处理,Hadoop可以很好地完成这种批量处理工作。
2025-04-21 08:31:26
900
原创 3.27配置Hadoop集群-配置历史和日志服务
echo " --------------- 启动 historyserver ---------------"echo " --------------- 启动 hdfs ---------------"echo " --------------- 启动 yarn ---------------"echo " --------------- 关闭 yarn ---------------"echo " --------------- 关闭 hdfs ---------------"
2025-04-01 10:58:25
678
原创 3.18 配置Hadoop集群-修改配置文件
刚才我们是在hadoop100这台机器上进行了正确的设置,但是,其他的2台机器也要做相同的配置。这里一共有5个文件要配置:分别是core-site.xml,hdfs-site.xml,yarn-site.xml,-- 指定ResourceManager的地址-->-- 指定hadoop数据的存储目录 -->-- 配置HDFS网页登录使用的静态用户为。-- 指定NameNode的地址 -->-- 指定MR走shuffle -->-- nn web端访问地址-->-- 环境变量继承 -->
2025-03-18 16:01:34
881
原创 3.17 配置hadoop集群-理论准备
Yarn和HDFS的关系说明:逻辑上分离,物理上在一起。HDFS,是一个分布式文件系统,用于存储文件。HDFS集群:一主加三从,额外再配一个小秘书。
2025-03-17 10:05:56
278
原创 3.3克隆虚拟机组成集群
得到了hadoop101,hadoop102,由于它们是从hadoop100直接扣克隆过来的,所以目前他们的ip和hostname都是很hadoop100是一样的,这里就需要修改下。配置IP的步骤是一样的。只是要注意修改对应的名称和IP:在第一台机器的基础上顺延即可。
2025-03-04 14:24:08
245
原创 3.3 克隆虚拟机
找到hosts文件,在末尾添加 192.168.10.100,然后ping通。使用安装命令yum install tree 发现报错。之后重新yum install tree。(三)修改本机名并配置hosts。
2025-03-04 10:34:51
209
原创 如何安装vm和centos
选择“Linux”作为客户机操作系统,版本选择“CentOS 7”,点击“下一步”。- 打开VMware Workstation Pro,选择“创建新的虚拟机”。- 选择“创建新虚拟磁盘”,设置磁盘大小(建议40GB以上),点击“下一步”。- 勾选“增强型键盘驱动程序”,并根据需要选择是否安装其他附加组件。- 勾选“我接受许可协议中的条款”,继续点击“下一步”。- 选择语言(推荐“简体中文”),点击“下一步”。- 选择“稍后安装操作系统”,点击“下一步”。- 设置虚拟机名称和存储位置,点击“下一步”。
2025-02-24 22:53:44
348
原创 2.18 Spark初始
路径中的特殊字符 :1 .开头是隐藏文件 2 ..当前目录的上一级目录 3 ~波浪线,当前用户的home目录,比如root用户home目录是/root。阶段2:大数据时代——分布式处理 多台电脑 转存到硬盘 耗时长。cd / 根目录 pwd 当前路径 相对路径 绝对路径。阶段3:实时大数据时代 将数据保存在内存 内存比磁盘快。Hadoop优势:高可靠性 高拓展性 高效性 高容错性。阶段1:单机时代 数据少 一台电脑足够处理。
2025-02-18 22:07:09
241
原创 11.25 案例
val word = w.toLowerCase() // 把单词全部变成小写。List,Array。if(wordMap.contains(word)){ //if(出现)//W:表示一个非字(不是一个字,例如:空格,逗号,句号...)writer.println("the:28次")//2 把字符串拆分为一个一个的单词,保存到数组。writer.println("结果是:")//3 统计每个单词出现的次数。//5 把结果写入到一个文件中。//\\:表示正则表达式。//1 读入文件的内容。
2024-11-28 10:07:22
248
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅