暑假学习笔记
一、本周学习内容
(一)Hadoop 技术框架入门
Hadoop 环境搭建
安装 Hadoop 3.3.4 并配置单机模式运行环境。详细学习了 Hadoop 的安装步骤,包括 Java 环境的配置、Hadoop 配置文件(core-site.xml、hdfs-site.xml、mapred-site.xml)的修改,以及 Hadoop 守护进程的启动。
成功启动了 Hadoop 的 NameNode 和 DataNode 守护进程,并通过 jps 命令验证了进程的运行状态。
HDFS 基本操作
学习了 HDFS 的基本概念,包括分布式文件系统的设计理念、数据块的存储方式以及高可用性机制。
掌握了 HDFS 的常用操作命令,如文件上传(hdfs dfs -put)、下载(hdfs dfs -get)、查看文件内容(hdfs dfs -cat)、删除文件(hdfs dfs -rm)等。
通过实际操作,上传了一些测试文件到 HDFS,并验证了文件的存储和读取功能。
MapReduce 编程模型
深入学习了 MapReduce 编程模型的基本概念,包括 Map 任务、Reduce 任务、Shuffle 过程以及 Job 的提交和执行流程。
编写了一个简单的 WordCount 程序,实现了对文本文件中单词的计数功能。通过编写 Map 类和 Reduce 类,分别处理输入的键值对并输出中间结果和最终结果。
将 WordCount 程序打包并提交到 Hadoop 集群上运行,通过 Hadoop 的 Web 界面查看作业的执行状态和输出结果。
(二)Python 基础语法学习
Python 环境搭建
安装 Python 3.9 并配置环境变量,确保可以在命令行中直接运行 Python 脚本。
安装了 PyCharm 作为 Python 开发工具,熟悉了 PyCharm 的基本操作和项目管理功能。
Python 基础语法
学习了 Python 的基本语法,包括变量、数据类型(整数、浮点数、字符串、列表、元组、字典)、控制流(if-else、for、while 循环)和函数的定义与调用。
完成了一个简单的 Python 脚本,实现了字符串的反转、列表的排序和字典的遍历等操作。
编写了一个简单的文件读写程序,通过 open() 函数读取文件内容并将其写入到新的文件中。
(三)项目维护与优化
Java Web 项目优化
继续对 Java Web 项目进行维护和优化,修复了一些在测试过程中发现的遗留问题。
对项目进行了代码重构,进一步提高了代码的可读性和可维护性。通过提取公共方法和优化 SQL 查询语句,减少了代码冗余。
对用户注册功能进行了增强,添加了邮箱验证功能。用户注册时需要输入邮箱地址,并通过发送验证码的方式验证邮箱的有效性。
二、下周计划
Hadoop 集群搭建与优化
将 Hadoop 从单机模式升级为伪分布式模式,学习如何配置和管理 Hadoop 集群。
深入学习 HDFS 的高可用性(HA)配置,实现 NameNode 的主备切换。
编写一个更复杂的 MapReduce 程序,如矩阵乘法或倒排索引,进一步熟悉 MapReduce 编程模型。
Python 进阶学习
学习 Python 的高级特性,如类和对象、模块和包、异常处理等。
完成一个简单的 Python 项目,如一个小型的命令行工具或一个简单的 Web 爬虫。
项目功能扩展
在 Java Web 项目中添加用户权限管理功能,实现不同用户角色的权限控制。
添加日志记录功能,记录用户的操作行为和系统的运行状态,方便后续的调试和维护。
三、本周遇到的问题及解决方法
Hadoop 配置文件错误
问题描述:在配置 Hadoop 环境时,core-site.xml 和 hdfs-site.xml 文件中的配置项有误,导致 Hadoop 无法正常启动。
解决方法:仔细检查配置文件,对比官方文档中的配置项,逐一排查错误。最终发现是 fs.defaultFS 和 dfs.replication 配置项的值设置不正确,修改后 Hadoop 正常启动。
MapReduce 程序运行失败
问题描述:在运行 WordCount 程序时,作业提交后报错,提示无法找到输入文件。
解决方法:检查 HDFS 中的文件路径和程序中指定的输入路径是否一致。发现是路径拼写错误,修正路径后程序正常运行。
Python 文件读写权限问题
问题描述:在运行 Python 文件读写程序时,提示没有权限访问文件。
解决方法:检查文件的权限设置,发现文件的读写权限不足。通过 chmod 命令修改文件权限,确保程序可以正常读写文件。
四、总结与反思
本周的学习重点在于 Hadoop 技术框架的入门和 Python 基础语法的学习。通过实际操作,我成功搭建了 Hadoop 单机环境,掌握了 HDFS 的基本操作和 MapReduce 编程模型。同时,我也完成了 Python 环境的搭建,并学习了 Python 的基础语法,编写了一些简单的脚本程序。
在下周的学习中,我将继续深入学习 Hadoop 集群的搭建与优化,进一步掌握 Hadoop 的高级特性。同时,我也会继续学习 Python 的高级特性,并通过实际项目加深对 Python 的理解。通过持续的学习和实践,逐步提升自己的技术能力,为未来的项目开发做好准备。