Почти всегда предпочтительнее иметь меньшие, более простые задания MR и связывать их вместе, чем иметь большие, сложные задания. Я думаю, что ваш лучший вариант - пойти с чем-то вроде # 1. Другими словами:
- Обрабатывает протокол Apache httpd в едином формате.
- Обработка Tomcat регистрируется в едином формате.
- Соедините выходные данные 1 и 2, используя любую логическую логику, записав результат в один и тот же формат.
- Экспорт полученного набора данных в вашу базу данных.
Вероятно, вы можете выполнить объединение и преобразование (1 и 2) в одном шаге. Используйте карту, чтобы преобразовать и выполнить соединение со стороны сокращения.
Не похоже, что вам нужны / нужны издержки произвольного доступа, поэтому я бы не стал смотреть на HBase. Это не является его сильной стороной (хотя вы можете сделать это в смысле произвольного доступа, просматривая каждую запись в HBase по отметке времени, проверяя, существует ли она, объединяя запись или просто вставляя, если она не существует, но очень медленно, сравнительно). В Hive может быть удобно хранить «объединенные» результаты двух форматов, но вам все равно придется преобразовывать записи в этот формат.
Вы абсолютно не хотите, чтобы редуктор записывал напрямую в MySQL. Это эффективно создает DDOS-атаку на базу данных. Рассмотрим кластер из 10 узлов, каждый из которых выполняет 5 редукторов, и у вас будет 50 одновременных программ записи в одну таблицу. По мере роста кластера вы очень быстро превысите максимальное число подключений и задушите СУБД.
Все это говорит, спросите себя, имеет ли смысл помещать столько данных в базу данных, если вы рассматриваете полные записи журнала. Этот объем данных является как раз тем случаем, для которого Hadoop предназначен для долгосрочного хранения и обработки. Если вы вычисляете агрегаты этих данных, непременно добавьте их в MySQL.
Надеюсь, это поможет.