暑假学习笔记

一、本周学习内容:打通“数据→模型→服务→展示”完整闭环

  1. Hadoop 生态闭环
    Hive 数仓上线
    完成 Hive 3.1.3 与 Tez 引擎集成,建外部表 ods_log 映射 HDFS 原始日志,分区字段 dt string;写 ETL 脚本每日凌晨 01:30 把昨日目录 behavior/dt= 挂载为新分区,实测 5 GB 数据 msck repair table 耗时 42 s。
    开发 Hive SQL「昨日 Top10 热点新闻」:先 group by newsId 计 PV,再窗口函数 row_number() over (order by pv desc) 取前 10,结果写入 ADS 层表 ads_hot_news,后续供前端调用。
    Sqoop 增量同步
    使用 Sqoop 1.4.7 把 MySQL 用户表 user 的 update_time ≥ $last_etl 数据增量导入到 HDFS /warehouse/ods_user/,采用 --incremental lastmodified 模式,配合 --check-column update_time --last-value 实现准实时同步,一次平均 3 min 完成 30 万条记录抽取。
    HA 故障演练
    主动 kill Active NameNode 进程,ZooKeeper FailoverController 在 9 s 内完成主备切换,客户端重试 2 次后正常读写,无数据块丢失;记录演练报告并更新《Hadoop 运维手册》。
  2. Python 模型即服务(MaaS)
    Flask RESTful API
    基于上周 news_nb.pkl 模型,开发 Flask 服务 /api/predict,支持 POST JSON {"title":"..."},返回 {"topic":"科技","prob":0.92};加入 gunicorn -w 4 -b 0.0.0.0:5000 多进程部署,压测 QPS 稳定 320+,平均延迟 28 ms。
    A/B 测试与监控
    在评论回复链路中插入模型预测埋点,随机切流 10 % 走模型标注,90 % 走原规则;对比 3 天数据,模型准确率 91 % vs 规则 74 %,提升 17 %;Prometheus + Grafana 监控接口 4xx/5xx 率 < 0.3 %。
    pandas 内存再优化
    使用 dtype={"newsId":"uint32"} 与 category 类型,5 GB 数据内存占用由 1.4 GB 降至 0.6 GB,提升单机批处理效率 1.8 倍。
  3. Java Web 性能 & 安全收官
    Redis 缓存评论
    引入 Redis 6.2 热点评论缓存,key article:{id}:comments 存储前 20 条热评,TTL 300 s;写操作采用「先写库再删缓存」策略,读写一致性 99.9 %;JMeter 压测评论接口 QPS 由 120 提升至 420,DB CPU 下降 55 %。
    XSS/SQL 注入全局防御
    新增 XSSFilter 基于 OWASP Java HTML Sanitizer,白名单标签


    ;SQL 注入统一使用 MyBatis #{} 预编译,通过 sqlmap 盲测 0 注入;安全测试报告已归档。
    Docker 镜像构建
    编写 Dockerfile 多阶段构建,OpenJDK 11 + Tomcat 9.0.82,镜像体积 183 MB;推送到私有 Harbor 仓库,实现「一次构建,随处部署」。
    二、下周计划(开学前缓冲)
    交付物整理
    汇总 8 周报告与代码,输出《JavaWeb 学习手册》《Hadoop 运维脚本合集》《Python 模型部署指南》三份文档,上传 GitHub 私有库。
    线上演示环境
    使用阿里云轻量服务器 2C4G 搭建对外 Demo:
    http://exp.demo:8080/news 展示新闻主题预测接口;
    http://exp.demo:8080/web 展示 Java Web 评论系统;
    域名备案 + HTTPS 证书配置完成,已通过公网访问测试。
    复盘与展望
    整理技术栈脑图,标记掌握度;制定秋季学期学习目标:深入 Spark/Flink 流计算,完成实时推荐系统;继续 Python 深度学习路线,切入 PyTorch。
    三、本周遇到的问题及最终解决
    表格
    问题 根因 方案
    Hive Tez 引擎启动 AM 失败 YARN 队列资源不足,vcore 被 MapReduce 占满 调低 MapReduce 最大容量,为 Hive 单独建队列 queue.hive,minUserLimitPercent=50
    Flask 多进程模型加载重复显存 gunicorn preload 导致共享 GPU 上下文(测试机无 GPU) 改用 --preload=false,仅 CPU 推理,显存占用归零
    Redis 缓存雪崩 2 s 抖动 同一 TTL 批量过期 引入随机 TTL 偏移 ±30 s,

posted @ 2025-09-06 23:05  头发少的文不识  阅读(7)  评论(0)    收藏  举报