Каждый узел данных в кластере Hadoop постоянно считывает данные с диска

#hadoop #hdfs #cloudera-cdh

#hadoop #hdfs #cloudera-cdh

Вопрос:

Некоторое время назад я обнаружил, что каждый из наших узлов данных постоянно считывает диски со скоростью ~ 10 м / с. Я обнаружил это с iotop помощью утилиты.

Что я сделал до сих пор для его диагностики:

  • Я пытался остановить различные службы в кластере, но он останавливается только тогда, когда я полностью останавливаю службу hdfs
  • Я проверил журналы узла данных, но могу видеть только некоторые HDFS_WRITE операции s, происходящие каждые 1-2 минуты, ничего о чтении данных. Конечно, я проверял во время простоя

Некоторая информация о нашей системе:

  • сейчас мы используем дистрибутив CDH версии 5.8, но проблема возникла несколько версий назад
  • на данный момент в YARN нет запущенных заданий
  • проблема существует уже несколько месяцев 24/7, и раньше ее не было

На данный момент моим главным подозреваемым является некоторый процесс аудита в CDH. К сожалению, я не смог найти никакой хорошей документации по администрированию этих процессов.

Вот информация о процессе узла данных из ps -ef выходных данных:

 hdfs     58093  6398 10 Oct11 ?        02:56:30 /usr/lib/jvm/java-8-oracle/bin/java -Dproc_datanode -Xmx1000m -Dhdfs.audit.logger=INFO,RFAAUDIT -Dsecurity.audit.logger=INFO,RFAS -Djava.net.preferIPv4Stack=true -Dhadoop.log.dir=/var/log/hadoop-hdfs -Dhadoop.log.file=hadoop-cmf-hdfs-DATANODE-hadoop-worker-03.srv.mycompany.org.log.out -Dhadoop.home.dir=/opt/cloudera/parcels/CDH-5.8.2-1.cdh5.8.2.p0.3/lib/hadoop -Dhadoop.id.str=hdfs -Dhadoop.root.logger=INFO,RFA -Djava.library.path=/opt/cloudera/parcels/CDH-5.8.2-1.cdh5.8.2.p0.3/lib/hadoop/lib/native -Dhadoop.policy.file=hadoop-policy.xml -Djava.net.preferIPv4Stack=true -server -Xms1073741824 -Xmx1073741824 -XX: UseParNewGC -XX: UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=70 -XX: CMSParallelRemarkEnabled -XX:OnOutOfMemoryError=/usr/lib/cmf/service/common/killparent.sh -Dhadoop.security.logger=INFO,RFAS org.apache.hadoop.hdfs.server.datanode.DataNode
  

Я буду очень благодарен за любые подсказки по проблеме.

Комментарии:

1. какие еще узлы вы используете в окне с datanode?

2. Я надеюсь, что ни один / cron / script не запускает hdfs rebalancer, который балансирует данные с одного узла данных на другие узлы данных.

3. @PreetiKhurana когда я запускаю балансировщик, он немедленно завершает работу с сообщением «кластер сбалансирован»

4. @RatnakarPawar вы имеете в виду сервисы? Например, мы запускаем HBase, но, как я уже сказал, iotop точно указывает на процесс datanode, поэтому это должно быть что-то с HDFS.

5. хорошо, поместите wireshark / tcupdump на порт datanode и посмотрите, откуда поступают данные. Проследите до исходного IP-адреса и исходного порта и посмотрите, какое приложение учитывает его