使用虚拟机以及安装hadoop集群时所遇到的问题和解决

本文记录了在虚拟机中安装Hadoop集群时遇到的两个主要问题:1) 运行Hadoop命令时的路径与环境变量错误;2) 启动Hadoop集群过程中namenode、datanode等组件的问题。解决方案包括正确配置环境变量,理解mkdir命令的-p选项,以及检查和关闭datanode的安全模式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用虚拟机时遇到的问题

1)

在这里插入图片描述

bash: cd: /etc/hadoop/: 没有那个文件或目录

这是我在运行hadoop伪分布式实例时遇到的一个问题,当时是想进入 /etc/hadoop/这个目录下,可是出错了,但是其实是有这个文件目录的。
其实这个错误很简单,是因为 cd后加个/ 相当于在根目录下查找,这时候得输入完整路径cd /usr/local/hadoop/etc/hadoop,或者在**/usr/local/hadoop/**的目录下输入 cd etc/hadoop也可以。
在这里插入图片描述

2)

最开始开启hadoop时不知道一定要在前面加./sbin/ 所以在运行start-all.sh时总是会出错,后来知道了要进入**/usr/local/hadoop/sbin/hadoop**这个目录下才可以。

而开启hadoop时总是要运行./sbin/start-all.sh才可以执行,./sbin/实际上等同于运进入了**/usr/local/hadoop/sbin/hadoop**这个目录,如果要想直接运行start-all.sh来开启hadoop的话就需要变更PATH 这个环境变量,设置hadoop环境变量加入:export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin。就可以。

3)

没有Hadoop命令

当时在运行hadoop或者hdfs命令时会出现没有Hadoop命令的错误,这个老师上课讲了很多次,也是环境变量的问题。
执行:

vim ~/.bashrc

在里面加入这些就可以,这样就可以执行hadoop命令了。
在这里插入图片描述

在这里插入图片描述

4)

创建新文件夹失败:No such file or directory或File exits

  • 前面那个错误老师上课也提到过,就是创建多级目录的问题,mkdir创建多层目录时需要在后面加一个 -p 选项。
  • 后面那个错误是很简单但很常见的错误,就是已经存在目标的文件或者文件夹,路径出现冲突,解决问题的方法也很简单,就是更换一下名字,或者删除原文件。

安装hadoop集群时所遇到的问题

1)

当我执行下面代码时发现,只有namenodesecondarynamenode启动起来了,说明出现错误,于是改用另一个启动hadoop的代码start-all.sh,发现成功了,resourcemanager启动。最后单独执行mr-jobhistory-daemon.sh start historyserver,终于四个都启动起来。但是发生这个错误的原因始终不太明白。

执行:

start-dfs.sh
start-yarn.sh
mr-jobhistory-daemon.sh start historyserver

结果:
在这里插入图片描述
执行:

start-all.sh

结果:
在这里插入图片描述

执行:

mr-jobhistory-daemon.sh start historyserver

结果:
在这里插入图片描述

2)

还有一个错误是当时验证datanode是否正常启动时出现的,当时出现的错误是都为0,也就是无有效的datanode节点。
在这里插入图片描述
在网上查了很多方法,大部分都是说可能是datanode的安全模式没有关闭,可能是因为datanode开启了安全模式导致的。但是当时没有先试这个,而是做了以下几个。

  • 1.检查所有自己已经配置的文件信息,(4个主要)以及Slaves文件。还有就是hosts中ip和主机名的对应关系。我检查了所有配置文件后发现没有出错的地方,于是把hdfs-site.xml中的dfs.replicatio设为了2,因为教程里他说一般设为3,我刚开始就设成了3。后来发现没有用。

在这里插入图片描述

  • 2.由于格式化次数太多,产生的结点的nm-local-dir中的id冲突,这个报错可以通过看产生的logs得出。这个方法我也觉得非常有可能,因为前期出错的时候我格式化了很多次,于是去查看logs,但是无果。

  • 3.最后尝试查看datanode的安全模式是否关闭,所以使用命令hdfsdfsadmin-safemode get查看发现真的没有关闭,于是使用以下命令关闭。hadoop dfsadmin -safemode leave。如下,关闭后执行发现已经正确。

在这里插入图片描述
以上是我在搭建集群时遇到的两个比较大的错误,其他的一些小错误大都为少打了或打错了或目录进错了,我想值得说的错误就这些。

### 在虚拟机安装配置Hadoop集群的最佳实践 #### 1. 虚拟机准备 为了搭建Hadoop集群,首先需要准备好多个虚拟机作为节点。通常情况下,可以使用VirtualBoxVMware来创建这些虚拟机。每台虚拟机应运行Linux操作系统(如Ubuntu),并分配足够的资源以支持Hadoop的正常运行[^1]。 #### 2. 主机名与IP地址配置 在所有虚拟机上设置固定的主机名静态IP地址,以便于后续网络通信。编辑`/etc/hosts`文件,在其中添加各节点的映射关系。例如: ```bash 192.168.56.101 namenode 192.168.56.102 datanode1 192.168.56.103 datanode2 ``` #### 3. SSH无密码登录配置 为了让NameNode能够远程管理DataNodes,需在各个节点之间配置SSH无密码登录。具体操作包括生成公钥、分发公钥至其他节点以及测试连接。 #### 4. Java环境配置 Hadoop依赖Java运行环境(JRE)。因此,在所有节点上都需要安装相同版本的OpenJDKOracle JDK,并将其路径加入到系统的环境变量中。可以通过以下命令验证安装情况: ```bash java -version ``` #### 5. Hadoop软件部署 下载适合目标平台架构的Hadoop二进制包,并解压到指定位置。推荐将此目录挂载为共享文件夹以便维护升级。同按照官方文档说明完成必要的准备工作,比如创建专用用户账户用于执行相关服务进程。 #### 6. 集群模式配置调整 相比单机版伪分布式的简单设定,真正意义上的多机器组成的完全分布式环境中还需要额外关注以下几个方面: - **core-site.xml**: 定义默认FS URI 存储路径; - **hdfs-site.xml**: 明确副本数量参数 dfs.replication 的取值范围; - **mapred-site.xml**: 指定MapReduce框架使用的JobTracker 地址信息; - **yarn-site.xml**: YARN ResourceManager 及 NodeManager 关联属性定义; 特别注意的是某些特定功能模块可能涉及本地库调用,则必须确保对应的.so动态链接库已被正确放置到了$HADOOP_HOME/lib/native下[^2]。 #### 7. 启动服务流程 依次启动HDFS NameService组件服务端口监听程序之后再开启YARN调度器及其附属单元即可形成完整的计算框架体系结构。常用的一键脚本位于sbin目录内部: ```bash start-dfs.sh && start-yarn.sh ``` 通过浏览器访问http://namenode_ip:port查看Web UI界面确认各项指标均处于健康状态则表明整个过程顺利完成。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值