Spark零基础实战 第12章 Spark简介

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/myvanguard/article/details/86664371

本章主要介绍Spark大数据计算框架、架构、计算模型和数据管理策略及Spark在工业界的应用。围绕Spark的BDAS项目及其子项目进行了简要介绍。

12.1Spark发展历史

相较于其他大数据平台或框架而言,Spark的代码库最为活跃
在这里插入图片描述

12.2Spark 在国内外的使用

在这里插入图片描述
整个数据分析栈构建在YARN之上,这是为了让Hadoop和Spark的任务共存。主要包含两个主要模块。
①离线处理模块:使用MapReduce和Spark+Shark混合架构。由于MapReduce适合进行ET1处理,还保留Hadoop进行数据清洗和转换。数据在ETL之后加载进HDFS/HCat/Hive 数据仓库存储,之后可以通过Spark、Shark进行OLAP数据分析。
②实时处理模块:使用Spark Streaming+Spark+Shark架构进行处理。实时流数据源源不断经过Spark Steaming初步处理和分析之后,将数据追加进关系数据库或者NoSQL数据库。之后,结合历史数据,使用Spark进行实时数据分析。

12.3 Spark生态系统简介

Hadoop将Spark作为自己生态圈的一部分,但Spark完全可以脱离Hadoop平台,不单依赖于HDFS、Yarn,例如它可以使用Standalone、Mesos进行集群资源管理

在这里插入图片描述

12.3.1Hadoop生态系统

作为目前主流的大数据解决方案的重要组成部分,Hadoop的生态系统是不得不说的一个部分
在这里插入图片描述
(1)Hadoop Apache的Hadoop项目已几乎与大数据划上了等号。它不断壮大起来,已成为一个完的生态系统,众多开源工具面向高度扩展的分布式计算。

(2)Ambari作为Hadoop生态系统的一部分,这个Apache项目提供了基于Web的直观界面,可用于配置、管理和监控Hadoop集群。

(3)Avro这个Apache项目提供了数据序列化系统,拥有丰富的数据结构和紧凑格式。模式用JSON来定义,它很容易与动态语言整合起来。

(4)Cascading Cascading是一款基于Hadoop的应用程序开发平台。提供商业支持和培训服务。

(5)Chukwa Chukwa基于Hadoop,可以收集来自大型分布式系统的数据,用于监控。它还含有用于分析和显示数据的工具。

(6)Flume Flume可以从其他应用程序收集日志数据,然后将这些数据送入到Hadoop。

扫描二维码关注公众号,回复: 5088307 查看本文章

(7)HBase HBase是为有数十亿行和数百万列的超大表设计的,这是一种分布式数据库,可以对大数据进行随机性地实时读取/写入访问。

(8)Hadoop分布式文件系统(HDFS)
HDFS是面向Hadoop的文件系统,不过它也可以用作一种独立的分布式文件系统。它基于Java,具有容错性、高度扩展性和高度配置性。

(9)Hive Apache Hive是面向Hadoop生态系统的数据仓库。它让用户可以使用HiveQL查询和管理大数据,这是一种类似SQL的语言。

(10)Hivemall Hivemall结合了面向Hive的多种机器学习算法。它包括诸多高度扩展性算法,可用于数据分类、递归、推荐、k最近邻、异常检测和特征。

(11)Mahout项目的目的是“为迅速构建可扩展、高性能的机器学习应用程序打造一个环境。”它包括用于在Hadoop MapReduce上进行数据挖掘的众多算法,还包括一些面向Scala和Spark环境的新颖算法。

(12)MapReduce作为Hadoop(图12-16)一个不可或缺的部分。MapReduce这种编程模型为处理大型分布式数据集提供了一种方法。

(13)Oozie这种工作流程调度工具是为了管理Hadoop任务而专门设计的。它能够按照时间或按照数据可用情况触发任务,并与MapReduce、Pig、Hive、Sqoop及其他许多相关工具整合起来。

(14)Pig Apache Pig是一种面向分布式大数据分析的平台。它依赖一种名为Pig latin的编程语言,拥有简化的并行编程、优化和可扩展性等优点。

(15)Sqoop企业经常需要在关系数据库与Hadoop之间传输数据,而Sqoop就是能完成这项任务的一款工具。它可以将数据导入到Hive或HBase,并从Hadoop导出到关系数据库管理系统(RDBMS)。

(16)Tez Tez建立在Apache Hadoop YARN的基础上,这是“一种应用程序框架,允许为任务构建一种复杂的有向无环图,以便处理数据。”

(17)Zookeeper这种大数据管理工具自称是“一项集中式服务,可用于维护配置信息、命名、提供分布式同步以及提供群组服务。”它让Hadoop集群里面的节点可以彼此协调。

