奎克的藏经阁 · 原书印刷页

人工智能与大数据技术导论 · 第 81 页

PDF 物理页索引 97 · 第3章

书名
人工智能与大数据技术导论
作者
未记录
印刷页
81
PDF 物理页
97(从 0 开始)
章节
第3章
UUID
cd4f7678-cd9b-4971-bde0-e9ad46a6cc71
来源类型
original_book
页面 SHA-256
8bc460bcbfec2f02f6ab04150e559a9d2278aa4a7530d06017321d61ba33a9be

Hadoop使用数据复制来实现容错性(I/O高),而Spark使用RDD(ResilientDistributedDatasets,弹性分布式数据集)数据存储模型来实现数据的容错性。RDD是只读的、分区记录的集合。如果一个RDD的一个分区丢失,RDD含有如何重建这个分区的相关信息。这就避免了使用数据复制来保证容错性的要求,从而减少了对磁盘的访问。通过RDD,后续步骤如果需要相同数据集,就不必重新计算或从磁盘加载,这个特性使得Spark非常适合流水线式的数据处理。

虽然 Spark 可以独立于Hadoop运行,但是Spark 还是需要一个集群管理器和一个分布式存储系统。对于集群管理,Spark 支持 Hadoop YARN、ApacheMesos和 Spark原生集群。对于分布式存储,Spark 可以使用 HDFS、Cassandra、OpenStack Swift 和 Amazon S3。Spark 支持 Java、Python 和 Scala(Scala是 Spark 最推荐的编程语言,Spark 和 Scala 能够紧密集成,Scala程序可以在Spark控制台上执行)。应该说,Spark紧密集成Hadoop生态系统中的上述工具。Spark可以与Hadoop上的常用数据格式(如Avro和Parquet)进行交互,能读写HBase等NoSQL数据库,它的流处理组件 Spark Streaming能连续从Flume和Kafka之类的系统上读取数据,它的 SQL 库 Spark SQL 能和 Hive Metastore 交互。

Spark可用来构建大型的、低延迟的数据分析应用程序。如图3-10所示,Spark包含的库有:Spark SQL、Spark Streaming、MLlib(用于机器学习)和GraphX。其中,Spark SQL和Spark Streaming最受欢迎,大概60%的用户在使用这两个库中的一个。而且Spark 还能替代MapReduce成为Hive的底层执行引擎。

Spark的内存缓存使它适合进行迭代计算。机器学习算法需要多次遍历训练集,可以将训练集缓存在内存里。在对数据集进行探索时,数据科学家可以在运行查询的时候将数据集放在内存中,这样就节省了访问磁盘的开销。

虽然Spark目前被广泛认为是下一代Hadoop,但是Spark本身的复杂性也困扰着开发人员。Spark的批处理能力仍然比不过MapReduce,与Spark SQL和Hive的 SQL 功能相比还有一定的差距,Spark的统计功能与R语言相比还没有可比性。

第3章 数据

81