- 博客(59)
- 收藏
- 关注
原创 finalshell的配置
我们在从本机开始去连接虚拟机时,都是通过ip地址来连接的,不方便。我们可以通过hostname的方式来访问。ping hadoop100或者是ping 192.168.10.100都应该可以通。5. 找到刚才建立的连接,点击连接。主机:192.168.10.100,或者是配置hosts之后的主机名。1. 点击开始安装,安装到D盘。安装目录没有中文,没有空格。输入对应主机的用户名密码。2. 启动finalshell,新建。2. 使用ping 命令来检查。1. 修改hosts文件。来,我们一起操作一下。
2025-05-07 09:18:18
101
原创 序列化与反序列化
序列化的时候,它会自动被调用,将一个内存中的对象,序列化成为一个字节序列。如果序列化的属性不是Hadoop的序列化类型,就要调用相应的方法把它进行序列化。Java的序列化是一个重量级序列化框架(Serializable),一个对象被序列化后,会附带很多额外的信息(各种校验信息,Header,继承体系等),不便于在网络中高效传输。下面我们来看一个例子:通过代码来定义一个类,并创建它的一个对象,把这个对象保存到文件中(序列化),然后再写代码读取这个文件并还原回来。// 反序列化:将字节序列转换为内存中的对象。
2025-05-07 09:15:41
406
原创 ETL介绍
它是指对采集到的原始数据进行预处理,以去除错误、重复、不完整或不一致的数据,使数据符合分析要求的过程。对于reduce函数来说,它的输入参数是:<刷选后的每一行的内容,[null,null,...]>,对于我们的需求来说,并不需要这个阶段: 没有汇总的需求,直接使用Map的结果。map阶段:按行读入内容,对内容进行检查,如果字段的个数少于等于11,就删除这条日志(不保留)去除日志中字段个数小于等于11的日志内容。<偏移量,每一行的内容> → <刷选后的没一行的内容,null>// 5 设置输入和输出路径。
2025-05-07 09:14:51
467
原创 HDFS概述
其次,它是分布式的,由很多服务器联合起来实现其功能,集群中的服务器有各自的角色。随着数据量越来越大,在一个操作系统存不下所有的数据,那么就分配到更多的操作系统管理的磁盘中,但是不方便管理和维护,迫切需要一种系统来管理多台机器上的文件,这就是分布式文件管理系统。HDFS中的文件在物理上是分块存储(Block),块的大小可以通过配置参数(dfs.blocksize)来规定,默认大小是128M。(1)文件上传 HDFS 的时候,Client 将文件切分成一个一个的 Block,然后进行上传;
2025-05-07 09:13:59
348
原创 配置hadoop集群-配置历史和日志
由于任务是在具体的节点上运行的,所以运行日志也是产生在具体的节点上,但是我们希望应用完成以后,将程序运行日志信息上传到HDFS系统上,这样就可以方便的查看到程序运行详情,方便开发调试。但是,请注意,在哪一台上配置了,就应该在哪一台上去启动。和之前的配置一样,我们需要把这个更新之后的yarn-site.xml文件同步到其他的机器。在hadoop的安装目录下,打开mapred-site.xml,并在该文件里面增加如下两条配置。请注意,你在配置的时候指定哪个节点是历史服务器,就在哪里启动,请不要搞错了。
2025-05-07 09:13:01
366
原创 配置hadoop集群-集群配置
对普通用户来说, Hadoop就是一个东西,一个整体,它能给我们提供无限的磁盘用来保存文件,可以使用提供强大的计算能力。但是,我们要把它搭建起起来,就必须要了解它的基本组成,知道它的内部分工。(1)NameNode(nn):存储文件的元数据,如文件名,文件目录结构,文件属性(生成时间,副本数,文件权限),以及每个文件的块列表和块所在的DataNode等。每个框都是一个进程,可能都运行在一台主机上,但是,属于不同的集群。(2)DataNode(dn):在本地文件系统存储文件块数据,以及块数据的校验和。
2025-05-07 09:11:49
234
原创 配置hadoop集群--免密登录
所以,对于hadoop100来说,它要生成公钥,并拷贝到hadoop100, hadoop101, hadoop102上去。我们希望达成的目标是:希望用户在hadoop100登录到hadoop101时,hadoop101不需要输入密码。hosts文件中的主机名和ip地址是否与finalshell中的连接的主机名以及对应的虚拟机上的ip地址一致。(4)在hadoop100上,输入ssh hadoop101命令,看看是否可以免密登录?例如: 在hadoop100上,也需要去设置针对它自己的免密登录。
2025-05-07 09:10:57
394
原创 hadoop的运行模式
在一台机器上模拟出 Hadoop 分布式系统的各个组件,各个组件在逻辑上是分离的,但是都运行在同一台物理机器上,以此来模拟分布式环境。我们在前面的课中把hadoop100上安装了java,hadoop这个两个软件,那我们要如何才能把对于的文件拷贝到hadoop101上去?其中,第1项我们在之前克隆虚拟机的环节中已经完成了。我们上一节课使用的就是本地运行模式hadoop100。如果要拷贝的是文件夹,就把文件夹下的内容都拷贝。(2)$pdir/$fname: 要拷贝的文件路径/名称。
2025-05-07 09:09:43
211
原创 RDD算子的基本介绍
在 Apache Spark 中,RDD(弹性分布式数据集)是核心的数据抽象,RDD 算子可分为转换算子(Transformation)和行动算子(Action)。转换算子会基于现有的 RDD 创建一个新的 RDD,这些操作是惰性的,即只有在遇到行动算子时才会真正触发计算。flatMap(func):对 RDD 中的每个元素应用函数,然后将结果扁平化,生成一个新的 RDD。map(func):对 RDD 中的每个元素应用指定的函数,生成一个新的 RDD。take(n):返回 RDD 中的前 n 个元素。
2025-05-07 09:08:46
243
原创 如何搭建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-07 08:51:37
445
原创 如何在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-07 08:50:39
397
原创 Spark集群搭建
9.启动SPARK集群。进入到hadoop100机器,切换目录到/opt/module/spark-standalone/sbin下,运行命令 ./start-all.sh。进入/opt/module/把解压的内容重命名一下,mv spark-3.1.1-bin-hadoop3.2/ spark-standalone。注意,这里不要省略./,它表示的是当前目录下的start-all命令,如果省略了./,它就会先去环境变量PATH中指定的目录来找这个命令。
2025-05-07 08:48:54
293
原创 RDD的概念
Resilient Distributed Dataset 叫做弹性分布式数据集,是Spark中最基本的数据抽象,是分布式计算的实现载体,代表一个不可变,可分区,里面的元素并行计算的集合。- Distributed: 分布式存储的,表示数据是存放在不同的机器上的。类比理解scala中的不可变集合或者是使用val修饰的变量。并行计算:集合中的数据可以被并行的计算处理,每个分区数据被一个Task任务处理。可分区的:集合的数据课划分成为很多部分,每部分称为分区:Partition。// 创建一个本地集合。
2025-05-07 08:47:01
252
原创 Yarn的概念
每个应用程序都有一个对应的 ApplicationMaster,它负责该应用程序的资源请求和任务调度。yarn中的从角色,作为每个节点上的代理,NodeManager 负责管理该节点上的资源和容器。yarn集群中的主角色,它是 YARN 中的全局资源管理器,负责整个集群的资源分配与调度。1.FIFO Scheduler(先进先出调度器)yarn是一个通用资源管理系统和调度平台。2.mapreduce 的作用是 计算。3.yarn 的作用是 调度。1.hdf 的作用是 存储。
2025-04-18 15:06:32
186
原创 MapReduce 工作原理详解
**分区(Partitioning)**:根据 key 的哈希值决定数据发送到哪个 Reduce 任务。- **Combiner(可选)**:本地 reduce,减少网络传输量。- **排序(Sorting)**:每个分区内的数据按键排序。- **数据本地性优化**:优先在存储数据的节点上执行任务。- **Map 阶段**:处理输入数据并生成中间键值对。- **Reduce 阶段**:对中间结果进行汇总处理。- **数据从 Map 端拷贝到 Reduce 端**
2025-03-31 20:02:08
258
原创 Hadoop集群常用命令
启动所有Hadoop服务。# 停止所有Hadoop服务。# 列出所有运行中的应用程序。# 查看MapReduce作业状态。## MapReduce作业命令。# 检查YARN节点状态。# 查看集群资源使用情况。# 提交MapReduce作业。# 检查HDFS一致性。# 检查HDFS状态。# 检查集群健康状态。## HDFS文件操作命令。## YARN作业管理命令。# 查看应用程序日志。# 设置目录空间配额。
2025-03-31 20:01:25
445
原创 如何配置虚拟机的IP上网
具体操作:选择控制面板->网络连接->VMware network Adapter Vmnet8->点击右键,选择属性,TCP/IPv4协议,改成:IP4地址:192.168.10.1 IPV4网关:192.168.10.2。linux中,ip地址是写在配置文件(/etc/sysconfig/network-scripts/ifcfg-ens33)中,这里使用 vi 编辑器去修改即可!让所有的vm配置的虚拟机使用NAT时,它们的网段都是一致的。具体设置为:进入虚拟机,修改对应的IP。
2025-03-02 22:39:31
238
原创 虚拟机中的指示命令
14. 在命令模式下:shift+zz:实现快速保存退出 G:可以调到文件的最后一行 gg:跳到文件的第一行 Home:快速定位到行首 End:可以快速定位到行尾 yy:复制光标所在行的内容 (n)yy:ex:3yy:复制当前行往下3行内容 p:当前行的下一行粘贴 P:当前行的上一行粘贴 dd:删除光标所在当前行内容 (n)dd:ex:3dd 删除当前行往下的3行 u:撤销上一步的操作 ctrl+r:反撤销(重做上一步的操作)会把111写入a.txt这个文件中,把之前的内容删除掉。
2025-03-02 22:38:34
455
原创 Linux中的查看命令
8.ls命令:-l:以长格式显示文件和目录的详细信息,包括文件权限、所有者、组、大小、修改时间等。-a:显示所有文件和目录,包括以 . 开头的隐藏文件和目录。-R:递归地列出指定目录及其子目录下的所有文件和目录。ex:touch a. txt mkdir 创建一个文件夹 mkdir -p:创建目录,如果父级目录不存在,就建立一个父级目录。7.删除文件:rm 删除的文件 rm -f:强制删除,无需向用户确认。2.#:命令提示符,从这个位置可以开始输入命令,另一个提示符为$,如果是root,则提示为#;
2025-03-02 22:37:40
236
原创 如何安装配置虚拟机
稍等一下,选择中文语言,继续,找到安装位置并进入,直接完成,开始安装,设置密码(自定义),安装完成重启虚拟机。二:安装完成之后,点击文件心建虚拟机,选择自定义,下一步,点击下一步,选择稍后安装操作系统,选择完成下一步,客户端操作系统Linux,版本(Centos 7 64位),下一步,虚拟机名称自定义,运行位置自选,下一步,处理器数量(1),每个处理器内核数量(1),一直点下一步到最后完成。用来在自己的电脑上安装虚拟机。如果安装VMware17.6时,提示缺少文件,再来安装它,否则不用。
2025-02-20 21:02:30
141
原创 scala的泛型
getMiddleEle(List(1,2,3,4,5)) ==> 5/2 = 2 ==> 下标为2的元素是:3。getMiddleEle(List(1,2,3,4)) ==> 4/2 = 2 ==> 下标为2的元素是:3。List[Int]: List 是列表, [Int] 是说列表中的每个元素都是int。2.泛型在编译时生效,在运行时不可见,最后产生的class文件中是没有泛型的。def 函数名(参数名: 类型): 返回值的类型 = {用它来获取当前的列表的中间位置的值。[]: 里面的是泛型。
2024-12-11 22:47:45
313
原创 scala的隐式转换2
第二步: 定义一个隐式转换函数,把BaseUser ---> PowerUser。第一步:定义一个有updateUser功能的类 PowerUser。隐士类:implicit class == 隐式转换函数 + 类。implicit函数 + 普通类StrongString。目标:给字符串添加新功能。
2024-12-11 22:41:56
306
原创 Scala的隐式转换
②:函数名字不重要,重要的是参数类型和返回值类型。2.scala的隐式转换函数:implicit def 函数名。1.隐式转换:自动的,偷偷的把数据A->B。隐式转换:implicit修饰的函数。3.隐式值:implicit 修饰变量。有可能会成功,也有可能失败。特点:①:被自动调用。不能转换为Int类型。
2024-12-10 11:46:57
317
原创 scala的正则表达式
6. 脱字符 ^ 如果在正则的最前面,表示,要匹配的内容必须在字符串的开头。7. 脱字符 $ 如果在正则的最后面,表示,要匹配的内容必须在字符串的结尾。3. [A-Z]: 表示从A到Z的26个字母中的任意的一个。8. 英文的 . : 表示除了换行之外的其他的任意一个字符。2. [a-z]:表示从a到z的26个字母中的任意一个。4.1 [^ab]: 表示匹配一个字符,除a,b之外的。4.[0-9]: 表示从0 到10 中的任意的一个。10. \D: 表示除\d之外的字符。: 表示0次或者是1次。
2024-12-04 20:49:04
277
原创 scala的匹配语言
作业:从Map中打印所有年龄为1971的创业者的信息。1.匹配类型:Any任意的,匹配的类型无所谓。3.匹配case class。
2024-12-03 12:58:17
169
原创 scala的读取文件
1.如果当前的分数不等于预设分数。则名次 +1 .更新预设分数。drop(1) 让迭代器跳过第一行数据,因为第一行是。2.如果当前的分数,则名次不变。对有序的列表,从前开始向后排序。1.读入文件 , 按行读取。2.添加学生到list。
2024-11-27 18:37:31
301
原创 scala的数组和字符串
数组:Array:二维数组创建方式:val arr=Array.ofDim[Int](行,列)grouped():将几个元素分为一组。1.substring(起点下标,终点下标-不包含终点)2. .toInt为转化为int类型的数。
2024-11-20 18:39:35
285
原创 scala 的迭代器
println(it1.next())//作用: 获取当前元素 + 移动迭代器。take 只处理当前开始的,获取指定数量的元素,返回一个新的迭代器。drop 会跳过指定数量的元素,返回一个新的迭代器。it1.next() //移动一次迭代器。5.zip 会在短的迭代器耗尽时停止。1.常用方法 next。
2024-11-13 21:16:40
228
原创 scala的case class
3.它内置实现了一些方法(equals,hashCode ,toString)case class 类名(属性名: 类型,属性名: 类型)1.数据只读(他的属性值不能改)case class 的特点。特别适用于来定义数据格式。2.可以省略(new)Set : 特点去重。
2024-11-13 21:12:49
214
原创 scala的set集合
默认情况下,scala使用的是不可变集合,如果想使用可变集合,需引用cala.collection.mutable.Set包,默认引用scala.collection.immutable.Set包。scala的set(集合)是没有重复的对象集合,所有元素都是唯一的。差集 diff : 找到小花选了 ,但小明没有选的。不可变导包 immutable:不可变。并集 union : 找出他们合计选的课程。交集 : intersect 共有的课程。可变导包 mutable:可变。
2024-11-06 18:45:12
207
原创 scala的包及其导入
在这个包下的所有的类中,都可以直接使用,而不需要引入!格式: import 包名.{旧名字 => 新名字}1.创建包: 在src上右键,新建软件包。在包中建Student类(class)3.在包上右键,创建类。4.导入: import 包名.类名。包对象中,可以放置公共数据,方法。
2024-10-31 13:24:03
182
原创 scala的访问权限
可以 可以 不可以 不可以 不可以。可以 不可以 不可以 不可以 不可以。Scala中有四种访问权限,分别为:默认访问权限,protected访问权限,private访问权限和private[this]访问权限。
2024-10-26 20:31:49
204
原创 scala中trait的加载顺序
在新定义一个对象时,该对象会先调用父类的构造器。而在父类构造器中由于变量的没有赋值,实际相当于null,在通过变量(实际为null)调用方法就会报空指针异常的问题。trait构造器不能带参数,scala中trait可以支持多继承,也可以在多继承的同时混入多个特质。类和trait都可以定义成员变量和方法,成员变量和方法可以是抽象的也可以是具体的。有多个父构造器,按从左到右的顺序,先执行左边的父构造器,在执行右边的父构造器。trait的加载顺序先执行父类在执行子类。
2024-10-23 15:20:19
284
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人