Чем Apache Apex отличается от Apache Storm?

Apache Apex похож на Apache Storm.

  • Пользователи создают приложение / топологию как направленный ациклический граф (DAG) на обеих платформах. Apex использует операторы / потоки, а Storm использует носики / потоки / болты.
  • Они оба обрабатывают данные в режиме реального времени, в отличие от пакетной обработки.
  • Оба имеют высокую пропускную способность и низкую задержку

Итак, на первый взгляд, оба выглядят одинаково, и я не совсем понимаю разницу. Может кто-нибудь объяснить, в чем основные различия? Другими словами, когда я должен использовать один вместо другого?

2 ответа

Решение

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

На самом базовом уровне,

  1. Apache Storm использует подтверждение записи, чтобы гарантировать доставку сообщения.
  2. Apache Apex использует контрольные точки для гарантии доставки сообщений.

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

https://databaseline.wordpress.com/2016/03/12/an-overview-of-apache-streaming-technologies/

Архитектура и особенности

+-------------------+---------------------------+---------------------+
|                   |           Storm           |         Apex        |
+-------------------+---------------------------+---------------------+
| Model             | Native Streaming          | Native Streaming    |
|                   | Micro batch (Trident      |                     |
+-------------------+---------------------------+---------------------+
| Language          | Java.                     | Java (Scala)        |
|                   | Ability to use non        |                     |
|                   | JVM languages support     |                     |
+-------------------+---------------------------+---------------------+
| API               | Compositional             | Compositional (DAG) |
|                   | Declarative (Trident)     | Declarative         |
|                   | Limited SQL               |                     |
|                   | support (Trident)         |                     |
+-------------------+---------------------------+---------------------+
| Locality          | Data Locality             | Advance Processing  |
+-------------------+---------------------------+---------------------+
| Latency           | Low                       | Very Low            |
|                   | High (Trident)            |                     |
+-------------------+---------------------------+---------------------+
| Throughput        | Limited in Ack mode       | Very high           |
+-------------------+---------------------------+---------------------+
| Scalibility       | Limited due to Ack        | Horizontal          |
+-------------------+---------------------------+---------------------+
| Partitioning      | Standard                  | Advance             |
|                   | Set parallelism at work,  | Parallel pipes,     |
|                   | executor and task level   | unifiers            |
+-------------------+---------------------------+---------------------+
| Connector Library | Limited (certification)   | Rich library of     |
|                   |                           | connectors in       |
|                   |                           | Apex Malhar         |
+-------------------+---------------------------+---------------------+

работоспособность

+------------+--------------------------+---------------------+
|            |           Storm          |         Apex        |
+------------+--------------------------+---------------------+
| State      | External store           | Checkpointing       |
| Management | Limited checkpointing    | Local checkpointing |
|            | Difficult to exploit     |                     |
|            | local state              |                     |
+------------+--------------------------+---------------------+
| Recovery   | Cumbersome API to        | Incremental         |
|            | store and retrieve state | (buffer server)     |
|            | Require user code        |                     |
+------------+--------------------------+---------------------+
| Processing | At least once            |                     |
| Semantic   | Exactly once require     | At least once       |
|            | user code and affect     | End to end          |
|            | latency                  |                     |
|            |                          | exactly once        |
+------------+--------------------------+---------------------+
| Back       | Watermark on queue       | Automatic           |
| Pressure   | size for spout and bolt  | Buffer server       |
|            | Does not scale           | memory and disk     |
+------------+--------------------------+---------------------+
| Elasticity | Through CLI only         | Yes w/ full user    |
|            |                          | control             |
+------------+--------------------------+---------------------+
| Dynamic    | No                       | Yes                 |
| topology   |                          |                     |
+------------+--------------------------+---------------------+
| Security   | Kerberos                 | Kerberos, RBAC,     |
|            |                          | LDAP                |
+------------+--------------------------+---------------------+
| Multi      | Mesos, RAS - memory,     | YARN                |
| Tenancy    | CPU, YARN                | full isolation      |
+------------+--------------------------+---------------------+
| DevOps     | REST API                 | REST API            |
| Tools      | Basic UI                 | DataTorrent RTS     |
+------------+--------------------------+---------------------+

Источник: вебинар: Apache Apex (Next Gen Hadoop) против Storm - Сравнение и обзор миграции https://www.youtube.com/watch?v=sPjyo2HfD_I

Другие вопросы по тегам