SafeModeException:Name节点处于安全模式

sak*_*ket 12 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
Run Code Online (Sandbox Code Playgroud)

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

hadoop dfs -safemode leave
Run Code Online (Sandbox Code Playgroud)

Dav*_*man 17

NameNode处于安全模式,直到数据节点报告的已配置百分比的块为在线.它可以通过参数被配置dfs.namenode.safemode.threshold-pcthdfs-site.xml

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


A J*_*A J 13

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

cd /usr/local/hadoop/bin/
Run Code Online (Sandbox Code Playgroud)

检查是否有文件hadoop,

hadoopuser@arul-PC:/usr/local/hadoop/bin$ ls
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

然后你必须使用命令关闭安全模式./hadoop dfsadmin -safemode leave,

hadoopuser@arul-PC:/usr/local/hadoop/bin$ ./hadoop dfsadmin -safemode leave
Run Code Online (Sandbox Code Playgroud)

你会得到回应,

Safe mode is OFF
Run Code Online (Sandbox Code Playgroud)

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