SafeModeException:Name节点处于安全模式

时间:2012-12-05 18:00:10

标签: hadoop

我尝试将文件从本地磁盘复制到hdfs。起初它给了SafeModeException。在搜索解决方案时,我读到如果再次执行相同的命令,则不会出现问题。所以我再次尝试,但没有例外。

hduser@saket:/usr/local/hadoop$ bin/hadoop dfs -copyFromLocal /tmp/gutenberg/ /user/hduser/gutenberg
copyFromLocal: org.apache.hadoop.hdfs.server.namenode.SafeModeException: Cannot create directory /user/hduser/gutenberg. Name node is in safe mode.
hduser@saket:/usr/local/hadoop$ bin/hadoop dfs -copyFromLocal /tmp/gutenberg/ /user/hduser/gutenberg

为什么会这样?我应该使用此代码保持安全模式吗?

hadoop dfs -safemode leave

2 个答案:

答案 0 :(得分:17)

NameNode 位于安全模式中,直到数据节点报告的已配置百分比的块为在线状态。它可以通过dfs.namenode.safemode.threshold-pct

中的参数hdfs-site.xml进行配置

对于只有很少块的小型/开发集群 - 将此参数设置为低于其默认0.9999f值是有意义的。否则1个丢失的块可能导致系统挂起安全模式。

答案 1 :(得分:12)

转到hadoop路径bin(在我的系统中/usr/local/hadoop/bin/),

cd /usr/local/hadoop/bin/

检查文件hadoop

hadoopuser@arul-PC:/usr/local/hadoop/bin$ ls

o / p将是,

hadoop            hadoop-daemons.sh  start-all.sh       start-jobhistoryserver.sh  stop-balancer.sh          stop-mapred.sh
hadoop-config.sh  rcc                start-balancer.sh  start-mapred.sh            stop-dfs.sh               task-controller
hadoop-daemon.sh  slaves.sh          start-dfs.sh       stop-all.sh                stop-jobhistoryserver.sh

然后您必须使用命令./hadoop dfsadmin -safemode leave

关闭安全模式
hadoopuser@arul-PC:/usr/local/hadoop/bin$ ./hadoop dfsadmin -safemode leave

你会得到回复,

Safe mode is OFF

注意:我创建了名为hadoopuser的Hadoop用户。