Помня, что я автор Cascading ...
Я предлагаю использовать Pig или Hive, если они имеют смысл для вашей проблемы, особенно Pig.
Но если выВы работаете с данными, а не просто изучаете свои данные для понимания, вы обнаружите, что каскадный подход имеет гораздо больше смысла для большинства проблем, чем необработанный MapReduce.
Ваше первое препятствие с необработанным MapReduce будет думать вУменьшение карты.Тривиальные проблемы просты в MapReduce, но гораздо проще разрабатывать сложные приложения, если вы можете работать с моделью, которая более легко сопоставляется с вашей проблемной областью (фильтруйте это, анализируйте, сортируйте, присоединяйте к остальным и т. Д.).
Далее вы поймете, что обычная единица работы в Hadoop состоит из нескольких заданий MapReduce.Объединение в цепочку заданий - это решаемая проблема, но она не должна просачиваться в код уровня вашего приложения, она должна быть скрытой и прозрачной.
Кроме того, вы обнаружите, что рефакторинг и создание кода многократного использования гораздо сложнее, если вам придетсяпостоянно перемещать функции между картографами и редукторами.или от картографов к предыдущему редуктору, чтобы получить оптимизацию.Что приводит к проблеме хрупкости.
Каскадирование верит в провал как можно быстрее.Планировщик пытается разрешить и удовлетворить зависимости между всеми этими именами полей еще до того, как кластер Hadoop начнет работать.Это означает, что 90% + всех проблем будут обнаружены до того, как вы дождетесь часов, чтобы ваша работа нашла ее во время выполнения.
Вы можете уменьшить это в необработанном коде MapReduce, создавая доменные объекты, такие как Person или Document, но многим приложениям не нужны все поля вниз по течению.Подумайте, нужен ли вам средний возраст всех мужчин.Вы не хотите платить штраф IO за передачу целого человека по сети, когда все, что вам нужно, это двоичный пол и числовой возраст.
При быстрой семантике сбоя и ленивом связывании приемников и источников это становится оченьЛегко создавать каркасы на Cascading, которые сами создают каскадные потоки (которые становятся многими заданиями Hadoop MapReduce).Проект, в котором я сейчас участвую, заканчивается сотнями заданий MapReduce за один запуск, многие из которых создаются на лету в середине выполнения на основе обратной связи с обрабатываемыми данными.Найдите Cascalog , чтобы увидеть пример среды на основе Clojure для простого создания сложных процессов.Или Bixo для набора инструментов и инфраструктуры веб-майнинга, который гораздо проще настроить, чем Nutch.
Наконец, Hadoop никогда не используется отдельно, что означает, что ваши данные всегда извлекаются из какого-либо внешнего источника и отправляются вдругой после обработки.Грязный секрет Hadoop в том, что это очень эффективная среда ETL (поэтому глупо слышать, как поставщики ETL говорят об использовании своих инструментов для передачи / извлечения данных в / из Hadoop).Каскадирование несколько облегчает эту проблему, позволяя вам писать свои операции, приложения и модульные тесты независимо от конечных точек интеграции.Каскадирование используется в производстве для загрузки таких систем, как Membase, Memcached, Aster Data, Elastic Search, HBase, Hypertable, Cassandra и т. Д. (К сожалению, не все адаптеры были выпущены их авторами.)
Если выПожалуйста, пришлите мне список проблем, которые вы испытываете с интерфейсом.Я постоянно ищу лучшие способы улучшить API и документацию, и сообщество пользователей всегда рядом, чтобы помочь.