Кто-нибудь находит каскадную карту Hadoop уменьшить полезную?

StackOverflow https://stackoverflow.com/questions/3681494

  •  02-10-2019
  •  | 
  •  

Вопрос

Я пытался каскадировать, но я не могу видеть никаких преимуществ над классической картой, снижая подход для письма.

Карта Уменьшает работу, дает мне больше свободы и каскадирования, кажется, вкладывает много препятствий.

Может сделать хорошую работу для простых вещей простых, но сложных вещей .. Я нахожу их чрезвычайно сложными

Есть ли что-то, чего мне не хватает. Есть ли очевидное преимущество каскада над классическим подходом?

В каком сценарию я должен выбрать каскад по сравнению с классическим подходом? Любой, кто использует это и счастлив?

Это было полезно?

Решение

Я сейчас использовал каскад на пару лет. Я считаю, что это чрезвычайно полезно. В конечном итоге, это о повышении производительности. Я могу быть гораздо более эффективным в создании и обслуживании рабочих мест M / R по сравнению с простым кодом Java. Вот несколько причин, почему:

  • Множество кода котельной, используемое для запуска работы, уже написано для вас.
  • Композитивность. Обычно код легче читать и проще повторно использовать, когда он написан как компоненты (операции), которые сшиты вместе, чтобы выполнить более сложную обработку.
  • Я нахожу тестирование подразделения, чтобы быть проще. В каскадном пакете есть примеры, демонстрирующие, как писать простые модульные тесты для непосредственного тестирования вывода потоков.
  • Парадигма TAP (источника и раковины) позволяет легко изменить вход и выделять задания, чтобы вы могли, например, начать с вывода на stdout для разработки и отладки, а затем переключаться на SeceenceFiles-файлы HDFS для пакетных заданий, а затем переключиться на Tap HBase Tap для обновлений псевдо-реального времени.
  • Еще одним большим преимуществом написания каскадных заданий является то, что вы действительно пишете больше фабрики, которая создает рабочие места. Это может быть огромное преимущество, когда вам нужно создать что-то динамично (т. Е. Результаты одного контроля задания, какие последующие задания, которые вы создаете и запускаете). Или в другом случае мне нужно было создать работу для каждой комбинации из 6 двоичных переменных. Это 64 рабочих мест, которые все очень похожи. Это будет хлопот с просто картой Hadoop уменьшить классы.

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

Другие советы

Имея в виду, что я автор каскадирования ...

Мое предложение состоит в том, чтобы использовать свинью или улей, если они имеют смысл для вашей проблемы, особенно свинья.

Но если вы находитесь в бизнесе данных, и не просто выбоваете свои данные для Insights, вы найдете каскадную подход для большинства проблем, чем намного больше смысла.

Ваше первое препятствие с сырой картой будет думать в Maprectuce. Тривиальные проблемы просты в Maprectuce, но гораздо проще разрабатывать сложные приложения, если вы можете работать с моделью, которая легче отображать на ваш проблемный домен (отфильтровать это, разбирать, сортировать их, присоединиться к остальным и т. Д.).

Далее вы поймете, что нормальная единица работы в Hadoop состоит из нескольких заданий MapReduce. Общедоступные работы вместе - это разрешимая проблема, но она не должна утечка в ваш код уровня домена приложения, оно должно быть скрыто и прозрачно.

Кроме того, вы найдете рефакторинг и создаете RE-USTABLE CODE намного сложнее, если вы должны постоянно перемещать функции между материалами и редукторами. или от Mappers до предыдущего редуктора, чтобы получить оптимизацию. Что приводит к проблеме хрупкость.

Каскадинг верит в неудачу скорее, насколько это возможно. Планировщик пытается разрешить и удовлетворить зависимости между всеми этими именами поля до того, как кластер Hadoop даже занимается работой. Это означает, что 90% + из всех проблем будут найдены до часов ожидания для вашей работы, чтобы найти его во время выполнения.

Вы можете смягчить это в RAW Code Maprectuce, создавая объекты домена, как человек или документ, но многие приложения не нуждаются в потоке полей вниз. Подумайте, если вам нужен средний возраст всех самцов. Вы не хотите платить пенальти IO пропустить целого человека по сети, когда все, что вам нужно, это двоичный пол и числовой возраст.

