У меня есть простой пример, работающий на главном узле Dataproc, где установлены Tachyon, Spark и Hadoop.

У меня ошибка репликации при записи в Tachyon из Spark. Есть ли способ указать, что репликация не требуется?

15/10/17 08:45:21 WARN org.apache.hadoop.hdfs.DFSClient: DataStreamer Exception
org.apache.hadoop.ipc.RemoteException(java.io.IOException): File /tmp/tachyon/workers/1445071000001/3/8 could only be replicated to 0 nodes instead of minReplication (=1).  There are 0 datanode(s) running and no node(s) are excluded in this operation.
    at org.apache.hadoop.hdfs.server.blockmanagement.BlockManager.chooseTarget4NewBlock(BlockManager.java:1550)
    at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getNewBlockTargets(FSNamesystem.java:3110)

Распечатанная мною часть журнала - это просто предупреждение, но сразу же следует ошибка Spark.

Я проверил документы конфигурации Tachyon и обнаружил, что может быть причиной этого:

tachyon.underfs.hdfs.impl   "org.apache.hadoop.hdfs.DistributedFileSystem"

Учитывая, что все это находится на главном узле Dataproc, с предустановленным Hadoop и HDFS, работающим со Spark, я бы подумал, что эту проблему можно решить изнутри Tachyon.

1
BAR 18 Окт 2015 в 01:12

2 ответа

Лучший ответ

Вы можете настроить репликацию по умолчанию, вручную установив для dfs.replication внутри /etc/hadoop/conf/hdfs-site.xml какое-либо значение, отличное от значения по умолчанию для Dataproc, равного 2. Установка его только на вашем главном компьютере должна, по крайней мере, охватывать вызовы драйверов, вызовы hadoop fs, и, похоже, он также правильно распространяется на вызовы hadoop distcp, поэтому, скорее всего, вам не нужно беспокоиться о том, чтобы также установить его каждый воркер, пока работники получают конфигурации своей файловой системы из конфигураций с заданием.

Обратите внимание, что репликация 1 уже означает одну копию данных в целом, а не означает «одну реплику в дополнение к основной копии». Итак, репликация не может быть ниже 1. Минимальная репликация контролируется dfs.namenode.replication.min в том же hdfs-site.xml; вы можете увидеть ссылку на него здесь, в BlockManager.java.

2
Dennis Huo 29 Окт 2015 в 17:50

Поскольку это проблема репликации, можно, естественно, посмотреть на состояние рабочих узлов.

Оказывается, они упали по другой причине. После исправления эта ошибка исчезла.

Я хотел бы знать и приму в качестве ответа, как вручную изменить коэффициент репликации.

1
BAR 27 Окт 2015 в 18:58