12.3.2BDAS生态系统

伯克利将Spark的整个生态系统称为伯克利数据分析栈(BDAS)。其核心框架是Spark,同时BDAS涵盖支持结构化数据SQl查询与分析的查询引擎Spark SQl,和Shark,提供机器学习功能的系统Mlbase及底层的分布式机器学习库MLlib、并行图计算框架GraphX、流计算框架Spark Streaming、采样近似计算查询引擎BlinkDB、内存分布式文件系统Tachyon、资源管理框架Mesos等子项目。
在这里插入图片描述(1)Spark Spark是整个BDAS的核心组件,是一个大数据分布式编程框架,不仅实现了MapRe-
duce的算子map函数和reduce函数及计算模型,还提供更为丰富的算子,如filter、join、groupByKey等。Spark将分布式数据抽象为弹性分布式数据集(RDD),实现了应用任务调度、RPC、序列化和压缩,并为运行在其上的上层组件提供API。
在这里插入图片描述
(2)Shark Shark是构建在Spark和Hive基础之上的数据仓库。目前,Shark已经完成学术使命,终止开发,但其架构和原理仍具有借鉴意义。它提供了能够查询Hive中所存储数据的一套SQl.接口,兼容现有的HiveQl语法。
Shark底层复用Hive的解析器、优化器以及元数据存储和序列化接口。Shark会将Hive Ql.编译转化为一组Spark任务,进行分布式运算。
(3)Spark SQL和DataFrame
DataFrame是一个分布式数据集,在概念上类似于传统数据库的表结构,数据被组织成命名的列,DataFrame的数据源可以是结构化的数据文件,也可以是Hive中的表或外部数据库,也还可以是现有的RDD。DataFrame让Spark具备了处理大规模结构化数据的能力,在比原有的RDD转化方式易用的前提下,计算性能更还快了两倍。这一个小小的API,隐含着Spark希望大一统r大数据江湖,的野心和决心。DataFrame像是一条联结所有主流数据源并自动转化为可并行处理格式的水渠
在这里插入图片描述
(4)Spark SQL
Spark SQL提供在大数据上的SQL查询功能,Spark SQL使用Catalyst做查询解析和优化器,并在底层使用Spark作为执行引擎实现SQl的()perator。用户可以在Spark上直接书写SQL.相当于为Spark扩充了一套SQl算子,这无疑更加丰富了Spark的算子和功能

(4)Spark Streaming Spark Streaming用于进行实时流数据的处理,它具有高扩展、高吞吐率及容错机制,其操作依赖于discretized stream(DStream),Dstream可以看作是多个有序的RDD组成,因此它也只通过map,reduce,join window等操作便可完成实时数据处理
(5)GraphX Spark GraphX是一个分布式图处理框架,Spark(GraphX基于Spark平台提供对图计算和图挖掘的简洁易用而丰富多彩的接口,极大地方便了大家对分布式图处理的需求。

(6)SparkML Spark集成了Ml.l.ib库,其分布式数据结构也是基于RDD的,与其它组件能够互通,极大地降低了机器学习的门槛。特别是分布式环境下的机器学习。目前SparkMllib支持下列几种机器学习算法。

①Classification(分类)与regression(回归)。
②clustering(聚类)。聚类分析是一种探索性的分析
③collaborative filtering(协同过滤)。
④dimensionality reduction(特征降维)。

(7)SparkR SparkR是一个R语言包,它提供了轻量级的方式使得可以在R语言中使用Apache Spark。

(8)Tachyon Tachyon是一个分布式内存文件系统,可以理解为内存中的HDFS。为了提供更高的性能,将数据存储剥离Java Heap。用户可以基于Tachyon实现RDD或者文件的跨应用共享,并提供高容错机制,保证数据的可靠性。
(9)Mesos Mesos是一个资源管理框架,提供类似于YARN的功能。用户可以在其中插件式地运行Spark、MapReduce、Tez等计算框架的任务。Mesos会对资源和任务进行隔离,并实现高效的资源任务调度。
(10)BlinkDB BlinkDB是一个用于在海量数据上进行交互式SQl的近似查询引擎。它允许用户通过在查询准确性和查询响应时间之间做出权衡,完成近似查询。

12.3.3其他

(1)Astro华为开源的Spark SQL on HBase package。Spark SQl.on HBase package项目又名As-
tro,端到端整合了Spark,Spark SQL和HBase的能力
(2)Apache Zeppelin开有源的基于Spark的Web交互式数据分析平台,目前Zeppelin还只是孵化项目,它具如下特点:
①自动流入SparkContext and SQlContext;
②运行时加载jar包依赖;
③停止job或动态显示job进度。

猜你喜欢

转载自blog.csdn.net/myvanguard/article/details/86664371