Apache Spark x Mapreduce para aprendizado de máquina https://www.linkedin.com/today/post/article/20140517214651-1937667-apache-spark-vs-mapreduce-for-machine-learning
Recentemente, comecei a usar o Apache Spark para construir um pipeline de aprendizado de máquina e devo dizer que é muito bom trabalhar com ele. Os sistemas de recomendação de grande escala que desenvolvi no passado para o Youtube e Google Play foram desenvolvidos com base na estrutura Mapreduce do Google. Mapreduce é ótimo para muito processamento de dados em grande escala, mas tem algumas desvantagens, como não ser muito bom para trabalhos iterativos como aprendizado de máquina. A maioria dos algoritmos de aprendizado de máquina tem uma fase que é paralela de dados, como calcular o gradiente em um grande conjunto de dados, seguido por uma etapa onde os gradientes são somados em uma única máquina e, em seguida, transmitidos aos trabalhadores para mais computação de gradiente. Na maioria das implementações do Mapreduce, essa etapa é lenta, pois o modelo é gravado no disco e os trabalhadores recarregam os dados de treinamento para cada iteração.
O modelo de processamento de dados do Spark, por outro lado, permite que os usuários carreguem os dados uma vez e os armazenem em cache na RAM. A primeira iteração é muito parecida com Mapreduce – os dados de treinamento são carregados pela rede para as máquinas de trabalho, os gradientes são calculados e somados em uma única máquina, o redutor. Depois dessa etapa, é aqui que o Spark difere do mapreduce – o modelo atualizado é enviado de volta aos workers via rede (ao invés de salvar no disco) e os dados de treinamento já estão carregados nos workers, acelerando tremendamente as iterações subsequentes!
Eu realmente gosto da estrutura de processamento de dados do Spark. A tecnologia no mundo do código aberto certamente mudou muito desde que respondi à pergunta “A infraestrutura do Google está obsoleta” no Quora!