2013-08-29 9 views
1

Несколько вопросов относительно подхода к работе HDInsight.Запуск рабочих мест HDInsight Howto

1) Как запланировать работу HDInsight? Есть ли готовое решение для этого? Например, если моя система будет постоянно получать большое количество новых входных файлов, собранных, которые нам нужны для выполнения работы по карте/уменьшению работы, каков рекомендуемый способ реализации текущей обработки?

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

3) Есть ли способ гарантировать, что одни и те же файлы не обрабатываются более одного раза? Как вы решаете эту проблему?

4) Возможно, я ошибаюсь, но похоже, что для каждого задания hdinsight требуется новая папка для хранения данных для хранения результатов редуктора. Какова наилучшая практика для слияния этих результатов, чтобы отчетность всегда работала во всем наборе данных?

ответ

2

Хорошо, там много вопросов! Вот, надеюсь, несколько быстрых ответов.

  1. Существует на самом деле не способ представления планирования работы в HDInsight, хотя, конечно, вы можете запланировать программу для запуска представления о работе для вас. В зависимости от вашего рабочего процесса, возможно, стоит взглянуть на Оози, который может быть немного неудобным, чтобы идти на HDInsight, но должен помочь.

  2. Что касается цены, я бы рекомендовал, чтобы, если вы не используете кластер, вы должны уничтожить его и вернуть его снова, когда вам это нужно (эти расчетные часы действительно могут складываться!). Обратите внимание, что это потеряет все, что у вас есть в HDFS, что должно быть главным образом промежуточными результатами, любые выходные данные или входные данные, хранящиеся в хранилище asv, будут сохраняться и учетная запись Azure Storage. Вы можете, конечно, автоматизировать это с помощью инструментов CLI или интерфейса остального, используемого инструментами CLI. (см. мой ответ на Hadoop on Azure Create New Cluster, первый - устаревший).

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

  4. Если у вас есть выходы из ваших начальных процессов, если вы хотите уменьшить их до одного вывода для сообщения о лучшем случае, это, вероятно, вторичное задание MapReduce с выводом в качестве его входов.

    Если вы не заботитесь о отдельных промежуточных заданиях, вы можете просто связать их непосредственно в одном задании MapReduce (которое может содержать как можно больше карт и уменьшить количество шагов по мере надобности) через цепочку цепочки работ, см. Chaining multiple MapReduce jobs in Hadoop для Java пример. К сожалению, .NET api в настоящее время не поддерживает эту форму цепочки заданий.

    Однако вы можете просто использовать класс ReducerCombinerBase, если ваш случай позволяет использовать подход Reducer-> Combiner.

Смежные вопросы