почему Java-процессы mapred не завершаются после успешного завершения задачи (hadoop) - PullRequest
0 голосов
/ 07 февраля 2019

Я заметил, что все мои датододы Hadoop обычно имеют около 10-15 процессов Java для пользователя 'mapred', который может зависать до нескольких дней за один раз.

Только пара процессовактивно занимаюсь работой.Остальные, кажется, успешно выполнили свои соответствующие задачи MapReduce давно, но они никогда не выходили.

Это связано с тем, что эти процессы удерживают драгоценное распределение памяти, а также отображают / уменьшают временные интервалы задач, несмотря на свою работу.(кумулятивный VSZ 58 ГБ и RSS более 30 ГБ на некоторых серверах ..)

Вот пример одного такого процесса (немного усеченного).Это в настоящее время 7/19/19 12:47 вечера MST, и вы можете увидеть процесс, начатый давно в 12: 01:

$ ps aux | grep mapred

USER       PID %CPU %MEM    VSZ   RSS    TTY      STAT START   TIME COMMAND

mapred    2915  0.2  0.1 1749504 365004 ?      Ssl  12:01   0:09         /usr/java/jdk1.7.0_00/jre/bin/java -Djava.library.path=/usr/lib/hadoop-0.20-      mapreduce/lib/native/Linux-amd64-64:/disk6/mapreduce/tmp-map-data/taskTracker    /mapred/jobcache/job_201902042217_28716  /attempt_201902042217_28716_m_000000_0/work -Xmx1024m -Djava.io.tmpdir=/disk6  /mapreduce/tmp-map-data/taskTracker/mapred/jobcache/job_201902042217_28716  /attempt_201902042217_28716_m_000000_0/work/tmp 
..
TLA -Dhadoop.tasklog.taskid=attempt_201902042217_28716_m_000000_0     -Dhadoop.tasklog.iscleanup=false -Dhadoop.tasklog.totalLogFileSize=0     org.apache.hadoop.mapred.Child 127.0.0.1 47071         attempt_201902042217_28716_m_000000_0 /var/log/hadoop-0.20-mapreduce/userlogs    /job_201902042217_28716/attempt_201902042217_28716_m_000000_0 -1455485471

Вот краткое изложение JobTracker, ясно показывающее вышеупомянутые Job ивсе его задачи завершены:

Hadoop Job 28716 on History Viewer
User: mapred
JobName: oozie:launcher:T=java:W=<censored>:A=checkStatus:ID=0007877-190202224243941-oozie-oozi-W
JobConf: hdfs://PRODcluster/tmp/hadoop-mapred/mapred/staging/mapred     /.staging/job_201902042217_28716/job.xml
Job-ACLs: All users are allowed
Submitted At: 7-Feb-2019 12:01:04
Launched At: 7-Feb-2019 12:01:04 (0sec)
Finished At: 7-Feb-2019 12:01:16 (12sec)
Status: SUCCESS
Analyse This Job
Kind    Total Tasks(successful+failed+killed)   Successful tasks            Failed tasks    Killed tasks    Start Time  Finish Time
Setup   1   1   0   0   7-Feb-2019 12:01:04     7-Feb-2019 12:01:06 (1sec)
Map     1   1   0   0   7-Feb-2019 12:01:08     7-Feb-2019 12:01:14     (5sec)
Reduce  0   0   0   0       
Cleanup     1   1   0   0   7-Feb-2019 12:01:14     7-Feb-2019 12:01:16 (1sec)

Вот хвост журнала задач, показывающий чистое завершение:

$ sudo ls -lh /var/log/hadoop-0.20-mapreduce/userlogs/job_201902042217_28716/attempt_201902042217_28716_m_000000_0/syslog

-rw-r - r-- 1 mapred mapred 22K Feb7 12:01 /var/log/hadoop-0.20-mapreduce/userlogs/job_201902042217_28716/attempt_201902042217_28716_m_000000_0/syslog

tail:

