暑假学习笔记

一、本周学习内容
(一)Hadoop 集群搭建与优化
伪分布式模式配置
将 Hadoop 从单机模式升级为伪分布式模式,修改了 core-site.xml、hdfs-site.xml 和 mapred-site.xml 配置文件,配置了 HDFS 的 NameNode 和 DataNode,以及 MapReduce 的 JobTracker 和 TaskTracker。
成功启动了伪分布式模式下的 Hadoop 集群,通过 jps 命令验证了所有守护进程的运行状态。
HDFS 高可用性(HA)配置
学习了 HDFS 的高可用性配置,实现了 NameNode 的主备切换。配置了两个 NameNode 节点,一个作为 Active,另一个作为 Standby。
通过 ZooKeeper 协调两个 NameNode 的状态,确保在 Active NameNode 出现故障时,Standby NameNode 能够自动接管。
MapReduce 程序优化
编写了一个更复杂的 MapReduce 程序,实现矩阵乘法功能。通过设计合理的 Map 和 Reduce 任务,将矩阵乘法的计算分解为多个子任务并行处理。
优化了 WordCount 程序,通过增加 Combiner 和 Partitioner,减少了中间结果的传输量,提高了作业的执行效率。
(二)Python 进阶学习
类和对象
学习了 Python 的类和对象,掌握了类的定义、属性和方法的使用。通过定义一个 User 类,实现了用户信息的封装和管理。
学习了类的继承和多态,通过继承 User 类,派生出 AdminUser 类,实现了管理员用户的特殊功能。
模块和包
学习了 Python 的模块和包的概念,创建了一个简单的模块 utils.py,包含了一些常用的工具函数。
创建了一个包 mylib,将 utils.py 放入其中,并通过 init.py 文件实现了包的初始化。
异常处理
学习了 Python 的异常处理机制,使用 try-except 块捕获和处理运行时错误。
编写了一个文件读写程序,通过异常处理机制捕获文件不存在、权限不足等错误,并给出友好的错误提示。
(三)项目功能扩展
用户权限管理功能
在 Java Web 项目中添加了用户权限管理功能,定义了管理员和普通用户两种角色。
通过 User 类的 role 属性区分用户角色,并在 LoginServlet 中根据用户角色设置不同的权限。
在用户列表页面(userList.jsp)中,根据用户角色动态显示不同的操作按钮,如管理员可以删除用户,普通用户只能查看。
日志记录功能
添加了日志记录功能,使用 Log4j 配置了日志文件的输出路径和日志级别。
在关键的业务逻辑中添加了日志记录,记录用户的操作行为和系统的运行状态,方便后续的调试和维护。
二、下周计划
Hadoop 集群优化与实践
将 Hadoop 伪分布式模式升级为完全分布式模式,配置多个 DataNode 节点,实现数据的分布式存储和计算。
学习 Hadoop 的资源管理器 YARN,配置和管理 YARN 集群,优化资源分配。
编写一个基于 Hadoop 的数据清洗和预处理程序,处理实际的数据集。
Python 项目实践
完成一个简单的 Python Web 爬虫项目,使用 requests 和 BeautifulSoup 库爬取网页数据。
学习 Python 的数据可视化库 matplotlib 和 seaborn,绘制简单的数据图表。
Java Web 项目优化
对 Java Web 项目进行进一步优化,优化数据库查询语句,减少数据库连接的频繁创建和销毁。
添加用户头像上传功能,支持图片的上传和存储,优化用户界面。
三、本周遇到的问题及解决方法
Hadoop HA 配置问题
问题描述:在配置 HDFS 的高可用性时,Standby NameNode 无法正常接管 Active NameNode 的状态。
解决方法:仔细检查 ZooKeeper 的配置文件和 Hadoop 的 HA 配置文件,发现是 ZooKeeper 的会话超时时间设置过短,导致 Standby NameNode 无法及时获取状态信息。调整会话超时时间后,问题解决。
MapReduce 程序性能问题
问题描述:在运行矩阵乘法 MapReduce 程序时,发现作业执行时间过长,性能较低。
解决方法:分析了作业的执行日志,发现是中间结果的传输量过大。通过增加 Combiner 和优化 Partitioner,减少了中间结果的传输量,显著提高了作业的执行效率。
Python 模块导入问题
问题描述:在使用自定义模块时,出现模块导入失败的情况。
解决方法:检查模块的路径和包的结构,发现是模块路径未正确添加到 Python 的搜索路径中。通过修改 sys.path 或使用相对导入,解决了模块导入问题。
四、总结与反思
本周的学习重点在于 Hadoop 集群的搭建与优化,以及 Python 的进阶学习。通过实际操作,我成功将 Hadoop 升级为伪分布式模式,并实现了 HDFS 的高可用性配置。同时,我也优化了 MapReduce 程序,提高了作业的执行效率。在 Python 方面,我学习了类和对象、模块和包以及异常处理等高级特性,并通过实际项目加深了对 Python 的理解。
在下周的学习中,我将继续深入学习 Hadoop 集群的优化与实践,进一步掌握 Hadoop 的高级特性。同时,我也会完成一个 Python Web 爬虫项目,探索 Python 在数据爬取和可视化方面的应用。通过持续的学习和实践,逐步提升自己的技术能力,为未来的项目开发做好准备。

posted @ 2025-08-17 23:07  头发少的文不识  阅读(6)  评论(0)    收藏  举报