С Fail Fast Semantics и ленивым связующимся раковинами и источниками становится очень легко создавать каркасы на каскаде, что сами создают каскадные потоки (которые становятся множеством рабочих мест Hadoop Mapreatuce). Проект, в настоящее время которого в настоящее время связан с 100-х годов Mapreatuce Windows на прогон, многие созданные на Fly Mid Run на основе обратной связи от обработанных данных. Ищи Каскалог Чтобы увидеть пример структуры на основе Clojure для простого создания сложных процессов. Или Bixo Для веб-добычи инструментария и структуры, которые гораздо легче настроить, чем Щетка.

Наконец, Hadoop никогда не используется в одиночку, что означает, что ваши данные всегда тянутся от некоторых внешних источников и нажаты на другой после обработки. Грязная тайна о Hadoop заключается в том, что это очень эффективная структура ETL (поэтому его глупо слышать, чтобы поставщики ETL говорят об использовании своих инструментов для нажатия / тяги данных на / из Hadoop). Каскадинг несколько облегчает эту боль, позволяя вам написать ваши операции, приложения и модульные тесты, не зависящие от конечных точек интеграции. Каскадинг используется в производстве для загрузки систем, таких как Membase, Memcached, Aster Data, эластичный поиск, HBase, Hysictable, Cassandra и т. Д. (К сожалению, не все адаптеры были выпущены их авторами.)

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

Я использовал Cascading с BIXO, чтобы написать полный конвейер по классификации ссылок против спама для большой социальной сети.

Каскадный трубопровод привел в 27 г-н Джобс, что было бы очень трудно поддерживать напротив мистера. Раньше я написал MR раньше, но используя что-то вроде каскада, похоже на переключение с ассемблера в Java (insert_fav_language_here).

Одним из крупных достопримечательностей по поводу улья или свиньи IMHO является то, что каскадирование - это одна банка, которую вы связываете свою работу. Свинья и улья имеют больше зависимостей (например, MySQL) или не так легко встроить.

Отказ от ответственности: Пока я знаю, что Крис Венсель лично, я действительно думаю, что каскадинг пни с **. Учитывая его сложность, крайне впечатляет, что я не нашел ни одного жука, используя ее.

Я преподаю курс лагерна Hadoop Boot для масштаба без ограничений, а также широко использование каскада в Bixo и для строительства веб-добычи в Bixo Labs - так что я думаю, что я получил хорошую признательность за обе подходы.

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

Самая большая проблема с каскадным положением заключается в том, что это другой способ мышления о рабочих процессах обработки данных, и есть соответствующий концептуальный «горб», который вам нужно перейти, прежде чем все начнет иметь смысл. Кроме того, сообщения об ошибках могут напомнить один из выходов от LEX / YACC («Конфликт в Shift / ender») :)

- Кен

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

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

Каскадирование позволяет использовать простые имена полевых полей и кортежи вместо примитивных типов, предлагаемых Hadoop, который, «... как правило, на неверном уровне гранулярности для создания сложного, высококомнабного кода, который можно поделиться среди разных разработчиков» (Том Белый, Hadoop Окончательное руководство). Каскадинг был разработан для решения этих проблем. Имейте в виду, некоторые из приложений, таких как каскадные, улей, свинья и т. Д., Были разработаны параллельно и иногда делают то же самое. Если вам не нравится cascading или найти его смущение, может быть, вы бы лучше использовать что-то еще?

Я уверен, что у вас уже есть это, но вот руководство пользователя: http://www.cascading.org/1.1/userguide/pdf/userguide.pdf.. Отказ Он обеспечивает достойную прогулку по потоку данных в типичном каскадном приложении.

Я работал на каскаде на пару лет, а ниже полезные вещи в каскаде.

1. code testability
2. easy integration with other tools
3. easily extensibile
4. you will focus only on business logic not on keys and values
5. proven in production and used by even twitter.

Я рекомендую, чтобы люди использовали каскадную большую часть времени.

Каскадинг - это обертка вокруг Hadoop, которая обеспечивает краны и раковины и от Hadoop.

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

Вы также хотите посмотреть на каскадные краны и схемы (вот как вы вводите данные в вашу задание Cascading Racy).

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

Каскадинг - это больше, чем просто простая обертка вокруг Hadoop, я пытаюсь сохранить ответ простой. Например, я портировал огромную базу данных MySQL, содержащую терабайты данных для файлов журнала, используя Cascading JDBC Tap

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top