- 博客(95)
- 收藏
- 关注
原创 mapreduce的工作原理
Reduce 阶段: 输入:Reduce 阶段接收 Shuffle 阶段处理后的数据。处理:Reduce 函数对相同键的值进行合并计算,生成最终结果。输出:Reduce 函数的输出是最终结果,通常存储在 HDFS 中^1^。Map 阶段: 输入:Map 阶段接收输入数据,通常是键值对(key-value pairs)。输出:Map 函数的输出是新的键值对,这些中间结果将传递给 Reduce 阶段^1^。Shuffle 阶段: 分区:将 Map 阶段的输出数据进行分区,每个分区对应一个 Reduce 任务。
2025-05-14 14:47:16
115
原创 大数据(数据清洗)
/ 1. 获取一行数据,使用空格进行拆分,判断是否有8个字段。// 这条数据是无意义的,不保留。// 这条数据是有意义的,保留。// 设置reducetask个数为0。一、先修改pom.xml,在后面添加下面代码。// 5 设置输入和输出路径。// 4 设置最终输出类型。// 2 加载jar包。// 3 关联map。二、创建WebLogMapper类。三、创建WebLogDriver类。// 1 获取job信息。
2025-05-14 14:46:41
694
原创 自定义分区器
/如果Key1和Key2的code相同,那么他们会被分配到同一个分区,保存到同一个文件。//产生结果的时候,会用3个文件来保存。在“// 6. 设置输入和输出路径。//如果单词是以a~m开头,那么会被分配到第一个分区。1.在WordCountDriver里面将链接集群注释了。//设置reduceTask的数量。//返回值是0,1,2.....//否则,就分配到第二个分区。//2.重写getPartition方法。//1.获取单词首字符。// 设置自定义分区器。//1.继承Partitioner类。
2025-05-14 14:46:10
125
原创 序列化和反序列化(Java)
/java反序列化:从文件student_java.ser中读出内容,还原这个对象。// //1.让这个类实现Serializable接口。//1.让这个类实现Serializable接口。// //java序列化:把对象保存到一个文件中。//java序列化:把对象保存到一个文件中。// //3.把对象写入到文件中。//3.把对象写入到文件中。// //2.创建一个输出流。//2.创建一个输出流。// //4.关闭。
2025-05-14 14:45:13
294
原创 序列化和反序列化(hadoop)
/readFields:在反序列化的时候,调用。// //hadoop序列化:把对象保存到一个文件中。//dataOutput.write(字段);//hadoop序列化:把对象保存到一个文件中。//write:在序列化的时候,调用。//字段=dataInput.read();//hadoop反序列化:从文件中读取对象。//字段的顺序要与write中的顺序一致。//1.要实现Writable接口。//支持hadoop序列化。//2.补充一个空参构造。//学生类,姓名,年龄。
2025-05-14 14:44:43
213
原创 如何在idea中写spark程序
运行WordCount程序:右键点击WordCount类,选择“Run 'WordCount'”。通过以上步骤,你可以在IntelliJ IDEA中成功配置并运行Spark程序。安装Scala:下载并安装Scala 2.12.15,并配置环境变量1。安装IntelliJ IDEA:下载并安装IntelliJ IDEA。安装Maven:下载并安装Maven 3.5.4,并配置环境变量。安装Scala插件:在IDEA中安装Scala插件。安装JDK:下载并安装JDK 1.8。
2025-05-14 14:44:11
103
原创 作业:jps
来源: NameNode 运行在主节点 (Master) 上,通常通过 start-dfs.sh 或者 start-all.sh 启动脚本启动。功能: DataNode 是实际存储数据块的工作节点,分布在集群的多个 Slave 节点上。功能: NodeManager 是 YARN 下属的一个子模块,专注于单个节点上的容器生命周期管理和服务监控。来源:History Server 则是用来存储已完成应用程序的日志文件,并提供一种机制让用户能够回顾过去作业的表现情况。4、 Master 进程。
2025-05-14 14:43:37
217
原创 Hadoop和Spark生态系统
1.来源:Hadoop MapReduce 的 历史任务服务器,由 mr-jobhistory-daemon.sh start historyserver 启动。1.来源:Spark 集群的 工作节点(Worker Node),由 start-worker.sh 启动。1.来源:Spark 的 历史任务服务器,由 start-history-server.sh 启动。1.来源:Hadoop HDFS 的 数据节点,由 start-dfs.sh 启动。②接收客户端提交的任务,分配给 Worker 执行。
2025-05-14 14:43:02
119
原创 Spark缓存-persist
MEMORY_ONLY_SER:将 RDD 以序列化的 Java 对象形式存储在内存中,相较于 MEMORY_ONLY,序列化后占用的内存空间更小,但读取时需要进行反序列化操作,会带来一定的性能开销。MEMORY_ONLY:将 RDD 以 Java 对象的形式存储在 JVM 的内存中。MEMORY_AND_DISK:优先把 RDD 以 Java 对象的形式存储在 JVM 的内存中。MEMORY_AND_DISK_SER:优先将 RDD 以序列化的 Java 对象形式存储在内存中,内存不足时存储到磁盘上。
2025-05-14 14:39:36
295
原创 SparkSQL的基本使用
2014 年 1.0 版本更新,Shark 和 SparkSQL 项目的负责人宣布停止 Shark 的开发,支持 Shark 发展到达终点,SparkSQL 的时代到来2。易整合:SparkSQL 无缝整合了 SQL 查询与 Spark 编程,可以随时用 SQL 或者 DataFrame 的 API 进行处理结构化数据,并且支持多语言(Java、Scala、Python、R)2。统一的数据访问:使用相同的方式,连接不同的数据源或者不同文件格式中的数据,支持读写数据从不同的数据来源到不同的数据来源2。
2025-05-14 14:38:52
146
原创 MySQL数据库创建新的数据库和数据表
如果你更喜欢使用图形界面工具,可以使用MySQL Workbench、phpMyAdmin等工具来创建数据库。以MySQL Workbench为例,打开工具后,连接到你的MySQL服务器,然后在左侧导航栏右键点击“数据库”,选择“创建数据库”,输入数据库名称,点击“应用”即可完成创建。首先,确保你已经安装了MySQL数据库。创建完数据库后,我们需要在数据库中创建表。在MySQL中,可以使用CREATE TABLE语句创建新表。在MySQL中,可以使用CREATE DATABASE语句创建一个新的数据库。
2025-05-14 14:38:20
171
原创 配置hosts
现在我们可以通过finalshell这个工具来连接我们的远程服务器,不过我们连接主机的时候,需要填入对方的ip地址,这个很麻烦。hosts 文件是一个本地的文本文件,它的作用是将主机名(www.douyin.com)映射到对应的 IP 地址,在 DNS(域名系统)解析之前,系统会先查询 hosts 文件来确定目标主机的 IP 地址。Yum是一个linux工具,用来从网络下载安装软件到linux操作系统中,在此之前,我们先要确保虚拟机的网络是通畅的(ping www.baidu.com)。
2025-05-14 14:37:39
306
原创 克隆虚拟机组成集群
在随后的设置中,请注意两点:(1)要给其他两台虚拟机取不同的名字。要注意,这里是虚拟机的名称,而不是它的hostname。克隆之后,我们得到了hadoop101,hadoop102,由于它们是从hadoop100直接扣克隆过来的,所以目前他们的ip和hostname都是很hadoop100是一样的,这里就需要修改下。hosts文件中的主机名和ip地址是否与finalshell中的连接的主机名以及对应的虚拟的ip地址一致。vm软件提供了克隆的功能,它可以允许我们从一台虚拟机上快速克隆出其他的一模一样的主机。
2025-05-14 14:36:47
267
原创 安装Hadoop并运行WordCount程序
访问 http://localhost:9870 查看 HDFS 界面,http://localhost:8088 查看 YARN 界面。Hadoop 依赖 Java,首先需要安装 Java 开发工具包(JDK)。四、运行 WordCount 程序。二、安装 Hadoop。三、启动 Hadoop。
2025-05-13 09:24:32
240
原创 克隆虚拟机组成集群
sudo hostnamectl set-hostname hadoop-slave1 # 从节点1。sudo hostnamectl set-hostname hadoop-slave2 # 从节点2。sudo hostnamectl set-hostname hadoop-master # 主节点。-- 副本数,通常等于从节点数量 -->http://hadoop-master:8088 # YARN 资源管理界面。http://hadoop-master:9870 # HDFS 管理界面。
2025-05-13 09:23:58
632
原创 搭建大数据学习的平台
Hadoop:http://hadoop-master:9870(HDFS)和 http://hadoop-master:8088(YARN)虚拟机:至少 3 台(1 主 2 从),每台 4GB 内存,50GB 硬盘。物理机:建议 16GB 内存以上,500GB 硬盘,多核 CPU。访问:http://hadoop-master:8081。2. Spark 与 Hadoop 集成。3. HBase 与 Hadoop 集成。1. Hive 与 Hadoop 集成。配置高可用(HA)模式(可选)
2025-05-13 09:23:09
859
原创 Spark目前支持的部署模式。
SPARK_HOME/sbin/start-worker.sh spark://hadoop-master:7077 # 从节点。--master:指定集群管理器(如 local、spark://host:port、yarn)。--deploy-mode:Driver 运行位置(cluster 或 client)。--executor-memory:每个 Executor 的内存大小。--num-executors:启动的 Executor 数量。
2025-05-13 09:22:29
793
原创 配置集群(yarn)
ResourceManager 的 Web 界面地址为:http://resourcemanager:8088。集群环境规划:明确各节点的角色,如 ResourceManager、NodeManager 等。用户创建:创建一个专门用于 Hadoop 操作的用户,例如hadoop。时间同步设置:安装 NTP 服务,确保集群中所有节点的时间保持一致。-- NodeManager使用的容器运行时 -->-- ResourceManager地址 -->-- 容器的最小和最大内存 -->
2025-05-13 09:21:51
271
原创 RDD的五大特征
特性:对于键值对 RDD(Key-Value RDD),可以指定分区器(如 HashPartitioner 或 RangePartitioner)。特性:RDD 保存对其父 RDD 的依赖关系,分为窄依赖(Narrow Dependency)和宽依赖(Shuffle Dependency)。特性:RDD 是分区的集合,每个分区在集群的不同节点上存储。特性:RDD 的每个分区可能有一个首选位置列表(如 HDFS 块的位置)。特性:RDD 的每个分区都有一个计算函数,用于生成该分区的数据。
2025-05-13 09:21:02
145
原创 idea写spark程序
选择 Maven,勾选 Create from archetype,选择 org.apache.maven.archetypes:maven-archetype-quickstart。填写 GroupId(如 com.example)和 ArtifactId(如 spark-example),点击 Next。-- 根据你的 Spark 版本调整 -->-- Spark Streaming (可选) -->-- Spark SQL (可选) -->
2025-05-13 09:20:15
356
原创 打包spark代码在集群中运行
示例:hdfs dfs -put target/spark-example-1.0-SNAPSHOT.jar /user/spark/apps/打包后的文件位于 target/spark-example-1.0-SNAPSHOT.jar。--executor-cores 每个 Executor 的 CPU 核心数。--executor-memory 每个 Executor 的内存大小。--num-executors 分配的 Executor 数量。确保 Maven 已安装并配置。
2025-05-13 09:19:27
178
原创 RDD案例-数据清洗
这个案例展示了如何使用 RDD 进行基本的数据清洗操作,包括过滤无效数据、格式转换和异常处理。println(s"清洗掉的无效记录: ${rawCount - cleanedCount}")处理更复杂的格式:使用正则表达式或第三方库(如 OpenCSV)解析复杂 CSV。假设你有一个包含用户行为日志的数据集,需要清洗其中的无效数据并提取关键信息。.cache() // 缓存清洗后的数据,避免重复计算。.map(_._3) // 提取action字段。// 示例:统计不同操作类型的数量。
2025-05-13 09:18:51
333
原创 如何在idea中写spark程序
运行WordCount程序:右键点击WordCount类,选择“Run 'WordCount'”。通过以上步骤,你可以在IntelliJ IDEA中成功配置并运行Spark程序。安装Scala:下载并安装Scala 2.12.15,并配置环境变量1。安装IntelliJ IDEA:下载并安装IntelliJ IDEA。安装Maven:下载并安装Maven 3.5.4,并配置环境变量。安装Scala插件:在IDEA中安装Scala插件。安装JDK:下载并安装JDK 1.8。
2025-04-28 19:52:48
127
原创 如何搭建spark yarn模式的集群
Spark 的 Driver 可以运行在 YARN 容器内或提交任务的客户端进程中,而实际执行任务的 Executor 运行在 YARN 提供的容器内。Cluster 模式: 在这种模式下,Driver 运行在 YARN 集群中的一个容器内,通常用于生产环境。Client 模式: 在这种模式下,Driver 运行在客户端机器上,这通常用于学习和测试环境。在 client 模式下,日志会随客户端的标准输出流输出,而在 cluster 模式下,客户端不会有日志信息和结果输出。
2025-04-28 19:52:13
409
原创 Hadoop集群的常用命令
文件权限管理: hdfs dfs -chmod permissions hdfs_path hdfs dfs -chown owner:group hdfs_path 修改 HDFS 文件的权限和所有者。合并下载: hdfs dfs -getmerge hdfs_source_path local_destination_file 将 HDFS 中的多个文件合并后下载到本地。查看文件内容: hdfs dfs -cat hdfs_file_path 查看 HDFS 中某个文件的内容。
2025-03-31 19:47:35
250
原创 mapreduce的工作原理
Reduce 阶段: 输入:Reduce 阶段接收 Shuffle 阶段处理后的数据。处理:Reduce 函数对相同键的值进行合并计算,生成最终结果。输出:Reduce 函数的输出是最终结果,通常存储在 HDFS 中^1^。Map 阶段: 输入:Map 阶段接收输入数据,通常是键值对(key-value pairs)。输出:Map 函数的输出是新的键值对,这些中间结果将传递给 Reduce 阶段^1^。Shuffle 阶段: 分区:将 Map 阶段的输出数据进行分区,每个分区对应一个 Reduce 任务。
2025-03-31 19:46:39
209
原创 vi编辑器的模式与操作以及tar命令的使用
tar用于压缩和解压文件 tar -cvf test.tar 1.txt 2.txt 3.txt将多个文件压缩,tar -xvf test.tar -C./temp。yy复制当前行nyy复制光标后n行,p粘贴内容到光标后,P粘贴内容到下一行,dd删除当前行,ndd删除光标后n行,u撤销上一次操作,ctrl+r重做上一步。末行模式:进入 , 插入模式aio进入 ,命令模式esc进入。w保存q退出wq保存退出wq!shift+zz快速保存退出。
2025-03-03 19:23:05
91
原创 虚拟网络IP设置
打开虚拟机mv编辑选项,打开虚拟网络编辑器,点击vmnet8,修改子网为192.168.10.0,再nat设置修改网关为192.168.10.2。打开控制面板网络连接右击vmnet8属性找到ipv4修改地址和网关地址为192.168.10.1,默认网关为192.168.10.2。进入虚拟机修改对应ip,修改配置文件vi /etc/sysconfig/network-scripts/ifcfg-ens33。BOOTPROTO修改为=static并在末尾添加ONBOOT=yes。
2025-03-03 19:22:32
792
原创 如何在vmware安装虚拟机并设置密码
打开虚拟机后enter选择要安装的操作系统,等待安装完成以后选择要使用的语言,设置完磁盘的存储设置,选择自动分配分区,完成后会出现完成的ui点击完成设置root密码,输入密码,然后确认密码后点击完成,等待安装完后,输入root再输入密码就能完成问题了。安装完vmware后点击创建虚拟机,自定义设置设置完虚拟机的内存硬盘大小以及处理器设置,选择光盘映像文件,自定义虚拟机的名称,选中linux系统。
2025-02-25 11:17:37
362
原创 VMware的linux常见命令
rm:删除文件或目录-f无需用户确认-r删除目录-rf删除目录无需用户确认 -rf/*删除所有目录。ls -l详细列表 -a显示所有文件包括隐藏的-lh人类可读的方式(多了k)mkdir:创建目录,-p如果父级目录不存在就创建父级目录。cat:查看文件内容 more以翻页的形式查看。mv:移动或重命名文件或目录。cd bin到bin目录。tab键,实现自动补齐。cp:复制文件或目录。
2025-02-25 11:16:58
415
原创 scala泛型
/ List(1,2,3,4,5) ==> 中间元素的下标 =长度/2 ===> 3。//需求:你是一个程序员,老板让你写一个函数,用来获取列表中的中间元素。// def 函数的名字(参数1:类型1): 返回值的类型 ={// [T] 就是泛型: 类型参数化。把类型当做参数传入函数内部。
2024-12-11 17:04:44
299
原创 隐式对象
println("阶乘函数被调用",d)//写代码,完成1*2*3*...*d。//需求: 给整数添加一个功能,求阶乘。(阶乘函数被调用,5)(阶乘函数被调用,6)
2024-12-11 16:03:47
314
原创 隐式类的作用
/ transform(u1).updateUser() // 希望要增加的新功能。//思路:把BaseUser 通过隐式转换,改成一个新类型,而这个新类型中有这新的方法。//任务:给之前的BaseUser添加新的功能,但是,不要直接去改代码。//implicit class === 一个隐式转换函数 +类。// 它的作用:拓展已有类的功能,而不需要去修改之前的类的代码。u1.updateUser() //希望要增加的新功能。//10年前,小王写的代码。
2024-12-11 15:07:04
270
原创 函数的隐式参数
def sayName(implicit name:String = "小明"): Unit ={//困难:函数有一个默认的参数值,在不传入具体的实参时,就会自动使用这个默认值。implicit val value:String ="小张"println("我的名字是:" + name)// 难点在于,这个默认值不能修改!sayName("小王")//一直在修改原来的代码!// 函数参数的默认值。
2024-12-11 14:45:36
215
原创 隐式转换 ——isPhone
/ 完成一个功能,让所有的字符串都能调用isPhone 方法,来校验自己是不是一个手机号。//定义一个特殊的转换函数,把str ===>StrongString的对象。//开始你的代码..
2024-12-09 17:05:07
219
原创 复习隐式转换
/隐式转换: 编译器 偷偷地,自动地帮我们把一种数据类型转换为另一种类型。//它有失败的时候(double -->int), 有成功的时候。println("implicit X 被调用了")// 当他转换失败的时候,我们提供一个工具,让他能成功。// 例如: int --> double。i =j //把Double 转入 Int。j = i //把Int 转入 Double。//明确地,把double转成int。implicit X 被调用了。
2024-12-09 16:03:26
157
原创 身份证号码打码
val str ="周先生,ID: 43068220040517103x"周先生,ID:4306822004------3x。//案例,把字符串中的身份证号码打码。
2024-12-09 15:43:29
269
原创 手机号打码
/reg.replaceAllIn的功能:在目标字符串str中,用正则表达式reg去查找,找到之后, 用 箭头函数 的返回值。// () 是分组,它不会影响正则表达式的查询结果,但是,它会把分组找到的内容单独保持在grouo中。//"周先生,手机号: 133****6880 你买的 xxx 到了"//如果正则表达式中有(),则 可以通过m.group来找到对应的分组。// 任务:把字符串中的手机号打码:类似于:133****6880。周先生,手机号: 133****6880 你买的 xxx 到了。
2024-12-09 15:10:01
209
原创 验证合法用户名
println(reg.matches(name1))//matches对字符串做验证,返回boolean值。" // 不合法,!val name1 = "1admin" // 不合法,是数字开头。val name3 = "admin" // 不合法,长度不够。val name2 = "admin123" // 合法。val name4 = "ad_123Ab" //合法。//3. 只能包含数字,大小写字母,下划线。// 通过正则表达式来判断。//验证用户名是否合法。//2. 不能数字开头。
2024-12-09 14:49:57
242
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人