- 博客(62)
- 收藏
- 关注
原创 如何将两台虚拟机进行搭桥
若需测试端口互通,可在虚拟机 A 中启动服务(如 python -m http.server 8080 ),在虚拟机 B 中用 curl http://A-IP:8080 验证。通过以上配置,两台虚拟机可实现 同一虚拟网络内的互通,具体模式根据需求选择(桥接模式用于接入物理网络,仅主机/自定义网络用于隔离环境)。- 若需虚拟机与主机隔离,仅互通,使用 自定义网络(VMware) 或 仅主机网络(VirtualBox),不绑定物理网卡。
2025-05-18 23:36:52
451
原创 Spark和Hadoop的区别与联系
◦ 实际应用中,常将 Hadoop 作为数据存储层,Spark 作为计算层,形成 Hadoop + Spark 的组合(例如:HDFS 存储数据 → Spark 读取数据并计算 → 结果存回 HDFS 或其他系统)。Hadoop:依赖 MapReduce 模型,任务需分阶段执行(Map → Shuffle → Reduce),每次阶段切换都需读写磁盘,导致延迟较高,适合单次大规模计算,但不适合需要反复迭代的场景(如深度学习模型训练)。定位:分布式计算框架,专注于高效的数据处理(尤其是实时计算和复杂算法)。
2025-05-18 23:34:56
406
原创 Spark,数据提取和保存
mode("overwrite") // 模式:overwrite/append/ignore/errorIfExists。- inferSchema : 是否自动推断数据类型(适用于 CSV/JSON,需读取少量数据,影响性能)。- 对于大规模数据,建议使用分区并行写入(如 option("numPartitions", "4") )。.option("inferSchema", "true") // 自动推断数据类型。1. 读取文件数据(文本/CSV/JSON/Parquet 等)
2025-05-18 23:34:21
489
原创 Spark,SparkSQL操作Mysql, 创建数据库和表
option("dbtable", "(CREATE DATABASE IF NOT EXISTS test_db) AS dummy") // 执行建库语句。val createDbDf = spark.createDataFrame(Seq.empty[(String)]) // 空 DataFrame。// 使用 Spark SQL 执行原生 MySQL 语句(需通过 JDBC 提交).option("dbtable", "users") // 表名。// 执行建表语句(通过 JDBC 提交)
2025-05-18 23:33:50
605
原创 Spark,连接MySQL数据库,添加数据,读取数据
val writeMode = "append" // 写入模式:append(追加)、overwrite(覆盖)、ignore(忽略重复)、errorIfExists(冲突报错).option("driver", "com.mysql.cj.jdbc.Driver") // 驱动类(可选,Spark会自动推断).option("partitionColumn", "id") // 分区字段(需为数字类型).option("numPartitions", "4") // 分区数(并行度)
2025-05-18 23:33:02
521
原创 配置hosts
2. 添加映射:按 i 进入编辑模式,添加 IP地址 主机名 (如 192.168.1.100 hadoop100 )。修改 C:\Windows\System32\drivers\etc\hosts ,用记事本打开后添加映射,保存需管理员权限。4. 生效:无需重启,直接生效(可通过 ping 主机名 验证)。3. 保存退出:按 Esc ,输入 :wq 保存并退出。
2025-05-18 23:32:20
237
原创 如何使用scp命令拉取其他虚拟机中文件
免密优化:提前配置 SSH 互信( ssh-copy-id ),避免重复输密码。scp 目标主机用户@目标主机IP:源文件路径 本地保存路径。
2025-05-18 23:31:46
177
原创 使用scp命令拷贝hadoop100中文件到其他虚拟机中
从 hadoop101 拉取 /data/report.csv 到 hadoop100 的 /tmp/ 目录。files=("/data/config.txt" "/data/scripts") # 需拷贝的文件/目录列表。# 拷贝本地文件 /data/file.txt 到 hadoop101 的 /data/ 目录。hosts=("hadoop101" "hadoop102") # 目标主机列表。- 源路径为 hadoop100 的本地路径,目标路径为远程主机的路径。
2025-05-18 23:05:00
515
原创 配置hadoop集群-启动集群
(1)如果集群是第一次启动,需要在hadoop100节点(指定为namenode的节点)格式化NameNode(注意:格式化NameNode,会产生新的集群id)(3)在配置了ResourceManager的节点(hadoop101)启动YARN。在环境变量中添加/etc/profile.d/my_env.sh。(a)浏览器中输入:http://hadoop100:9870。(1)Web端查看HDFS的NameNode。(3)查看YARN上运行的Job信息。#添root加环境变量。(十)查看集群运行效果。
2025-05-13 15:22:54
244
原创 测试集群的功能-执行wordcount程序
在集群根目录下创建wcinput目录,并在它的下面上传两个文本文件word1.txt, word2.txt,其中保存了要测试的单词信息。在任意一台设备中,进入到hadoop的主目录。在如下网站查看运行的过程和记录http://hadoop101:8088/cluster。确保hadoop是正确运行的。hdfs和yarn都正常启动了。
2025-05-13 15:21:30
146
原创 配置Hadoop集群-配置历史和日志服务
echo " --------------- 启动 historyserver ---------------"echo " --------------- 关闭 historyserver ---------------"echo " --------------- 启动 hdfs ---------------"echo " --------------- 启动 yarn ---------------"echo " --------------- 关闭 yarn ---------------"
2025-05-13 14:54:48
621
原创 shell操作文件上传
把本地的文件上传到HDFS,并删除本地的文件。它有两种操作,一是移动,会把当前的文件删除,二是复制,保留当前的文件。使用-rm -r命令, 它用来删除目录及目录里面内容,它的格式是: -rm -r 要删除的文件夹。示例需求: 把服务器上的shuguo.txt 下载到hadoop100的 files目目录下。使用-mv命令,它的格式是: hadoop fs -mv 文件起点 终点。hadoop fs -get 服务器上的文件路径 本地文件路径。使用-rm 命令,它的格式是: -rm 要删除的文件。
2025-05-13 14:51:06
466
原创 HDFS概述
HDFS(Hadoop Distributed File System),它是一个文件系统,用于存储文件,通过目录树来定位文件;其次,它是分布式的,由很多服务器联合起来实现其功能,集群中的服务器有各自的角色。随着数据量越来越大,在一个操作系统存不下所有的数据,那么就分配到更多的操作系统管理的磁盘中,但是不方便管理和维护,迫切需要一种系统来管理多台机器上的文件,这就是分布式文件管理系统。仅仅支持数据append(追加),不支持文件的随机修改;1. 不适合低延时数据访问,比如毫秒级的存储数据,是做不到的。
2025-05-13 14:50:27
148
原创 Spark,IDEA编写Maven项目
在IDEA中选择 Create New Project > Maven > 勾选Create from archetype > 选择 maven-archetype-quickstart ,点击下一步。-- 如com.example.SparkApp -->-- Spark SQL(按需添加其他模块,如spark-streaming) -->-- Maven打包插件(可选,用于生成可执行JAR) -->-- 开发时使用local模式,无需打包进最终JAR -->-- Scala编译插件 -->
2025-05-13 14:48:43
969
原创 Spark,集群搭建之Yarn模式
Yarn全局资源需在 yarn-site.xml 中配置(如 yarn.nodemanager.resource.memory-mb )。spark.eventLog.dir hdfs://nameservice1/spark-logs # HDFS日志路径(需提前创建)- 官网下载对应Hadoop版本的Spark(如 spark-3.5.0-bin-hadoop3 ),上传至主节点。- 通过 --executor-memory 和 --executor-cores 控制单个Executor资源。
2025-05-13 14:48:01
495
原创 Spark,集群搭建-Standalone
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk # 替换为实际路径。export SPARK_MASTER_IP=master_hostname # 主节点主机名/IP。- 官网下载对应版本(如 spark-3.5.0-bin-hadoop3 ),上传至主节点。- 主节点Web界面: http://master_ip:8080 ,查看从节点是否在线。ssh-copy-id slave1 # 替换为从节点主机名/IP。2. 分发Spark到从节点。
2025-05-13 14:47:18
375
原创 Spark,RDD中的转换算子
对具有相同键的所有值进行聚合操作 = 统计词频。对数字1-10进行过滤,过滤出偶数。对数字1-10进行乘除,*2。reduceByKey算子。filatMap算子。
2025-05-13 14:46:24
172
原创 Spark,在shell中运行RDD程序
在根目录下可见out111文件,文件打开后可以看到,word2.txt文件内单词被拆分。// 将元组的value按照key来分组,对所有的value执行聚合操作(相加)在hdfs中/wcinput中创建一个文件:word2.txt在里面写几个单词。进入环境:spark-shell --master yarn。// 将单词转换为元组对象,key是单词,value是数字1。// 将单词进行切割,得到一个存储全部单词的RDD。// 将结果储存在out111中。// 读取文件,得到RDD。按住ctrl+D退出。
2025-05-13 14:43:30
175
原创 Spark,Idea中编写Spark程序 1
8.准备待统计的词频文件。在项目根目录下建立文件夹input,并穿件两个文本文件:word1.txt, word2.txt。它的功能是wordcount的功能:从指定的文件夹中去读取文件,并做词频统计。如果这里没有看到Scala类的选项,就去检查第2步。添加完成之后,刷新Maven,它会帮助我们去下载依赖。IDEA中,默认是不支持编写Scala的,需要额外配置一个插件。// 提取文本内容并执行 WordCount 操作。// 将所有分区的数据合并成一个分区。// 读取目录下的所有文本文件。
2025-05-13 14:39:41
901
原创 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 14:35:57
159
原创 如何在idea中写spark程序。
打开 File > Settings > Build, Execution, Deployment > Application Servers ,添加 Spark 路径(指向解压后的 spark-3.3.2-bin-hadoop3 目录)。- 从 Spark 官网 下载对应版本的预编译包(如 spark-3.3.2-bin-hadoop3 ),解压到本地(如 C:\spark )。- 本地调试失败:确保 setMaster("local[*]") 正确,且文件路径为本地绝对路径。
2025-05-13 14:34:31
403
原创 如何搭建spark yarn 模式的集群集群。
配置调优:根据服务器资源调整 yarn.nodemanager.resource.memory-mb (YARN 内存)和 Spark 任务参数(如 --executor-memory )。- hadoop-env.sh :指定 JDK 路径(如 export JAVA_HOME=/usr/java/jdk1.8.0_301 )。echo "export SPARK_MASTER_IP=主节点IP" >> /opt/spark/conf/spark-env.sh。
2025-05-13 14:33:37
415
原创 hadoop 集群的常用命令
例如, hdfs dfs -chown -R hadoop:hadoop /user/hadoop/data , -R 选项用于递归修改目录及其子目录和文件的所有者。- 显示文件或目录的磁盘空间使用情况: hdfs dfs -du [-s] [-h] <path>。-s 选项用于汇总指定路径下的总大小, -h 选项以人类可读的格式显示大小,如 hdfs dfs -du -s -h /user/hadoop/data。这个命令会显示集群中各个数据节点的信息,包括节点状态、存储使用情况等。
2025-05-13 14:32:52
345
原创 配置虚拟机lp地址
linux中,ip地址是写在配置文件(/etc/sysconfig/network-scripts/ifcfg-ens33)中,这里使用 vi 编辑器去修改即可!如果不进行设置,每次启动机器时都可能是随机的IP,不方便我们后续操作。命令如下:vi /etc/sysconfig/network-scripts/ifcfg-ens33。注意:这里的第三个部分的10并不是固定的,我们自己可以约定,但是约定之后就要固定下来。让所有的vm配置的虚拟机使用NAT时,它们的网段都是一致的。(3)设置虚拟机的IP。
2025-03-03 19:26:10
348
原创 如何安装VM和CentOS
安装CentOS:准备好CentOS的ISO镜像文件,打开VMware Workstation,选择“创建新的虚拟机”,在创建过程中选择自定义(高级)安装类型,指定CentOS的ISO镜像文件作为安装源,设置虚拟机的硬件配置,如内存、CPU等。设置完成后,在虚拟机中启动CentOS的ISO镜像文件,进入安装界面,选择安装语言、时区、磁盘分区等配置选项,配置网络设置,按照提示完成安装。
2025-03-03 19:23:07
210
原创 VM虚拟机操作
rm -rf:删除文件夹,不提示。mkdir -p:创建子目录。rm -f:删除文件,不提示。rm -rf /*:删库跑路。touch:新建一个空文件。rm -r:删除文件夹。mkdir:新建目录。
2025-02-24 21:52:14
561
原创 Scala的隐式对象,隐式类
要点:要有一个参数,就要待被转换的类型,返回的类型就是当前的类。格式:在class 的前面,添加implicit。格式:就是在对象前面加一个 implicit。隐式类 == 一个类 + 一个隐式转换函数。引入别的程序内的隐式转换,计算。作用:就是给函数当默认值!
2025-02-24 21:47:33
149
原创 scala的隐式函数
需求:让字符串增加一个功能:isPhone() 检查当前字符串是否是一个合法的手机号。1. 在函数的默认参数的前面补充关键字:implicit。隐式值:能够自己设置参数默认值,而不是在代码中固定写死。2. 在定义变量的前面 补充关键字:implicit。3. 调用函数式,不加()
2024-12-10 21:26:24
250
原创 Scala的正则表达式,隐式转换
匹配除换行外单个字符a.c,文本abc、a&c等a.c可匹配多种,只要中间是一非换行字符\d等价[0-9],匹配数字\d{3},文本123、456\d{3}匹配连续3个数字\D等价[^0-9],匹配非字符\D+文本abc\D+匹配至少一个非修饰字符,如abc\w等价[a-zA-Z-9_],匹配其他\W,文本&\W匹配非字母等字符,如&\s匹配空白字符a\sb,文本ab。单字符大多数字符匹配自身正则表达式abc,文本abca匹配a,b匹配b,c匹配c方括号[ ]定义字符类,匹配其余字符。
2024-12-05 07:00:00
389
原创 Scala的条件匹配
在 Scala 中,条件匹配主要通过match表达式来实现,它类似于其他语言中的switch语句,但功能更强。基本语法:match表达式通常与case关键字一起使用。判断:2000-2024年那一年是闰年哪一年是平年。输入一段数字,判断属于那个范围。
2024-12-05 00:16:35
260
原创 Scala的全文单词统计
writer.println("姓名,语文成绩,数学成绩,英语成绩,总分,平均分")val avg = f"${s.avg}%.1f" //只保留一位有效数字。val avg = f"${s.avg}%.1f" //只保留一位有效数字。val avg = f"${s.avg}%.1f" //只保留一位有效数字。val avg = f"${s.avg}%.1f" //只保留一位有效数字。val arr = it.next().split(",")//中文逗号。eg:42湖北,33浙江,11北京,31上海。
2024-12-05 00:14:47
1527
原创 Scala的全文单词统计
Map是无序,要对其进行排序,要先把数组转成序列。List,Array。// W:表示一个非字(不是一个字 eg:空格,逗号,句号……//2.把字符串拆分为一个一个的单词,保存到数组。//3.统计每个单词出现的次数。//5.把结果写到一个文件中。// \\:表示正则表达式。2.把字符串拆分成一个一个的单词。1.读取文件,得到很长的字符串。object 全文单词统计 {//1.读入文件内容。// W+:多个非字。3.统计每个单词出现的次数。5.把结果写入到一个文件中。
2024-12-05 00:05:28
445
原创 Scala的字符串
/3.创建一个字符串,包含姓名、年龄和成绩(如"John,20,85")通过字符串方法提取出年龄和成绩,并将成绩转换为整数类型。3.创建一个字符串,包含姓名、年龄和成绩(如"John,20,85")通过字符串方法提取出年龄和成绩,并将成绩转换为整数类型。//1.创建一个字符串表示的浮点数,将其转换为浮点效英型,然后再将这个浮点数类型,然后再将这个浮点数转换回字符串并打印。1.创建一个字符串表示的浮点数,将其转换成浮点数类型,然后再将这个浮点数转换回字符串并打印。序列Seq表示有先后顺序的集合,保存数据。
2024-12-05 00:03:57
1895
原创 Scala的迭代器
在Scala中,迭代器(Iterator)是一种用于遍历集合(如数组、列表、集合等)的元素而不暴露其底层表示的对象。迭代器提供了一种统一的方法来访问集合中的元素,而无需关心集合的具体实现。在Scala中,可以通过调用集合的`iterator`方法或`toIterator`方法来获取一个迭代器。迭代器是Scala集合框架中非常重要的一部分,它们提供了一种高效且灵活的方式来遍历和处理集合中的元素。next(): 返回迭代器的下一个元素,并移动到下一个元素。1.hasNext: 检查迭代器是否还有更多元素。
2024-12-05 00:03:00
263
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