大数据实验2.Hadoop 集群搭建(单机/伪分布式/分布式)
实验二: Hadoop安装和使用
一、实验目的
- 实现hadoop的环境搭建和安装
- Hadoop的简单使用;
二、实验平台
- 操作系统:Linux(建议Ubuntu16.04或者18.04);
- Hadoop版本:3.1.3;
- JDK版本:1.8。
安装参考教程:https://dblab.xmu.edu.cn/blog/2441/
三、实验步骤
(一)新建一个用户,用户名自定义,并给新建的用户添加管理员权限,后面的操作均在新建用户下操作
(二)安装准备
(1)SSH服务端安装和免密登录设置
1.1安装SSH服务端
1.2免密登录设置
(2)安装Java环境,在安装目录下,并验证安装是否成功;
(3)切换到任意的非jdk安装目录,使用刚刚的命令,验证java是否可用;
(4)根据jdk安装目录设置JAVA_HOME和PATH环境变量,设置后使其立即生效,然后通过echo命令查看JAVA_HOME和PATH变量的设置是否成功;
(5)切换到任意非jdk安装目录,执行”java –version”命令,对比(2)中的命令,对结果进行对比分析,并解释设置环境变量的意义;
(6)对比分析:
对比: 比较在设置环境变量前后,java -version命令的执行结果。
分析: 如果在设置环境变量之前命令失败,而在设置之后成功,这证明了环境变量设置的必要性和有效性。环境变量的设置简化了Java应用程序的运行和开发,因为它们允许Java命令在任何工作目录下被识别和执行。
(7)设置环境变量的意义:
1)、简化命令行操作:通过设置环境变量,用户可以在任何目录下直接运行Java命令,而不需要每次都输入完整的路径。这大大简化了命令行操作,提高了效率。
2)、系统级别的配置:环境变量可以被系统级别的应用程序和服务所使用。例如,某些应用程序可能需要知道Java的安装位置,通过读取JAVA_HOME环境变量,它们可以找到并使用正确的Java版本。
3)、跨平台兼容性:环境变量提供了一种跨平台的配置方式。不同的操作系统可能有不同的路径和配置方式,但通过统一的环境变量,可以在不同的平台上实现相同的配置效果。
4)、版本管理:在多版本Java共存的环境中,通过设置JAVA_HOME环境变量,可以指定特定版本的Java用于编译和运行应用程序。这在需要同时支持多个Java版本的情况下非常有用。
5)、自动化脚本和工具:许多自动化脚本和开发工具依赖于环境变量来确定如何执行任务。例如,构建工具(如Maven或Gradle)会使用JAVA_HOME来确定使用哪个Java版本来编译代码。
6)、安全性:通过控制环境变量,系统管理员可以限制用户对特定资源的访问,或者确保应用程序使用正确的库和资源。
7)、易于维护和更新:如果需要更新Java版本或更改配置,只需更新环境变量的值,而不需要修改每个脚本或应用程序的配置。这样可以减少维护工作量,并确保所有依赖于这些变量的工具和应用程序都能正确地使用新的配置。
总之,设置环境变量是一种有效的配置管理方式,它使得系统配置更加灵活、可维护,并且能够提高开发和运维的效率。
(三)单机安装hadoop
(1)安装hadoop
(2)通过查看安装的hadoop版本信息,验证是否安装成功
(三)伪分布式安装hadoop和配置
(1)配置相关的文件;
(2)初始化分布式文件系统;
(3)使用start-dfs.sh,查看启动的java进程,验证启动是否成功;
(4)终止hadoop运行,使用start-all.sh启动,查看启动的java进程,并和(3)中的结果进行比较分析;
1)、比较分析:
A、使用start-dfs.sh时,只有与HDFS相关的守护进程(NameNode和DataNode)会启动。
B、使用start-all.sh时,除了HDFS的守护进程,还会启动YARN的ResourceManager和NodeManager,以及MapReduce的JobTracker和TaskTracker(在Hadoop 1.x中)或ResourceManager(在Hadoop 2.x中)。
(5)在Web端查看Hadoop运行情况以及文件系统中的文件目录;
(6)在hadoop存储系统中创建 /temp/dirName,文件夹名字自定义并查看创建是否成功
(7)切换到hadoop中的测试样例文件所在路径,并任选一个样例进行测试;
(8)终止Hadoop的运行,并验证进程结束;
四、总结(问题与收获)
1、遇到的问题:
SSH服务端安装和免密登录设置:在配置SSH服务端时,我遇到了权限问题,导致无法成功生成SSH密钥。通过查阅文档和咨询同学,我了解到需要使用sudo命令来获取必要的权限。
Java环境变量配置:在设置JAVA_HOME和PATH环境变量时,我最初没有将它们添加到系统的环境变量中,导致在非JDK安装目录下无法识别Java命令。通过编辑.bashrc文件并重新加载配置,我成功解决了这个问题。
Hadoop伪分布式配置:在配置Hadoop的伪分布式环境时,我遇到了NameNode和DataNode无法同时启动的问题。经过检查配置文件和日志,我发现是hdfs-site.xml中的配置有误,修正后问题得以解决。
2、收获:
Linux系统管理技能:通过本次实验,我加深了对Linux系统管理的理解,包括用户管理、服务安装和权限配置等。
Java环境配置经验:我学会了如何在Linux环境下安装和配置Java环境,以及如何通过环境变量来管理Java版本。
Hadoop安装与配置:我掌握了Hadoop的单机和伪分布式安装方法,了解了Hadoop各组件的作用和配置要点。
问题解决能力:在遇到问题时,我学会了如何通过查阅文档、搜索解决方案和与同伴讨论来独立解决问题。
大数据处理理解:通过本次实验,我对Hadoop和大数据处理有了更深入的认识,为后续的学习和研究打下了基础。
总的来说,通过本次实验,我不仅学习到了Hadoop的安装和使用,还提升了自己的问题解决能力和技术理解。我相信这些技能和经验将对我的未来学习和工作大有裨益。