2016-01-05 2 views
1

В настоящее время я читаю статьи о Hadoop и популярном алгоритме MapReduce. Тем не менее, я не мог видеть ценность MapReduce и буду рад, если кто-то может дать некоторое представление об этом. В частности:Цель Hadoop MapReduce

  • Сообщается, что MapReduce получает файл и создает пары ключевых значений. Что такое ключ? Просто слово, комбинация слов или что-то еще? Если ключ - это слова в файле, то какова цель написания кода для MapReduce? MapReduce должен делать то же самое без реализации конкретного алгоритма.

  • Если все преобразовано в пары ключевых значений, то что делает Hadoop, просто создается словарь, как в JAVA и C#, wright? Возможно, Hadoop может создать словарь более эффективным способом. Помимо эффективности, что Hadoop обеспечивает, что обычный объект Dictionary не может?

  • Что я могу заработать, преобразовывая файл в пары значений ключа? Я знаю, что могу найти подсчеты и частоты слов, но для чего? Какова может быть цель подсчета количества слов?

  • Говорят, что Hadoop можно использовать для неструктурированных данных. Если все преобразуется в пару ключевых значений, то это настолько нормально, что Hadoop может работать с неструктурированными данными! Я могу написать программу на C# для генерации пар значений ключей вместо использования Hadoop. Какова реальная ценность Hadoop, которую я не могу использовать, используя другие инструменты программирования?

Вопросы могут показаться взаимосвязанными друг с другом, но я считаю, что я дал представление о моем вопросе. Буду рад, если вы сможете дать ответы на вышеуказанные вопросы.

С уважением,

Edit:

Привет ребята,

Большое спасибо за ваши ответы. То, что я понял из ваших сочинениях и играть с Hadoop немного, я хотел бы изложить свои выводы в основной способ очень высокого уровня:

  • процесса Hadoop данные через пар ключ-значение. Все преобразуется в пары ключ-значение.
  • Основные интересы должны быть уделены определениям ключа и стоимости, которые могут изменяться в соответствии с потребностями бизнеса.
  • Hadoop обеспечивает только эффективную (например, распределенную, масштабируемую систему и огромный объем обработки данных) реализацию словаря, не более того.

Любые комментарии к этим результатам приветствуются.

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

С уважением,

ответ

3
It is said that MapReduce receives a file and produces key value pairs. What is a key? Just a word, a combination of words or something 

еще?Если ключ - это слова в файле, то какова цель код написания MapReduce? MapReduce должен делать то же самое без , реализуя определенный алгоритм.

MapReduce следует визуализировать как распределенную вычислительную среду. Для примера подсчета слов ключ - это слово, но мы можем иметь любую вещь в качестве ключа (для некоторых из них доступны API-интерфейсы, и мы можем также писать собственные). Целью ключа является разделение, сортировка и объединение отсортированных данных для выполнения агрегаций. Фаза карты будет использоваться для выполнения преобразований на уровне строк, фильтрации и т. Д., А фаза сокращения будет учитывать агрегацию. Map и Reduce необходимо реализовать, а затем перетасовать фазу, которая, как правило, из коробки, позаботится о разделении, перетасовке, сортировке и объединении.

If everything is converted to key value pairs then what Hadoop does is just creating a Dictionary like in JAVA and C#, wright? May be 

Hadoop может создать словарь в более эффективным способом. За исключением эффективности, что Hadoop обеспечивает, что обычный объект Dictionary не может?

Покрытие как часть предыдущего вопроса.

What do I earn by converting a file to key value pairs? I know I can find the counts and frequencies of the words, but for what? What 

может быть целью подсчета количества слов?

Вы можете выполнять преобразования, фильтрацию, агрегации, объединения и любую настраиваемую задачу, которая может выполняться на неструктурированных данных. Основное различие - . Следовательно, он может масштабироваться лучше, чем любые устаревшие решения.

It is said that Hadoop can be used for unstructured data. If everything is converted to a key value pair, then it so normal that 

Hadoop может работать с неструктурированными данными! Я могу написать программу в C# до генерировать пары значений ключей вместо использования Hadoop. Какое значение имеет значение Hadoop, которое я не могу использовать, используя другие инструменты программирования ?

Ключ может быть смещен по строкам, а затем вы можете обрабатывать каждую запись. Неважно, если каждая запись имеет одинаковую структуру или другую.

