我尝试将文件从本地磁盘复制到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
答案 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用户。