运行环境:虚拟机下Ubuntu15.0
问题的产生:在运行hadoop fs -put的指令时把一个大型文件从本地复制到hdfs时,运行到一半突然复制中断,报“name node is in safe mode ”的错误提示。
解决问题的思路:“name node is in safe mode”的提示意味着此时hdfs处于安全模式,只能对hdfs文件进行读操作,不能进行写操作,所以我想是否可以退出安全模式以解决问题呢?所以我输入hadoop dfsadmin -safemode leave强制退出安全模式,然而在我输入hadoop dfsadmin -safemode get查看安全模式状态时发现还是safemode is ON。这是什么原因呢?为什么不能退出安全模式呢?
所以我打开http://10.108.246.198:50070/ hadoop web页面查看,发现提示:系统处于安全模式,请添加磁盘空间或释放空间以退出安全模式。如果没有添加磁盘空间,在退出安全模式之后,会立即返回安全模式。然后再翻到下面查看dfs磁盘空间使用情况,发现dfs remaining(/dev/sda1)只有35MB了。输入df -h 查看磁盘使用情况:
这下我们豁然清楚解决问题的方法是什么了:hdfs磁盘空间不足了,导致强制进入了安全模式,需要给虚拟机增加存储空间以退出安全模式。
解决步骤
1. 增加虚拟机内存
打开VMware——编辑虚拟机设置——硬件——硬盘(SCSI)——扩展——调整磁盘空间大小(要比以前大)。
2.对Ubuntu系统硬盘进行分区
此时你虽然给虚拟机添加了硬盘空间,但是实际上的Ubuntu系统的磁盘空间并没有增加,所以要对磁盘进行从新分区才能真正增加hdfs磁盘空间(不要害怕此过程不会删除系统上的原有数据)。我试了几种分区的方法,发现使用gparted这个图形化工具进行分区最方便和有效了。按下面步骤:
2.1 安装并运行gparted
sudo apt-get install gparted
gparted
2.2删除Ubuntu下原本的extend分区及linux swap空间
Ubuntu的Swap空间阻断了分区扩容,在磁盘起始点和终点上不连续。
所以先右键File System为extend和linux swap的分区,删除之。
2.3对原有磁盘空间进行扩容
删除extend的空间之后,便可以对原有的/dev/sda1进行扩容.
此时右键/dev/sda1选择resize,在保证预留出大小相当于分配给虚拟机的内存的空间的情况下,分的越多越好。
点击apply生效!
2.4新建extend分区,建立linux swap空间
最后,重新建立linux swap空间.
对着还未分配的空间,新增一个file system为extended的扩展分区,apply之。
然后在该分区下新建一个linux-swap空间。
再次输入df -h查看磁盘使用情况:
发现此时/dev/sda1已经扩容。
打开http://10.108.246.198:50070/ web页面发现hdfs已经退出了安全模式。 好了!我们的问题已经解决了!!!
解决hadoop伪分布式下hdfs存储空间不足的问题
最新推荐文章于 2024-05-07 21:00:00 发布