Your SlideShare is downloading. ×
Hadoop Distributions: Bottlenecks and Tuning
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Introducing the official SlideShare app

Stunning, full-screen experience for iPhone and Android

Text the download link to your phone

Standard text messaging rates apply

Hadoop Distributions: Bottlenecks and Tuning

329
views

Published on

This presentation by Alexey Diomin, R&D Engineer at Altoros, explains how to spot performance bottlenecks in Hadoop and overviews five approaches to eliminating them.

This presentation by Alexey Diomin, R&D Engineer at Altoros, explains how to spot performance bottlenecks in Hadoop and overviews five approaches to eliminating them.

Published in: Technology, Business

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
329
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
33
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide
  • вывод map, если в буфер не влазит то сброс на диск, потом merge-sort.в определенный момент 2х кратное превышение использования диска относительно вывода map
  • данные гоняются по сети, нагрузка на io – disk read & network
  • вывод map, если в буфер не влазит то сброс на диск, потом merge-sort.в определенный момент 2х кратное превышение использования диска относительно вывода map
  • Задачка: сколько записей и чтений на диск можно получить имея вывод X.идеально: X записали из map, X считали на этапе fetchсуровая реальность: write: X(spill) + X (merge-sort) + X (fetch/spill) = 3 Xread: X (merge-sort) + X (fetch) + X (toreducer) = 3 X
  • Задачка: сколько записей и чтений на диск можно получить имея вывод X.идеально: X записали из map, X считали на этапе fetchсуровая реальность: write: X(spill) + X (merge-sort) + X (fetch/spill) = 3 Xread: X (merge-sort) + X (fetch) + X (toreducer) = 3 X
  • увеличим количество машин в 2 раза, а заодно и в параметрах проставим в 2 раза больше map и reducemap и reduce => eachother => в 4 раза больше коннектов на получение данных => лимиты на обработку handlers, на самой датанодеВЫВОД: количество одновременно запущенных map/reduceинстансов должно определяться в первую очередь задачей, линейное масштабирование это сказка
  • увеличим количество машин в 2 раза, а заодно и в параметрах проставим в 2 раза больше map и reducemap и reduce => eachother => в 4 раза больше коннектов на получение данных => лимиты на обработку handlers, на самой датанодеВЫВОД: количество одновременно запущенных map/reduceинстансов должно определяться в первую очередь задачей, линейное масштабирование это сказка
  • 2) увеличим блок данных для map => выскочили за размеры буфера => лишний spill на диск => больше дискового io => все медленней. ВЫВОД: размер блока для обработки на вход map должен быть достаточно большим чтобы заполнить буфер, но не больше, иначе лишняя активность на диске
  • 2) увеличим блок данных для map => выскочили за размеры буфера => лишний spill на диск => больше дискового io => все медленней. ВЫВОД: размер блока для обработки на вход map должен быть достаточно большим чтобы заполнить буфер, но не больше, иначе лишняя активность на диске
  • 3) увеличим размер кеша на map/reduce => ограничения размера для буфера в jvm (больше 2х гб на массив не выделить)Тут уже ничего не поделать, нужно учитывать что у map/reduce функций есть свои лимиты и они легко достижимы
  • компрессия => размен cpu на diskio => snappy, достаточно шустрое решение для потокового сжатия
  • Combiner - не всегда возможно использовать в лоб (например мы считаем с помощью hive/pig) или у нас веселая функция
  • incorrect
  • incorrect
  • правильное решение, но требует дополнительных манипуляций на всех уровнях: 1) меняем MapOutputFormat (в значении не просто число, а сумма свернутых чисел и количество чисел для получения текущей суммы)2) отдельная функция для Combine
  • Transcript

    • 1. Diomin Aliaksey R&D 2014, Minsk
    • 2. OpenSource Monitoring Target Group Apache Hadoop Yes X Developers Cloudera Yes Good All Hortonworks Yes Good All MapR No Bad Enterprise PivotalHD No Bad Enterprise 3
    • 3. How to find the bottleneck? 4
    • 4. 5
    • 5. 6
    • 6. 8
    • 7. 9
    • 8. 10
    • 9. 11
    • 10. 12
    • 11. 1. Increase size of cluster 2. Increase input block size 3. Increase buffer size 13
    • 12. 1. Increase size of cluster 2. Increase input block size 3. Increase buffer size 14
    • 13. 15
    • 14. 16
    • 15. 17
    • 16. 1. Increase size of cluster 2. Increase input block size 3. Increase buffer size 18
    • 17. 19
    • 18. 1. Increase size of cluster 2. Increase input block size 3. Increase buffer size 20
    • 19. 1. Compression 21
    • 20. 1. Compression 2. Combiner 22
    • 21. Wordcount Reduce function as Combine combine 1: <a, 1> <b, 1> <a, 1> => <a, 2> <b, 1> combine 2: <a, 1> <b, 1> => <a, 1> <b, 1> Reduce: <a, {1, 2}> <b, {1, 1}> => <a, 3> <b, 2> 23
    • 22. Mean combine 1: <k,40> <k,30> <k,20> => <k, 30> combine 2: <k,2> <k,8> => <k, 5> Reduce: => <k, 17.5> <k, {30, 5}> 24
    • 23. Mean combine 1: <k,40> <k,30> <k,20> => <k, 30> combine 2: <k,2> <k,8> => <k, 5> Reduce: => <k, 17.5> <k, {30, 5}> (40 + 30 + 20 + 2 + 8)/5 = 17.5 25
    • 24. Mean combine 1: <k,<40,1>> <k,<30,1>>, <k,<20,1>> => <k, <90,3> > <k,<2,1>> <k, <8,1>> => <k, <10, 2> > Reduce: => <k, 20> combine 2: <k, {<90,3>, <10,2>} > 26
    • 25. 27