- 博客(74)
- 收藏
- 关注
原创 Spark,集群搭建-Standalone
在之前的学习中我们有了一个软件包 spark.3.1.2-bin-hadoop3.2.tgz (eg我的在 /opt/software目录下)把这个软件包解压到 /opt/module 下(也可以自己决定解压到哪里)。进入到hadoop100机器,切换目录到/opt/module/spark-standalone/sbin下,运行命令 ./start-all.sh。打开 /opt/module/spark-standalone/conf 中可看到修改文件内容前把 .template 后缀名都删掉再打开。
2025-05-13 15:23:06
380
原创 Spark,RDD中的转换算子
对具有相同键的所有值进行聚合操作 = 统计词频。对数字1-10进行过滤,过滤出偶数。对数字1-10进行乘除,*2。reduceByKey算子。filatMap算子。
2025-05-13 12:31:51
67
原创 Spark,在shell中运行RDD程序
/ 将元组的value按照key来分组,对所有的value执行聚合操作(相加)在根目录下可见out111文件,文件打开后可以看到,word2.txt文件内单词被拆分。在hdfs中/wcinput中创建一个文件:word2.txt在里面写几个单词。// 将单词转换为元组对象,key是单词,value是数字1。// 将单词进行切割,得到一个存储全部单词的RDD。// 收集RDD的数据并打印输出结果。// 将结果储存在out111中。// 读取文件,得到RDD。按住ctrl+D退出。
2025-05-13 12:30:57
158
原创 Spark,Idea中编写Spark程序 2
命令为:[root@hadoop100 sbin]# spark-submit --class WordCount_online --master yarn /opt/module/original-untitled-1.0-SNAPSHOT.jar /wcinput /output1。// 写一个spark程序,统计input目录下所有文本文件中单词的词频。// 将所有分区的数据合并成一个分区。// 配置 Spark 应用程序。// 读取目录下的所有文本文件。// 把结果保存在output下。
2025-05-13 12:30:26
363
原创 Spark,Idea中编写Spark程序 1
在项目根目录下建立文件夹input,并穿件两个文本文件:word1.txt, word2.txt。它的功能是wordcount的功能:从指定的文件夹中去读取文件,并做词频统计。如果这里没有看到Scala类的选项,就去检查第2步。添加完成之后,刷新Maven,它会帮助我们去下载依赖。IDEA中,默认是不支持编写Scala的,需要额外配置一个插件。// 提取文本内容并执行 WordCount 操作。// 将所有分区的数据合并成一个分区。// 配置 Spark 应用程序。// 读取目录下的所有文本文件。
2025-05-13 12:29:50
368
原创 Spark,所用几个网页地址
YARN的ResourceManager网址:http://hadoop101:8088。History Server网址:192.168.56.100:18080。HDFS的NameNode网址:http://hadoop100:9870。2. MapReduce:计算。1. HDFS:存储。3. YARN:调度。
2025-05-13 12:28:45
85
原创 Spark,集群搭建之Yarn模式
对应命令为:spark-submit --class org.apache.spark.examples.SparkPi --master yarn --deploy-mode cluster /opt/module/spark-standalone/examples/jars/spark-examples_2.12-3.1.1.jar 10。进入/opt/module/spark-yarn/sbin,运行: ./start-all.sh 和 ./start-history-server.sh。
2025-05-13 12:27:52
220
原创 Spark,配置历史服务
进入 /opt/module/spark-standalone/conf/spark-default.conf.temple 先把名称改成spark-default.conf,再补充两个设置。启动hadoop的hdfs服务(start-dfs.sh),并在根目录创建目录directory。(注:4、5两步在上一条博客中直接一起配置了,所以这里可自行跳过)命令是 ./start-history-server.sh。四、修改spark-env.sh文件。命令是 ./start-all.sh。
2025-05-13 12:27:15
191
原创 Spark,集群搭建-Standalone
在之前的学习中我们有了一个软件包 spark.3.1.2-bin-hadoop3.2.tgz (eg我的在 /opt/software目录下)把这个软件包解压到 /opt/module 下(也可以自己决定解压到哪里)。进入到hadoop100机器,切换目录到/opt/module/spark-standalone/sbin下,运行命令 ./start-all.sh。打开 /opt/module/spark-standalone/conf 中可看到修改文件内容前把 .template 后缀名都删掉再打开。
2025-05-13 12:26:32
291
原创 Spark,从0开始配置Spark的local模式
4.重命名,把解压后的文件夹改成spark-local。因为后续我们还会使用其他的配置方式,所以这里先重命名一次。mv是linux的命令,① 打开etc/profile.d/my_env.sh文件中,补充设置spark的环境变量。2.通过finalshell连接虚拟机,并将文件上传安装文件到 /opt/software下。进入到spark-local,运行命令spark-submit命令。在任务还处于运行状态时,可以通过hadoop100:4040来查看。注:一旦任务结束,则这个界面就不可访问了。
2025-05-13 12:25:47
185
原创 Spark和hadoop的区别与联系
实时数据处理(如 Spark Streaming)、交互式查询(如 Spark SQL)、机器学习(MLlib)、图计算(GraphX)等多场景。组合使用:实际场景中常采用“Hadoop存储数据 + Spark处理数据”的架构,充分利用两者的优势,例如在HDFS上存储原始数据,通过Spark进行实时分析和复杂计算。总之,Hadoop是大数据领域的“地基”,而Spark是构建在其上的“多功能工具”,两者共同推动了大数据技术的发展和应用。二、Spark和Hadoop的区别。1. 同属大数据生态体系。
2025-05-13 12:25:13
328
原创 Spark,数据压缩
DEFLATE 是,直接使用 DEFLATE .deflate 否 和文本处理一样,不需要修改。Snappy 是,直接使用 Snappy .snappy 否 和文本处理一样,不需要修改。Gzip 是,直接使用 DEFLATE .gz 否 和文本处理一样,不需要修改。bzip2 是,直接使用 bzip2 .bz2 是 和文本处理一样,不需要修改。//产生结果的时候,会用3个文件来保存。
2025-05-13 12:24:22
144
原创 Spark,序列化反序列化
/ 1. 创建一个ObjectInputStream对象,构造方法中传入一个InputStream对象。// 2. 使用ObjectInputStream对象中的readObject方法,读取文件中的对象。序列化就是把内存中的对象,转换成字节序列(或其他数据传输协议)以便于存储到磁盘(持久化)和网络传输。反序列化就是将收到字节序列(或其他数据传输协议)或者是磁盘的持久化数据,转换成内存中的对象。常用的Java的数据类型与Hadoop的序列化的类型对比。// 反序列化:将字节序列转换为内存中的对象。
2025-05-13 12:23:38
219
原创 Spark,maven打包
在这种情况下,MapReduce并不是不能做,而是使用后,每个MapReduce作业的输出结果都会写入到磁盘,会造成大量的磁盘IO,导致性能非常的低下。流式计算的输入数据是动态的,会一条一条的过来,是动态产生的,而MapReduce的输入数据集是静态的,不能动态变化。注:我们集群上安装的java环境是1.8的,那么我们生成的代码也必须是这个版本的,否则,就会无法运行。我们集群上安装的java环境是1.8的,那么我们生成的代码也必须是这个版本的,否则,就会无法运行。它的任务会跑好几个小时,好几天。
2025-05-13 12:22:56
266
原创 Spark,流量统计案例
拥有一个文件,其中文件内容(内容随便写符合规矩即可)分别为电话号码 上行流量 下行流量(第一行是写给大家看的 注释不用写出来)//三个属性:手机号,上行流量,下行流量。//定义一个获取总流量的方法。//定义get/set方法。提前创好一个文件夹分为四个类。//hadoop 序列化。
2025-05-13 12:22:15
249
原创 Spark,HDFS客户端操作 2
参数优先级排序:(1)客户端代码中设置的值 >(2)然后是服务器的自定义配置(xxx-site.xml) >(3)服务器的默认配置(xxx-default.xml)这一小结,我们来通过hadoop的相关api,实现通过代码的方式去创建文件夹。接下来,我们看如何去下载文件。这里要用的API是fs.delete,用于删除 HDFS 中的文件或目录。文件更名和文件移动本质是一样的: 更新了这个文件的访问路径。注:如果执行上面代码,下载不了文件,有可能是你电脑的微软支持的运行库少,需要安装一下微软运行库。
2025-05-12 11:30:17
780
原创 Spark,IDEA编写Maven项目
在项目的src/main/resources目录下,新建一个文件,命名为“log4j.properties”。注:这里的dependencies要这一步中的hadoop-client要和我们前面客户端准备中下载的hadoop保持一致。System.out.println("路径: " + fileStatus.getPath());System.out.println("根目录下的文件和目录信息:");
2025-05-12 11:29:28
346
原创 Spark, MapReduce工作原理
该阶段编程模型中有一个 reduce 函数需要开发人员重写,reduce 函数的输入也是一个 <key, value> 对,reduce 函数的输出也是一个 < key,List<value>> 对。该阶段的编程模型中会有一个 map 函数需要开发人员重写,map 函数的输入是一个 < key,value > 对,map 函数的输出也是一个 < key,value > 对,key和value的类型需要开发人员指定。Shuffle:将 Map 输出的键值对按 Key 分组,发送到对应的 Reduce 节点。
2025-05-12 11:28:22
370
原创 Spark,hadoop 集群的常用命令
hadoop jar <JAR文件路径> <主类名> <输入路径> <输出路径>:提交一个 MapReduce 作业。hdfs dfs -rm <路径>:删除指定路径下的文件或目录,若要删除目录,需使用-r选项,如hdfs dfs -rm -r <目录路径>。put '<表名>', '<行键>', '<列族:列限定符>', '<值>':向指定表的指定行键插入数据。hdfs dfs -cp <源路径> <目标路径>:将文件或目录从源路径复制到目标路径。drop '<表名>':删除指定的表(需先禁用)。
2025-05-12 11:26:59
173
原创 Spark,HDFS客户端操作
找到资料包路径下的Windows依赖文件夹,拷贝hadoop-3.1.0到非中文路径(比如d:\hadoop-3.1.0)② 在下方系统变量中新建HADOOP_HOME环境变量,值就是保存hadoop的目录。⑤ 打开电脑终端验证Hadoop环境变量是否正常。hadoop客户端环境准备。③ 配置Path环境变量。Maven的配置同上。
2025-05-12 11:26:22
104
原创 Spark,HDFS概述
把本地的文件上传到HDFS,并删除本地的文件。(1)文件上传 HDFS 的时候,Client 将文件切分成一个一个的 Block,然后进行上传;使用-rm -r命令, 它用来删除目录及目录里面内容,它的格式是: -rm -r 要删除的文件夹。使用-mkdir命令。使用-mv命令,它的格式是: hadoop fs -mv 文件起点 终点。hadoop fs -get (服务器上的文件路径 本地文件路径)表示从HDFS的一个路径拷贝到HDFS的另一个路径。2.如果要保留本地的文件,可以使用 -put 命令。
2025-05-12 11:25:23
324
原创 Spark,配置hadoop集群2
echo " =================== 启动 hadoop集群 ==================="echo " =================== 关闭 hadoop集群 ==================="echo " --------------- 关闭 yarn ---------------"echo " --------------- 关闭 hdfs ---------------"像下图这样查看显示绿色即代表成功!保存后退出,然后赋予脚本执行权限。
2025-05-12 11:24:36
258
原创 Spark,配置hadoop集群1
和之前的配置一样,我们需要把这个更新之后的yarn-site.xml文件同步到其他的机器。在hadoop的安装目录下,打开mapred-site.xml,并在该文件里面增加如下两条配置。进入到我们安装yarn的主机,通过命令来关闭掉yarn和historyServer,然后再重启。请注意:你在配置的时候指定哪个节点是历史服务器,就在哪里启动,请不要搞错了。-- 历史服务器web端地址 -->-- 设置日志聚集服务器地址 -->-- 设置日志保留时间为7天 -->-- 历史服务器端地址 -->
2025-05-12 11:23:59
210
原创 Spark,上传文件
在NameNode上上传<128M文件时可直接上传当文件>128M时会将这个大文件拆分为多个小文件上传。在FinalShell上用命令上传文件就是。先使用命令打开HDFS的NameNode。上传的文件下载下来…2.在yarn上查看上传的文件。上传小文件(小于128M)上传大文件(大于128M)刷新yarn即可查看。
2025-05-12 11:23:26
96
原创 Spark;修改配置文件,启动集群,查看运行结果,纠错
解决办法:可以尝试使用 IP 地址(如 http://192.168.56.100:9870 和 http://192.168.56.100:50070)来访问,看是否能正常访问,以判断是否是域名解析的问题。则说明:该服务可以接受来自任何 IP 地址的连接请求,Hadoop 的 NameNode(默认在 9870 端口提供服务)已经正常启动并监听端口。若集群是第一次启动,需要在hadoop100节点(指定为namenode的节点)格式化NameNode(注意:格式化NameNode,会产生新的集群id)
2025-05-12 11:22:48
472
原创 Spark,hadoop的组成
(1)NameNode(nn):存储文件的元数据,如文件名,文件目录结构,文件属性(生成时间,副本数,文件权限),以及每个文件的块列表和块所在的DataNode等。每个框都是一个进程,可能都运行在一台主机上,但是,属于不同的集群。对普通用户来说, Hadoop就是一个东西,一个整体,它能给我们提供无限的磁盘用来保存文件,可以使用提供强大的计算能力。在Hadoop3.X中,hadoop一共有三个组成部分:MapReduce,Yarn,HDFS。Yarn和HDFS的关系说明:逻辑上分离,物理上在一起。
2025-05-12 11:21:37
170
原创 Spark;scp命令,rsync命令,xsync同步,ssh命令
伪分布式:也是在一台单机上运行,但用不同的 Java 进程模仿分布式运行中的各类节点,特点:Hadoop 启动的这些守护进程都在同一台机器上运行,是相互独立的 Java 进程。eg命令:scp -r /opt/module/jdk1.8.0_212/ root@hadoop102:/opt/module/jdk1.8.0_212/命令:rsync -av /opt/conf/1.txt root@roothadoop102:/opt/conf/$pdir/$fname :要拷贝的文件路径 / 名称。
2025-05-12 11:21:00
275
原创 Spark,Linux克隆
要注意,这里是虚拟机的名称,而不是它的hostname。(2)要将这两台克隆出来的虚拟机和hadoop100保存在同一个磁盘目录下,方便我们统一管理。克隆之后,我们得到了hadoop002,hadoop003,由于它们是从hadoop001直接扣克隆过来的,所以目前他们的ip和hostname都是很hadoop100是一样的,这里就需要修改下。linux中,ip地址是写在配置文件(/etc/sysconfig/network-scripts/ifcfg-ens33)中,这里使用 vi 编辑器去修改即可!
2025-05-12 11:20:10
295
原创 Spark,Linux yum配置
把yum想象成你自己开的一家商场,那么yum的源就是你的供货商。这个源已经失效了,就是你的默认供货商跑路了!如果是win11,它在Windows/system32/hosts 文件,如果是win10,它在C:\Windows\System32\drivers\etc\hosts。我们打开这个文件,并在最后一行的后边,添加三个新行,内容是:IP地址 主机名 eg:192.168.56.101 hadoop100(注:IP地址和主机名之间有一个空格)网络上的免费而稳定的源有很多,这里我们选择阿里云的源。
2025-05-12 11:19:21
360
原创 Spark,Linux配置
这里要注意一下:VMware net work Adpater VMnet8是安装了Vm这个软件之后会自动产生的。重启的命令是reboot,检查是否能Ping通外网。注意:这里的第三个部分的10并不是固定的,我们自己可以约定,但是约定之后就要固定下来。让所有的VM配置的虚拟机使用NAT时,它们的网段都是一致的。修改完成之后,esc退出编辑模式, :wq 保存退出。配置即让自己的虚拟机可以联网,和别的虚拟机通讯。三、设置虚拟机hadoop100的IP。具体设置为:进入虚拟机,修改对应的IP。
2025-05-12 11:18:45
115
原创 配置并克隆虚拟机
配置服务器IP地址用来通信,我们要把多台虚拟机设置为一个集群来工作,就必须给他们配置相同网段的IP地址。重启的命令是reboot,检查是否能Ping通外网。注意:这里的第三个部分的10并不是固定的,我们自己可以约定,但是约定之后就要固定下来。如果不进行设置,每次启动机器时都可能是随机的IP,不方便我们后续操作。让所有的vm配置的虚拟机使用NAT时,它们的网段都是一致的。Step3: 设置虚拟机hadoop100的IP。(3)最后,关闭服务器的防火墙。具体设置为:进入虚拟机,修改对应的IP。
2025-03-03 19:29:37
133
原创 安装vm和centOS
在“新建虚拟机向导”中,选择“典型(推荐)”,然后点击“下一步”。- 选择“安装程序光盘映像文件(ISO)”,点击“浏览”找到下载好的 CentOS `.iso` 镜像文件,然后点击“下一步”。- 在安装信息摘要界面,设置“安装位置”、“软件选择”等选项: - 点击“安装位置”,选择自动分区或手动分区,然后点击“完成”。- 点击“软件选择”,根据你的需求选择安装的软件包组,例如选择“最小安装”。- 选择安装位置,你可以使用默认位置,也可以点击“更改”选择其他路径,之后点击“下一步”。
2025-03-03 19:25:41
262
原创 vi的基本使用
1.如果这个文件不存在,此时就是新建文件,编辑器的左下角会提示:new file。vi编辑器有三种工作模式,分别为:命令模式,输入模式,底线模式。提示:在命令模式下按shift + zz,可实现快速保存退出。由于没有鼠标,我们的操作都是用键盘来控制光标的。2.如果文件已存在,此时就打开这个文件,进入命令模式。底线命令模式:以:开始,通常用于文件的保存和退出。是Linux的内置命令,以命令的方式来运行。4.G键(大写g)可以跳到文件的最后一行。5.8g键(两个小g)跳到文件的第一行。
2025-02-24 20:40:07
218
原创 Linux操作系统命令
当前路径:也叫做当前工作目录是当下用户所处的位置。~波浪线,当前用户的home目录,比如root用户home目录是/root。rm -rf ./bbb 将目录及以下所有递归逐一删除,无需用户确认。相对路径:当前相对当前工作目录开始的路径,会随着当前路径变化而变化。rm -rf /* 将根目录及以下所有递归逐一删除,无需用户确认。mkdir -p:创建目录,如果父级目录不存在,就建立一个新目录。ll -a 命令,显示当前的目录下的文件,包括隐藏文件。ll 命令,用来显示当前的目录下的文件。
2025-02-24 20:38:09
131
原创 scala-图书管理系统
service:业务逻辑,调用DAO。models:模型(操作文件,表示层UI:用户直接操作,调用。附件:师承B站@凡友福 老师。
2024-12-30 10:20:43
119
原创 Scala-隐式转换
getCon(DatabaseConfig("sqlite","localhost"))//使用自己定义的值。//函数的参数类型 和 返回值类型是重要的,它约定了把什么类型转成什么类型。函数的参数类型 和 返回值类型是重要的,它约定了把什么类型转成什么类型。要点:要有一个参数,就要待被转换的类型,返回的类型就是当前的类。//1.在函数的默认参数前面补充关键字:implicit。系统自动完成的:把一种类型的数据转成了另一种类型的数据。//计算d*d-1*d-2*d-3……
2024-12-18 19:06:33
314
原创 scala中的正则表达式
val reg = "(\\d{3})(\\d{4})(\\d{4})".r //能匹配手机号的正则表达式。val reg ="\\W".r //\W表示一个非子:除了0-9 a-z A-Z _之外的。val reg ="\\w".r // \w表示一个字:0-9 a-z A-Z _val reg ="[^a-zA-Z]".r //不是a-z,A-Z中的某一个。val reg ="[a-zA-Z]".r //a-z,A-Z中的某一个。val reg = "a\\Sb".r //\S匹配一个非空白字符。
2024-12-18 19:04:53
399
原创 scala中的正则表达式
val reg = "(\\d{3})(\\d{4})(\\d{4})".r //能匹配手机号的正则表达式。val reg ="\\W".r //\W表示一个非子:除了0-9 a-z A-Z _之外的。val reg ="\\w".r // \w表示一个字:0-9 a-z A-Z _val reg ="[^a-zA-Z]".r //不是a-z,A-Z中的某一个。val reg ="[a-zA-Z]".r //a-z,A-Z中的某一个。val reg = "a\\Sb".r //\S匹配一个非空白字符。
2024-12-18 19:03:56
253
原创 SCALA--泛型
/ var a = ArrayBuffer[Int]()//我定义一个可变数组,每一个元素都是Intl类型。//Array(1,2,3,4,5) ===> 3 ===> 中间元素的下标是:长度/2 ===>5/2=2。//泛型函数在定义函数的时候,把参数类型提取出来,变成一个参数,用[]包起来。//问题:参数的类型是变化的 ===> 泛型 ====> 类型参数化。// T <:类型A。// //[Int]:表示数组中的元素是整形。// //Array:表示一个数组。//它的最大元素是5。
2024-12-18 19:03:06
406
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人