我试图通过向Dataproc集群提交Spark作业来写入hdfs:///home/bryan/test_file/
的HDFS目录。
我收到名称节点处于安全模式的错误。我有a solution让它脱离安全模式,但我担心这可能是因为另一个原因。
为什么Dataproc群集处于安全模式?
ERROR org.apache.spark.streaming.scheduler.JobScheduler: Error running job streaming job 1443726448000 ms.0
org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.hdfs.server.namenode.SafeModeException): Cannot create directory /home/bryan/test_file/_temporary/0. Name node is in safe mode.
The reported blocks 125876 needs additional 3093 blocks to reach the threshold 0.9990 of total blocks 129098.
The number of live datanodes 2 has reached the minimum number 0. Safe mode will be turned off automatically once the thresholds have been reached.
答案 0 :(得分:2)
安全模式的含义
NameNode处于安全模式,直到数据节点报告哪些块在线。这样做是为了确保NameNode不会开始复制块,即使存在(实际上)足够(但未报告)的复制。
为什么会这样?
通常,对于您描述的Dataproc群集,不应该发生这种情况。在这种情况下,我怀疑群集中的虚拟机没有正常联机或遇到问题(网络,其他),因此群集永远不会离开安全模式。坏消息是这意味着集群处于不良状态。由于Dataproc集群可以快速启动,因此我建议您删除集群并创建一个新集群。好消息,这些错误应该是非常罕见的。
答案 1 :(得分:0)
原因是您可能在启动工作程序之前启动了主节点(外壳名称节点)。如果关闭所有节点,请先启动工作程序 ,然后再启动应该工作的主节点。我怀疑主节点首先启动,检查工作人员是否在那里。如果他们处于脱机状态,它将进入安全模式。通常,由于存在心跳,因此不应发生这种情况。但是,这是事实,主节点的重启将解决此问题。就我而言,这是Dataproc上的火花。
HTH