Вот преимущества использования Hadoop:

  1. Распределенная файловая система (HDFS)
  2. Распределенная структура обработки (карта уменьшающие)
  3. местонахождение
  4. данных (как правило, в современных приложениях, файлы будут смонтирована в сети и, следовательно, данные, которые больше, чем код, должны быть скопированы на серверы, на которых развертывается код. В коде hadoop поступают данные, и все истории успеха Hadoop не используют сетевую файловую систему)
  5. Ограниченное использование сети при хранении и проце ssing очень большие наборы данных
  6. Экономичный (с открытым исходным кодом программное обеспечение на товарном оборудовании) и многие другие.
3

Приведите пример примера Word, чтобы лучше понять.

Что такое ключ? Просто слово, комбинация слов или что-то еще?

Для Mapper:

offset value Ключ от начала файла. Значение - entire line. После того, как строка будет считана из файла, линия будет разделена на несколько пар значений ключа для Reducer. Разделитель, такой как вкладка или пробел, или символы типа:: помогает разделить линии на пары ключевых значений.

Для Reducer:

ключ индивидуален word. Значение - occurrence слова.

После того, как вы получите пары ключевых значений в редукторе, вы можете выполнить много агрегации/стигматизации/категоризации данных и предоставить аналитическое резюме данных.

Посмотрите на эту use case article, которая охватывает финансовый, Энергетика, телекоммуникации, ритейл и т.д.

взглянуть на эту article для лучшего понимания всего слова подсчитывать пример и Map reduce учебник.

Какова цель написания кода для MapReduce? MapReduce должен делать то же самое без реализации конкретного алгоритма.

Hadoop имеет четыре ключевых компонента.

1. Hadoop Common: Общие утилиты, которые поддерживают другие модули Hadoop.

2. Hadoop Distributed File System (HDFS™): распределенная файловая система, обеспечивающая высокопроизводительный доступ к данным приложения.

3. Hadoop YARN: Структура планирования заданий и управления ресурсами кластера.

4. Hadoop MapReduce: Система на основе YARN для параллельной обработки больших наборов данных.

Возможно, Hadoop может создать словарь более эффективным способом. Помимо эффективности, что Hadoop обеспечивает, что обычный объект Dictionary не может?

Создание словаря не является основной целью. Hadoop создает этот словарь и использует эти пары ключевых значений для более эффективного решения проблем использования бизнеса в зависимости от требований.

Пример подсчета слов может обеспечивать вывод как только Word & Количество слов. Но вы можете обрабатывать Структурированные/полупрофессиональных Sturctured & Un-Структурированные данные для различных случаев применения

  1. Найти самый жаркий день год/месяц/день/час для данного места во всей вселенной.
  2. Найдите количество сделок купли-продажи определенного товара на NYSE в определенный день.Предоставляйте мудрый/часовой мудрый/дневной обзор транзакций на акцию. Найти топ-10 высоко торгуемых акций на данный день
  3. Найти количество твитов/повторно твиты для конкретного тега ключа

Что может быть целью подсчета количества слов?

Объяснил цель в более ранних ответах.

Я могу написать программу на C# для генерации пар значений ключей вместо использования Hadoop. Какова реальная ценность Hadoop, которую я не могу использовать, используя другие инструменты программирования?

Сколько объем данных вы можете обращаться в письменной форме C#, чтобы получить ключевые пары значений и данных процесса? Можете ли вы обрабатывать 10 peta байтов информации о погоде в кластере узлов 5000 с использованием C# с распределенной инфраструктурой хранения/обработки, разработанной на C#?

Как вы суммировать данные Или найти 10 лучших классных/горячих мест с помощью C#?

Вам необходимо разработать некоторые рамки для выполнения всех этих задач, и Hadoop уже разработал эту инфраструктуру.

  1. HDFS используется для распределенного хранения данных в объемах пета байт. Если вам нужно обрабатывать рост данных, просто добавьте еще несколько узлов в кластер hadoop.

  2. Hadoop Map reduce & YARN Предоставляет инфраструктуру для распределенной обработки данных для обработки данных, хранящихся в тысячах машин в кластере Hadoop.

Источник изображения: kickstarthadoop (автор статьи: Bejoy KS)

enter image description here