当前位置: 首页 > news >正文

软件工程学习日志2025.10.23

  • 目标:完成 MapReduce 词频统计程序的远程执行链路,支持用 java -jar 直接运行 RemoteRunner,并解决参数传递与 HDFS/SSH 连接问题。
  • 结果:RemoteRunner 已增强为“更健壮的远程执行器”,能自动探测 HDFS、在无参数时读取配置并运行;同时整理了 SSH 连接超时的排障流程与可执行命令。
    关键改动
  • 切换可执行 JAR主类
    • pom.xmlmaven-shade-plugin 主类改为 org.example.RemoteRunner,支持 java -jar 直接启动。
    • 构建命令:mvn -q -DskipTests clean package
  • HDFS 连接增强
    • 自动探测 hdfs://<VM_IP>:8020hdfs://<VM_IP>:9000
    • 所有 hdfs dfs 命令显式加 -fs <uri>,避免默认 fs.defaultFS=hdfs://localhost:9000 带来的连接拒绝。
    • hadoop jar 的输入/输出使用全量 HDFS URI(例如 hdfs://192.168.222.130:8020/user/hadoop/input)。
  • 参数解析与配置来源
    • 支持将所有参数放在“一对引号”内的情况:自动按空白切分。
    • 在参数不足时,不再立即退出;改为按优先级读取配置:
      • 命令行参数;
      • 系统属性 -Dremote.host -Dremote.user -Dremote.port -Dremote.password(可选:-Djar.path -Dword1.path -Dword2.path -Dfs.uri);
      • 环境变量 REMOTE_HOST, REMOTE_USER, REMOTE_PORT, REMOTE_PASSWORD(可选:LOCAL_JAR, WORD_FILE1, WORD_FILE2, FS_URI);
      • 项目根目录 remote.properties
      • 仍缺时且控制台可交互,进入交互式输入。
        执行与验证
  • 正常运行(逐项参数)
    • java -jar "c:\Users\王朝东\IdeaProjects\mapreduce\target\mapreduce-1.0-SNAPSHOT.jar" 192.168.222.130 hadoop 22 20050614
  • 无参运行(系统属性方式)
    • java -Dremote.host=192.168.222.130 -Dremote.user=hadoop -Dremote.port=22 -Dremote.password=20050614 -Dfs.uri=hdfs://192.168.222.130:8020 -jar "c:\Users\王朝东\IdeaProjects\mapreduce\target\mapreduce-1.0-SNAPSHOT.jar"
  • 无参运行(环境变量方式)
    • 设置环境变量后执行:
    • $env:REMOTE_HOST="192.168.222.130"; $env:REMOTE_USER="hadoop"; $env:REMOTE_PORT="22"; $env:REMOTE_PASSWORD="20050614"; $env:FS_URI="hdfs://192.168.222.130:8020"
    • java -jar "c:\Users\王朝东\IdeaProjects\mapreduce\target\mapreduce-1.0-SNAPSHOT.jar"
  • 无参运行(remote.properties)
    • 文件路径:c:\Users\王朝东\IdeaProjects\mapreduce\remote.properties
    • 内容示例:
      • host=192.168.222.130
      • user=hadoop
      • port=22
      • password=20050614
      • fsUri=hdfs://192.168.222.130:8020
      • localJar=c:\\Users\\王朝东\\IdeaProjects\\mapreduce\\target\\mapreduce-1.0-SNAPSHOT.jar
      • wordfile1=c:\\Users\\王朝东\\IdeaProjects\\mapreduce\\src\\main\\resources\\wordfile1.txt
      • wordfile2=c:\\Users\\王朝东\\IdeaProjects\\mapreduce\\src\\main\\resources\\wordfile2.txt
    • 运行:java -jar "c:\Users\王朝东\IdeaProjects\mapreduce\target\mapreduce-1.0-SNAPSHOT.jar"
      问题排查:SSH 连接超时
  • 主机连通性检查
    • ping 192.168.222.130
    • Test-NetConnection 192.168.222.130 -Port 22
    • ssh hadoop@192.168.222.130 -p 22
  • VM 内部检查
    • ip aifconfig 确认 IP;
    • 安装并启动 SSH:
      • Ubuntu/Debian:sudo apt install -y openssh-server && sudo systemctl enable --now ssh && sudo systemctl status ssh
      • CentOS/RHEL:sudo yum install -y openssh-server && sudo systemctl enable --now sshd && sudo systemctl status sshd
    • 防火墙放行 22:
      • Ubuntu:sudo ufw allow 22/tcp && sudo ufw status
      • CentOS:sudo firewall-cmd --add-service=ssh --permanent && sudo firewall-cmd --reload
  • 虚拟机网络模式
    • Bridged:推荐,主机可直接访问 VM IP;
    • Host-Only:主机需启用对应虚拟网卡;
    • NAT:需端口转发(示例:宿主 127.0.0.1:2222 → 客户机 22),命令改为:
      • java -jar "...\\mapreduce-1.0-SNAPSHOT.jar" 127.0.0.1 hadoop 2222 20050614
        使用方法与预期输出
  • 程序行为
    • SFTP 上传:mapreduce-1.0-SNAPSHOT.jarwordfile1.txtwordfile2.txt 到远端 ~/mapreduce/
    • HDFS 操作:在 /user/<user>/input 创建目录并上传两个词文件;
    • 提交 MapReduce 作业,输出日志;
    • 打印 ===== MapReduce Result ===== 和词频结果。
  • HDFS 未运行时提醒
    • 若探测失败,会提示启动 HDFS,参考:
      • 首次格式化:hdfs namenode -format
      • 启动 HDFS:start-dfs.sh
      • 启动 YARN:start-yarn.sh
        经验与教训
  • 远端默认 fs.defaultFS 可能指向 localhost:9000,必须显式 -fs <uri> 和全量 HDFS URI 才稳。
  • 参数传递在 Windows 下容易受引号与空格影响,增加“单参数切分”与多来源配置能显著提升可用性。
  • 网络问题优先从“能否 ping / 能否通 22”判断,最有效率;其次再看 SSH 服务与防火墙。
http://www.hskmm.com/?act=detail&tid=37708

相关文章:

  • 10月23号
  • 【题解】P14254 分割(divide)
  • 数论分块 - R
  • 第九届强网杯线上赛PWN_flag-market
  • ISFB银行木马家族演化史:从Gozi到LDR4的技术剖析
  • 10.23日学习笔记
  • 埃氏筛及扩展质因数筛——埃拉托斯特尼筛法变种
  • exgcd板子
  • 2025.10.23
  • 编程练习
  • Codeforces Round 976 (Div. 2) A. Find Minimum Operations
  • 手机号md5解密/身份证号码md5解密/手机号运营商+归属地查询
  • 102302142罗伟钊第一次作业
  • 一个基于 .NET 开源、功能强大的分布式微服务开发框架
  • UE4学习笔记
  • 20251021 NOIP模拟赛
  • 关于2025年暑假自主巡航小车脚本文件的学习笔记
  • 欧拉操作系统搭建docker
  • xcode程序创建文件存储位置
  • RocketMQ+Spring Boot的简单实现及其深入分析
  • RFSOC学习记录(五)带通采样定理
  • 3dmax下载安装教程及激活教程(附安装包)3dmax2025超详细下载安装步骤
  • LLM 场景下的强化学习技术扫盲
  • vmware虚拟机下载安装教程(付安装包)详细图文下载安装教程
  • deepin 25 虚拟机安装vgpu客户机驱动
  • NXP S32K118的FTM模块分析
  • 66页作业
  • 写电商详情页不用挠头了:一个还算实用的AI指令模板
  • CF2153D
  • 20232417 2025-2026-1 《网络与系统攻防技术》实验二实验报告