Если у меня Hadoop работает на сетке из 50 машин, И я запускаю задание определения наиболее распространенных слов, могу ли я указать, что я только хочу искать в документах abc1.txt и abc2.txt? Как Hadoop знает, на каких машинах искать эти файлы, или попытается найти файлы на каждой из 50 машин?Работает ли Hadoop MapReduce на каждой машине?
ответ
Да, вы должны указать путь к файлам в HDFS в качестве входных данных для задания MapReduce. Но хорошая вещь - вам не нужно знать, где на самом деле хранятся эти файлы.
Когда вы загружаете abc1.txt
и abc2.txt
в HDFS - распределенную файловую систему, Hadoop будет хранить блоки данных из этих файлов на нескольких машинах в кластере, называемом узлами (по умолчанию по умолчанию). Если размер файлов больше, чем может хранить один компьютер - Hadoop будет разбивать файлы на несколько блоков и будет хранить каждый блок на нескольких узлах.
Таким образом, задание не обязательно должно знать, где хранятся файлы. Ваша программа работы будет только идентифицировать файлы по URI, например hdfs://abc1.txt
и hdfs://abc2.txt
.
Hadoop пытается выполнить задание (или часть задания) на том же узле, где хранятся данные.
Когда Hadoop назначит вам задание, он будет учитывать, какие узлы имеют данные для задания и какой узел доступен в это время. Затем он запланирует выполнение задания на узле.
В случае, если каждый файл соответствует одному узлу, задание будет планироваться для запуска на одном узле на файл. Таким образом, он не будет запущен на всех 50 узлах кластера.
В hadoop вы помещаете файлы в hdfs и копируете файлы в нескольких местах, скажем, 3 копии каждого файла, которые расположены равномерно.
Например, у вас есть 50 файлов, каждый из которых имеет 3 копии в hdfs (этот номер определяется при настройке hadoop). Скажем, Machine1
имеет abc1.txt, abc24.txt and abc47.txt
, а M2 имеет abc11.txt, abc24.txt and abc27.txt
, а другие аналогичны.
Когда вы даете abc_ я .txt (я это от 1 до 50) в качестве входных данных для abc24.txt
Hadoop будет давать задание либо M1 или M2 или другой машине, которая имеет файл, чтобы не иметь любой сетевой передачи данных. И все остальные файлы будут обрабатываться машиной с файлом (может быть какой-то исключительный случай, когда это правило выходит из строя). Для лучшего понимания прочитайте это wiki page.
- 1. Может ли HBase, MapReduce и HDFS работать на одной машине, на которой установлен и работает Hadoop?
- 2. Hadoop eclipse mapreduce не работает?
- 3. Hadoop MapReduce потоковое не работает
- 4. Hadoop mapreduce работает очень медленно
- 5. hadoop: tracking MapReduce tasks
- 6. Hadoop - MapReduce
- 7. Hadoop MapReduce
- 8. Параллельный запуск MapReduce на Hadoop
- 9. работает программа non mapreduce в hadoop
- 10. Hadoop: Как работает OutputCollector во время MapReduce?
- 11. Практика Hadoop на локальной машине
- 12. Дубликаты в hadoop mapreduce
- 13. Hadoop MapReduce getMapOutput не удалось
- 14. Hadoop: MapReduce: Выбор узла
- 15. Сортировка в MapReduce Hadoop
- 16. MapReduce Hadoop 2.4.1 Редуктор не работает
- 17. MapReduce работа не работает в Hadoop-2.6.0
- 18. Вход Hadoop/MapReduce
- 19. Hadoop MapReduce 2.5.1 замерзает
- 20. Hadoop Mapreduce Counters
- 21. Hadoop Mapreduce wordcount
- 22. Hadoop MapReduce Уровни сортировки
- 23. Настройка Hadoop на машине Mac
- 24. hadoop hbase mapreduce combiner
- 25. hadoop mapreduce model java
- 26. Hadoop MapReduce Output
- 27. MapReduce в Hadoop 2.2.0 не работает
- 28. Hadoop: Iterative MapReduce Performance
- 29. Hadoop MapReduce thinking
- 30. ArrayIndexOutofBoundsException с Hadoop MapReduce
чувак, читайте о HDFS :) – Amar