Почему мой тестовый кластер работает в безопасном режиме?

Я тестирую некоторые основные операции HDFS, такие как создание каталогов. У меня есть следующая конфигурация кластера в моем тесте:

import org.apache.hadoop.fs._
import org.apache.hadoop.fs.permission.FsPermission
import org.apache.hadoop.hdfs.{HdfsConfiguration, MiniDFSCluster}

// ...

private val baseDir = new File("./target/hdfs/test").getAbsoluteFile

private val conf = new HdfsConfiguration()
conf.set(MiniDFSCluster.HDFS_MINIDFS_BASEDIR, baseDir.getAbsolutePath)
conf.setInt("dfs.safemode.threshold.pct", 0)
private val builder = new MiniDFSCluster.Builder(conf)
private val cluster = builder.build()
cluster.waitActive()
private val fs = cluster.getFileSystem

private val host = cluster.getNameNode.getHttpAddress.getHostString
private val port = cluster.getNameNodePort

Я обнаружил, что когда я запускаю тесты, я всегда получаю эту ошибку:

[warn] o.a.h.s.UserGroupInformation - PriviledgedActionException as:erip (auth:SIMPLE) cause:org.apache.hadoop.hdfs.server.namenode.SafeModeException: Cannot create directory [...]. Name node is in safe mode.
Resources are low on NN. Please add or free up more resources then turn off safe mode manually. NOTE:  If you turn off safe mode before adding resources, the NN will immediately return to safe mode. Use "hdfs dfsadmin -safemode leave" to turn safe mode off.

вскоре после этого...

[info]   org.apache.hadoop.ipc.RemoteException: Cannot create directory [...]. Name node is in safe mode.
[info] Resources are low on NN. Please add or free up more resources then turn off safe mode manually. NOTE:  If you turn off safe mode before adding resources, the NN will immediately return to safe mode. Use "hdfs dfsadmin -safemode leave" to turn safe mode off.

У меня кластер в памяти, поэтому я не знаю, почему я это вижу. Я думал, что установка "dfs.safemode.threshold.pct" не позволит мне увидеть эту ошибку на основе этого ответа, но я ошибся.

Почему мой тестовый кластер в памяти работает в безопасном режиме? Как мне остановить это от этого?


person erip    schedule 13.02.2018    source источник


Ответы (2)


Проблема была с cluster.waitActive(), который ожидает готовности узлов имен. Это должно было быть cluster.waitClusterUp(), который явно ожидает выхода кластера из безопасного режима.

person erip    schedule 14.02.2018

Используйте команду ниже, чтобы выйти из безопасного режима ниже запуска любой команды-

hadoop dfsadmin -safemode leave

Другие команды, связанные с безопасным режимом:

hadoop dfadmin -safemode get

чтобы получить текущее рабочее состояние системы

person nitish jaiswal    schedule 14.02.2018
comment
Я прямо заявил, что работаю с кластером в памяти — я не могу выполнять на нем команды. - person erip; 14.02.2018