Я оцениваю Apache Spark, чтобы увидеть, хорошая ли платформа для следующих требований:
- Облачная вычислительная среда.
- Товарное оборудование.
- Распределенная БД (например, HBase) с возможно несколькими петабайтами данных.
- Множество одновременных небольших вычислений, которые необходимо быстро завершить (в течение нескольких секунд). Маленькие средства - 1-100 МБ данных.
- Несколько больших вычислений, которые не нужно быстро выполнять (часы в порядке). Большие средства - 10-1000 ГБ данных.
- Очень редко, очень большие вычисления, которые не нужно быстро заканчивать (дни в порядке). Очень большой означает 10-100 ТБ данных.
- Все вычисления взаимно независимы.
- В реальном времени поток данных поступает для некоторых вычислений.
- Участие в машинах.
Прочитав немного о Spark, я вижу следующие преимущества:
- Хорошо работает на товарном оборудовании и с HBase/Cassandra.
- MLlib для машинного обучения.
- Spark Streaming для данных в реальном времени.
- В то время как MapReduce не кажется абсолютно необходимым, возможно, это может ускорить процесс и позволит нам адаптироваться, если в будущем требования станут более жесткими.
Это основные вопросы. У меня все еще есть:
- Можно ли сделать небольшие вычисления очень быстро?
- Будет ли он балансировать нагрузку на большое количество одновременных небольших вычислений?
Я также задаюсь вопросом, не пытаюсь ли я вообще использовать Spark для цели, для которой он не предназначен, а не для использования основных преимуществ: MapReduce и RDD в памяти. Если это так, я также приветствую предложение об альтернативе. Большое спасибо!