每年,市场上都会出现种种不同的数据管理规模、类型与速度表现的分布式系统。在这些系统中,Hadoop和Spark是获得最大关注的两个。然而该怎么判断哪一款适合你?
如果想批处理流量数据,并将其导入HDFS或使用Spark Streaming是否合理?如果想要进行机器学习和预测建模,Mahout或MLLib会更好地满足你的需求吗?
为了增加混淆,Spark和Hadoop经常与位于HDFS,Hadoop文件系统中的Spark处理数据一起工作。但是,它们都是独立个体,每一个体都有自己的优点和缺点以及特定的商业案例。
本文将从以下几个角度对Spark和Hadoop进行对比:架构,性能,成本,安全性和机器学习。
什么是Hadoop?
Hadoop在2006年开始成为雅虎项目,随后成为顶级的Apache开源项目。它是一种通用的分布式处理形式,具有多个组件:
- HDFS(分布式文件系统),它将文件以Hadoop本机格式存储,并在集群中并行化;
- YARN,协调应用程序运行时的调度程序;
- MapReduce,实际并行处理数据的算法。
Hadoop使用Java搭建,可通过多种编程语言访问,用于通过Thrift客户端编写MapReduce代码(包括Python)。
除了这些基本组件外,Hadoop还包括:
- Sqoop,它将关系数据移入HDFS;
- Hive,一种类似SQL的接口,允许用户在HDFS上运行查询;
- Mahout,机器学习。
除了将HDFS用于文件存储之外,Hadoop现在还可以配置为使用S3存储桶或Azure blob作为输入。
它可以通过Apa