目录(Spark)
本质(是什么)(我在试着讲明白)
基于内存的计算框架
作用(干什么)(我在试着讲明白)
Spark是MapReduce的替代方案,而且兼容HDFS、Hive,可融入Hadoop的生态系统,以弥补MapReduce的不足(spark是微批处理)。
架构(有什么)(我在试着讲明白)
- SparkCore:将分布式数据抽象为弹性分布式数据集(RDD),实现了应用调度、RPC、序列化和压缩。并为运行在其上的上层组件提供API
- SparkSQL:是spark来操作结构化数据的程序包,通过SQL语句的方式来查询数据,并支持多种数据源(Hive表、parquest以及json等内容)
- sparkStreaming:是Spark提供的实时数据进行流式计算的组件
- MLlib:提供常用的机器学习算法的实现库
- GraphX:提供一个分布式图计算框架,能高效进行图计算
- BinkDB:用于在海量数据上进行交互SQL的近似查询引擎
- Tachyon:以内存为中心高容错的分布式文件系统
优缺点(我在试着讲明白)
优点
- 高效性(运行速度快,实现批量和流式数据的高性能)
- 易用性(支持Java、Python、Scala)
- 通用性(提供了统一的解决方案:可以用于批处理、交互式查询、实时流处理、机器学习、图计算)
- 兼容性(融合其他开源产品:可以运行在Mesos<类似yarn>、Yarn、自己给自己分配资源、接收Kubernetes的资源调度)
缺点
流程(怎么运作)(我在试着讲明白)
1、spark的运行模式
- local:多用于本地测试,一般在eclipse、idea中运行local模式
- standalone:Spark自带的资源调度框架,支持分布式搭建
- yarn:Hadoop生态圈中资源调度框架,spark可以在上面运行
- Mesos:Apache下的开源分布式资源管理框架
常用(必会)(我在试着讲明白)
常见问题(必知)(我在试着讲明白)
1、Spark与MR的区别?
- spark基于内存迭代计算,MR基于磁盘迭代计算
- spark中有DAG有向无环图
- MR中之后map和reduce,相当于spark中两个算子<map、reduceByKey>,spark中有各种算子应对同的场景
2、sparkCore、spark sql、spark streaming的区别
- sparkCore是spark的基础; 底层最小数据单位是:RDD; 应用在一些离线、非格式化数据上。
- sparkSql 的底层数据处理单位是:DataDFrame(新版本为DataSet); 应用在一些离线、格式化数据,可以认为是Hive在spark的实现,用来存储历史数据,做OLAP、日志分析、数据挖掘、机器学习。
- SparkStreaming 底层数据处理单位是DStream; 应用在处理流式数据,并可以根据数据结构不同,与spark Core(非结构化)、spark Sql(结构化)结合来处理数据
- 联系:spark sql 是构建在 spark core 之上(是spark core封装而来),
异议
有差错或者需要补充的地方,还望大家评论指出,并详细论证,相互学习,共同进步哈!