que - ¿Cuál es la diferencia entre Apache Mahout y Apache Spark''s MLlib?
spark mllib (2)
Considerando una base de datos de products
MySQL con 10 millones de productos para un sitio web de comercio electrónico.
Estoy tratando de configurar un módulo de clasificación para categorizar productos. Estoy usando Apache Sqoop para importar datos de MySQL a Hadoop.
Quería utilizar Mahout como un marco de Aprendizaje automático para utilizar uno de sus algoritmos de clasificación , y luego me encontré con Spark que está provisto con MLlib
- Entonces, ¿cuál es la diferencia entre los dos marcos?
- Principalmente, ¿cuáles son las ventajas, puntos bajos y limitaciones de cada uno?
La diferencia principal vendrá de los marcos subyacentes. En el caso de Mahout, es Hadoop MapReduce y en el caso de MLib es Spark. Para ser más específico, a partir de la diferencia en la sobrecarga por trabajo
Si su algoritmo ML se correlaciona con el único trabajo de MR, la diferencia principal será solo la sobrecarga de inicio, que es de docenas de segundos para Hadoop MR, y digamos 1 segundo para Spark. Entonces, en el caso del entrenamiento modelo, no es tan importante.
Las cosas serán diferentes si su algoritmo está asignado a muchos trabajos. En este caso, tendremos la misma diferencia en sobrecarga por iteración y puede ser un cambio de juego.
Supongamos que necesitamos 100 iteraciones, cada una necesita 5 segundos de CPU del clúster.
- En Spark: tomará 100 * 5 + 100 * 1 segundos = 600 segundos.
- En Hadoop: MR (Mahout) tomará 100 * 5 + 100 * 30 = 3500 segundos.
Al mismo tiempo, Hadoop MR es un framework mucho más maduro que Spark y, si tienes muchos datos, y la estabilidad es primordial, consideraría a Mahout como una alternativa seria.
Advertencia - edición importante:
MLlib es una colección suelta de algoritmos de alto nivel que se ejecuta en Spark. Esto es lo que Mahout solía ser solo Mahout de antes estaba en Hadoop Mapreduce. En 2014, Mahout anunció que ya no aceptaría el código de Hadoop Mapreduce y cambió por completo el nuevo desarrollo a Spark (con otros motores posiblemente a la vista, como H2O).
Lo más significativo de esto es un motor y entorno de álgebra lineal optimizado distribuido generalizado basado en Scala que incluye un shell Scala interactivo. Quizás la palabra más importante es "generalizada". Como se ejecuta en Spark, todo lo disponible en MLlib se puede usar con el motor de álgebra lineal de Mahout-Spark.
Si necesita un motor general que haga muchas herramientas como R, pero en datos realmente grandes, mire a Mahout. Si necesita un algoritmo específico, mire cada uno para ver lo que tienen. Por ejemplo, Kmeans se ejecuta en MLlib, pero si necesita agrupar A''A (una matriz de concurrencia utilizada en los recomendadores) los necesitará a ambos porque MLlib no tiene una matriz transpuesta o A''A (en realidad, Mahout hace un thin-optimized A''A entonces la transposición está optimizada).
Mahout también incluye algunos innovadores bloques de recomendación que ofrecen cosas que no se encuentran en ningún otro OSS.
Mahout todavía tiene sus antiguos algoritmos de Hadoop, pero a medida que los motores de cómputo rápidos como Spark se conviertan en la norma, la mayoría de la gente invertirá allí.