Size: a a a

2019 October 20

A4

Anon 43 in Data Engineers
Alex
если я правильно помню реализацию:
делается map в мэпере, результаты пишутся в буфер, буфер СОРТИРУЕТСЯ и кидается на диск

редьюсеры забирают данные с множества мэперов, соответственно это классический sorted merge по файлам получается и на одинаковые ключи вызывается функция reduce

имеется доп оптимизация когда можно первый раз применить функцию reduce ещё на стороне map
это снижает объем записываемых и передаваемых по сети данных
>буфер СОРТИРУЕТСЯ
вот я нигде не вижу в своем коде сортировки. Это автоматически hadoop делает?
источник

A

Alex in Data Engineers
да
источник

A

Alex in Data Engineers
поэтому ключи должны быть Comparable интерфейс реализовывать
источник

A

Alex in Data Engineers
источник

A

Alex in Data Engineers
вернее в случае хадупа это WritableComparable =)
источник

A

Alex in Data Engineers
ну и в самом описании сразу же есть

Hadoop MapReduce is a software framework for easily writing applications which process vast amounts of data (multi-terabyte data-sets) in-parallel on large clusters (thousands of nodes) of commodity hardware in a reliable, fault-tolerant manner.

A MapReduce job usually splits the input data-set into independent chunks which are processed by the map tasks in a completely parallel manner. The framework sorts the outputs of the maps, which are then input to the reduce tasks. Typically both the input and the output of the job are stored in a file-system. The framework takes care of scheduling tasks, monitoring them and re-executes the failed tasks.
источник

A

Alex in Data Engineers
кстати по линке же и пример вордкаунта лежит =) можно разобраться
источник

A4

Anon 43 in Data Engineers
спасибо!
источник

A

Alex in Data Engineers
правда там есть нюанс

вы использовали пакет org.apache.hadoop.mapreduce
по моей линке пакет org.apache.hadoop.mapred

не срашивайте кто из них новее, но был сразу один, потом добавили второй и первый депрекейтнули, потом подумали немного и решили что оба нужны и андепрекейтнули

на практике оба это всего лишь обвязка над внутренней реализацией которая делает сразу оба поведения
источник

M

Mi in Data Engineers
Alex
правда там есть нюанс

вы использовали пакет org.apache.hadoop.mapreduce
по моей линке пакет org.apache.hadoop.mapred

не срашивайте кто из них новее, но был сразу один, потом добавили второй и первый депрекейтнули, потом подумали немного и решили что оба нужны и андепрекейтнули

на практике оба это всего лишь обвязка над внутренней реализацией которая делает сразу оба поведения
mapreduce это MRv2
источник

A

Alex in Data Engineers
@meosit может ещё помните в чем там отличие интерфейса? Помню что вроде pull/push что-то
источник

M

Mi in Data Engineers
Alex
@meosit может ещё помните в чем там отличие интерфейса? Помню что вроде pull/push что-то
ну там много чего, начиная от переноса многих частей логики на общую точку входа (Context) и заканчивая тем что mapred использовался ещё до Hadoop v2 (появился YARN, ResourceManager и тд), MRv2 соответственно это просто имплементация YARN аппликейшона
источник

A4

Anon 43 in Data Engineers
Если использую job.setMapOutput(Key | Value)Class, то job.setOutput(Key | Value)Class уже не надо писать?
источник

A

Alex in Data Engineers
Надо
источник

A

Alex in Data Engineers
Первое это вывод мепа, второе всей джобы
источник

A4

Anon 43 in Data Engineers
а в какой очередности их инициализировать?
источник

GP

Grigory Pomadchin in Data Engineers
Anon 43
а в какой очередности их инициализировать?
а там без разницы, вот это все что job.set это конфигурация джобы. (буквально в мапу конфиги строками кладет)
источник

A4

Anon 43 in Data Engineers
да, разобрался. Просто ошибка выскакивала, оказывается это из за combiner-а
источник

A4

Anon 43 in Data Engineers
можно значение hadoop класса Text конвертировать в int?
источник

M

Mi in Data Engineers
Anon 43
можно значение hadoop класса Text конвертировать в int?
Берёте значение, конвертируете в инт
источник