Подтвердить что ты не робот

Отправная точка для изучения того, как реализовать MapReduce/Hadoop в Python?

Недавно я начал заниматься анализом данных, и за последний год я узнал немало (на данный момент, в основном, исключительно с использованием Python). Я считаю, что следующий шаг - начать тренироваться в MapReduce/Hadoop. Однако у меня нет формальной подготовки в области компьютерных наук, и поэтому я часто не совсем понимаю жаргон, который используется, когда люди пишут о Hadoop, поэтому мой вопрос здесь.

На что я надеюсь - это обзор Hadoop на верхнем уровне (если только что-то еще я не должен использовать?) и, возможно, рекомендация для какого-то учебника/учебника.

Если, например, я хочу распараллелить нейронную сеть, которую я написал на Python, с чего бы начать? Существует ли относительно стандартный метод реализации Hadoop с алгоритмом или для каждого решения очень специфична проблема?

Страница вики-страницы Apache описывает Hadoop как "структуру для запуска приложений на большом кластере, построенном из товарного оборудования". Но что это значит? Я слышал термин "Hadoop Cluster", и я знаю, что Hadoop - это Java. Значит ли это для приведенного выше примера, мне нужно будет изучить Java, настроить кластер Hadoop на, скажем, несколько серверов amazon, а затем Jython-ify мой алгоритм, прежде чем, наконец, заставить его работать в кластере с помощью Hadoop?

Спасибо за помощь!

4b9b3361

Ответ 1

Во-первых, чтобы использовать Hadoop с Python (когда вы запускаете его в своем собственном кластере, Amazon EMR или чем-то еще), вам понадобится опция "Hadoop Streaming".

Прочитайте оригинальную главу (обновленная ссылка) Руководства Hadoop, чтобы понять, как это работает.

Также есть отличная библиотека "MrJob", которая упрощает запуск заданий Python в Hadoop.

Вы можете настроить свой собственный кластер или попробовать поиграть с Amazon Elastic Map Reduce. Последнее может стоить вам чего-то, но иногда легче запустить в начале. Существует большое руководство по запуску Python с Hadoop Streaming в Amazon EMR. Это сразу показывает простое, но практическое применение.

Чтобы изучить сам Hadoop, я бы порекомендовал прочитать одну из книг. Говорят, что "Hadoop In Action" лучше освещает вещи для тех, кто интересуется потоковой передачей Python/Hadoop.

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

ОБНОВИТЬ:

Что касается понимания Map Reduce (то есть, как идентифицировать и выражать различные виды проблем на языке Map Reduce), прочитайте большую статью " Шаблоны MapReduce, алгоритмы и варианты использования " с примерами на Python.

Ответ 2

Я бы порекомендовал вам начать с загрузки Cloudera VM для Hadoop, который в наши дни является довольно стандартным для многих отраслей промышленности и упрощает настройку Hadoop обработать. Затем следуйте этот учебник для примера подсчета слов, который является стандартным эквивалентом общепринятого мира для обучения Map/Reduce

До этого простой способ понять карту/сокращение - это попробовать встроенные функции python map/reduce:

x = [1, 2, 3, 4]
y = map(lambda z: z*z, x]
print y
[1, 4, 9, 16]
q = reduce(lambda m,n : m+n, y)
print q
30

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

Ответ 3

Для тех, кто любит MOOC в качестве опции, Вступление к Hadoop и Mapreduce в Udacity, сделанное в сотрудничестве с Cloudera. Во время курса у вас есть возможность установить локальную локальную сеть Cloudera Hadoop Distribution и выполнить некоторые задания по карте/сокращению заданий на выборках. Hadoop Streaming используется для взаимодействия с кластером Hadoop, и программирование выполняется в Python.

Ответ 4

Почему бы не начать с оригинальной работы в Google? Поскольку это - то, где каждый другой начал. Для parallelism существует множество различных вариантов выбора здесь

Ответ 5

http://blog.doughellmann.com/2009/04/implementing-mapreduce-with.html

Решение Doug не подходит для производства в масштабе Google, так как это всего лишь тонкая оболочка для многопроцессорного пула Python (он использует только одну машину, хотя на ней может использоваться множество ядер). Но этого достаточно, чтобы вы начали, и легко понять, что он делает.

Я хочу распараллелить нейронную сеть

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

Проблемы с ML часто очень легко распараллеливаются - вы запускаете другую нейронную сеть на каждом node. Градиент приличный может быть немного сложным, так как градиент приличный очень линейный, но вы можете использовать какой-то другой метод оптимизации (попробуйте несколько разных размеров шага и выберите, что когда-либо лучше).

Ответ 6

Ну, я работаю над этим 4 дня подряд и, наконец, думаю, что вступил в него. Пожалуйста, проверьте этот репо. Я думаю, что это поможет.