2019-02-07 12:01:12,983 INFO org.apache.hadoop.mapred.Task:     Task:attempt_201902042217_28716_m_000000_0 is done. And is in the process of commiting
2019-02-07 12:01:14,105 INFO org.apache.hadoop.mapred.Task: Task attempt_201902042217_28716_m_000000_0 is allowed to commit now
2019-02-07 12:01:14,128 INFO org.apache.hadoop.mapred.FileOutputCommitter: Saved output of task 'attempt_201902042217_28716_m_000000_0' to hdfs://PRODcluster:8020/user/mapred/oozie-oozi/0007877-190202224243941-oozie-oozi-W/checkStatus--java/output
2019-02-07 12:01:14,131 INFO org.apache.hadoop.mapred.Task: Task 'attempt_201902042217_28716_m_000000_0' done.
2019-02-07 12:01:14,133 INFO org.apache.hadoop.mapred.TaskLogsTruncater:     Initializing logs' truncater with mapRetainSize=-1 and reduceRetainSize=-1

Если я ускоряю процесс, то вижу, что FEX видит, как видит F:1021 *

$ sudo strace -p 301 -f


[pid   339] futex(0x7f5cac0d7c54, FUTEX_WAIT_BITSET_PRIVATE, 1, {11581718, 780361675}, ffffffff) = -1 ETIMEDOUT (Connection timed out)
[pid   339] futex(0x7f5cac0d7c28, FUTEX_WAKE_PRIVATE, 1) = 0
[pid   339] futex(0x7f5cac0d7c54, FUTEX_WAIT_BITSET_PRIVATE, 1, {11581718, 830757941}, ffffffff) = -1 ETIMEDOUT (Connection timed out)
[pid   339] futex(0x7f5cac0d7c28, FUTEX_WAKE_PRIVATE, 1) = 0
[pid   339] futex(0x7f5cac0d7c54, FUTEX_WAIT_BITSET_PRIVATE, 1, {11581718, 881088118}, ffffffff) = -1 ETIMEDOUT (Connection timed out)
[pid   339] futex(0x7f5cac0d7c28, FUTEX_WAKE_PRIVATE, 1) = 0
[pid   339] futex(0x7f5cac0d7c54, FUTEX_WAIT_BITSET_PRIVATE, 1, {11581718, 931488956}, ffffffff) = -1 ETIMEDOUT (Connection timed out)
[pid   339] futex(0x7f5cac0d7c28, FUTEX_WAKE_PRIVATE, 1) = 0
[pid   339] futex(0x7f5cac0d7c54, FUTEX_WAIT_BITSET_PRIVATE, 1, {11581718, 981908072}, ffffffff <unfinished ...>
[pid   329] <... futex resumed> )       = -1 ETIMEDOUT (Connection timed out)
[pid   329] futex(0x7f5cac09cc28, FUTEX_WAKE_PRIVATE, 1) = 0
[pid   329] futex(0x7f5cac09cc54, FUTEX_WAIT_BITSET_PRIVATE, 1, {11581719, 976658613}, ffffffff <unfinished ...>
[pid   339] <... futex resumed> )       = -1 ETIMEDOUT (Connection timed out)
[pid   339] futex(0x7f5cac0d7c28, FUTEX_WAKE_PRIVATE, 1) = 0
[pid   339] futex(0x7f5cac0d7c54, FUTEX_WAIT_BITSET_PRIVATE, 1, {11581719, 32166788}, ffffffff) = -1 ETIMEDOUT (Connection timed out)

[pid   339] futex(0x7f5cac0d7c28, FUTEX_WAKE_PRIVATE, 1) = 0

Эти задания выполняются через скоординированный рабочий процесс Oozie.Я нахожусь на версии Hadoop 2.0.0-cdh4.3.0, с 2 наменодами и 3 узлами Zookeeper.Один из них Zookeeper не работает пару месяцев, но не уверен, что это вообще связано.Пожалуйста, дайте мне знать, если что-нибудь еще я могу предоставить здесь.

...