系统架构--分布式计算系统spark学习(三)

通过搭建和运行example,我们初步认识了spark。

大概是这么一个流程

------------------------------                 ----------------------              ----------------------

| Application(spark shell) |   <=>       | Spark Master       |  <=>   |    Spark Slavers   |

------------------------------                 ----------------------              ----------------------

application 发送任务到master,master 接受任务,把上下文分解成一堆task list,把task下发给 Slavers去完成,

slavers完成之后,把结果上报给master,master汇总所有slavers的执行结果,返回给Application。

这里Application,可以是我们自己编写的进程(里面包含要进行分布式计算的数据位置,数据挖掘的算法等)。

 

但是我们可以看到官方的框架跟我们运行的几个进程好像对不上。

 

从图里面看到,spark跟mahout一样,更像是一个框架,提供核心功能,然后在核心基础上,又提供很多插件或者说库。

我们之前运行的standalone模式,由Standalone Scheduler来进行集群管理的,这个spark自带的, 看到它使跟Mesos,YARN放在一个层面的,YARN和Mesos怎么管理集群,不清楚,

但清楚的是,spark和它们兼容,可以运行在其之上。

Cluster Managers

Under the hood, Spark is designed to efficiently scale up from one to many thousands of compute nodes. To achieve this while maximizing flexibility, Spark can run over a variety of cluster managers, including Hadoop YARN, Apache Mesos, and a simple cluster manager included in Spark itself called the Standalone Scheduler. If you are just installing Spark on an empty set of machines, the Standalone Scheduler provides an easy way to get started; if you already have a Hadoop YARN or Mesos cluster, however, Spark’s support for these cluster managers allows your applications to also run on them. Chapter 7 explores the different options and how to choose the correct cluster manager.

 

Spark SQL、Spark Streaming、MLlib等,是在spark core基础上的插件,方便开发者使用sql、支持stream流式数据(疑问:这个跟storm处理是否一样?),机器学习等。

这里最关键的就是spark core了,实现了基本的函数、任务调度、内存管理、容灾等。其中RDDS提供大部分API来跟spark master和其他插件进行交互。

Spark Core
Spark Core contains the basic functionality of Spark, including components for task scheduling, memory management, fault recovery, interacting with storage systems, and more. Spark Core is also home to the API that defines resilient distributed datasets (RDDs), which are Spark’s main programming abstraction. RDDs represent a collection of items distributed across many compute nodes that can be manipulated in parallel. Spark Core provides many APIs for building and manipulating these collections.

 

参见:learning spark

 

回过头来,看看我们启动的几个进程:

 

//spark shell
root             3074   0.2  6.2  5099472 519196 s000  S+    5:29下午   0:21.81 /usr/bin/java -cp :/private/var/spark/conf:/private/var/spark/lib/spark-assembly-1.3.0-hadoop2.4.0.jar:/private/var/spark/lib/datanucleus-api-jdo-3.2.6.jar:/private/var/spark/lib/datanucleus-core-3.2.10.jar:/private/var/spark/lib/datanucleus-rdbms-3.2.9.jar -Dscala.usejavacp=true -Xms1g -Xmx1g org.apache.spark.deploy.SparkSubmit 
--class org.apache.spark.repl.Main spark-shell

 

//spark master and worker

root      6368  0.8 12.7 1378592 260736 pts/11 Sl   13:53   1:44 java -cp :/var/spark/sbin/../conf:/var/spark/lib/spark-assembly-1.3.0-hadoop2.4.0.jar -XX:MaxPermSize=128m -Dspark.akka.logLifecycleEvents=true -Xms512m -Xmx512m 
org.apache.spark.deploy.master.Master --ip qp-zhang --port 7077 --webui-port 8080 root 9327 0.9 11.3 1370228 232076 ? Sl 15:35 1:07 java -cp :/var/spark/sbin/../conf:/var/spark/lib/spark-assembly-1.3.0-hadoop2.4.0.jar -XX:MaxPermSize=128m -Dspark.akka.logLifecycleEvents=true -Xms512m -Xmx512m
org.apache.spark.deploy.worker.Worker spark://qp-zhang:7077

 

 

是由不同的class基于spark core 和其他组件实现的。
 
初步的架构,也就只能了解到这里,如果要深入,就要看代码实现了或者继续阅读相关资料了。
 
 
 
 

 

转载于:https://www.cnblogs.com/zhangqingping/p/4360546.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Hadoop是一个开源的分布式系统框架,用于处理大规模数据集。它基于MapReduce编程模型,可以将数据分成多个块进行并行处理,从而提高处理效率。 HBase是一个分布式的、面向列的NoSQL数据库,它基于Hadoop的HDFS存储系统,支持海量数据的存储和实时读写操作。HBase的数据模型类似于Google的Bigtable,可以支持非常大的数据表。 Hive是一个基于Hadoop的数据仓库工具,它提供了类似SQL的查询语言,可以将结构化数据映射到Hadoop的分布式文件系统上进行查询和分析。Hive的查询语言称为HQL,它可以将Hive查询转换为MapReduce任务进行执行。 Spark是一个快速、通用的分布式计算引擎,它支持内存计算和迭代计算,可以在Hadoop集群上运行。Spark提供了丰富的API,包括Spark SQL、Spark Streaming、MLlib和GraphX等,可以支持多种数据处理和分析任务。 ### 回答2: Hadoop、HBase、Hive和Spark都是分布式系统,根据大数据处理的需求而设计的,目的是使数据处理更快、更准确、更可靠。这四个分布式系统组件各自具有不同的特点和优势,它们之间的协作和衔接能够提高大数据的处理效率和整体性能。 Hadoop是一个分布式文件系统,通过将数据存储在群集中的多台计算机中,以实现分布式存储和处理。Hadoop主要有两个功能,一个是分布式存储和处理大数据集,另一个是实现分布式计算和数据处理。Hadoop作为一个基础架构,为其他的分布式系统(如HBase和Hive)提供底层的数据存储和处理能力。 HBase是一个高可靠性、高可扩展性、面向列的NoSQL数据库,它是为大量非结构化数据而设计的,它的数据存储可以达到PB级别。HBase不同于传统数据库,它采用分布式存储的方式,数据被分布式地存储在Hadoop文件系统的节点上,以保证存储和查询的高效性和可靠性。HBase使用了类似Google的Bigtable的架构模式,并且是强一致性的分布式数据库。 Hive是一个建立在Hadoop之上的数据仓库系统,它提供了与SQL类似的语义,可以将Hadoop作为其数据存储和查询的底层引擎。Hive允许用户使用SQL语句查询Hadoop中的数据,它提供了类似于关系型数据库的数据表概念,并提供了用户定义函数、视图和索引等功能。通过Hive,业务人员就可以使用SQL查询数据,而不需要掌握MapReduce等编程技术。 Spark是一个基于内存的分布式计算系统,它主要用于大型数据的处理和分析,更重要的,它实现了比MapReduce更快的数据处理。相对于MapReduce,Spark更适合复杂查询和支持机器学习、数据挖掘等高级数据操作。Spark能够运行在Hadoop之上,而且可以使用Hive、HBase和其他存储系统作为数据源,提供更广泛且更强大的数据处理和分析功能。 综上所述,Hadoop、HBase、Hive和Spark是四个组成复杂分布式系统的关键组件,它们可以分别胜任不同的数据处理和存储任务,其相互协作作用使得存储和处理大数据变得更快、更高效,更全面。这些分布式系统使得企业可以更好地存储大量数据和迅速查询和分析这些数据,为业务决策和战略制定提供有力支持。 ### 回答3: Hadoop、HBase、Hive和Spark是常用的分布式系统架构,在大规模数据处理和分析中表现出色。下面是它们的原理解析: Hadoop:Hadoop是一个分布式系统的框架,主要用于存储、处理和分析大数据集。它包含了一个分布式文件系统(HDFS)和一个分布式计算系统(MapReduce)。用户可以通过Hadoop将大数据集分割成若干个小文件,通过分布式计算进行处理。 HBase:HBase是Hadoop生态系统中的一个NoSQL数据库,基于Google的Bigtable研发而成。它是分布式的、面向列的、可伸缩的数据库。HBase将数据存储在Hadoop集群上,实现了高可靠性和高可扩展性。 Hive:Hive是开源的数据仓库解决方案,在Hadoop生态系统中非常流行。它使用HQL(Hive查询语言)进行数据分析处理,将Hive的查询语言翻译成MapReduce任务,然后在Hadoop集群上执行。 SparkSpark是Hadoop生态系统中的一个高性能计算框架。它支持内存计算和分布式数据处理,并提供了数据查询、机器学习、数据挖掘等功能。Spark的最大特点是支持多种语言接口,比如Java、Scala、Python等。 总体来说,这四种分布式系统架构都是基于Hadoop的生态系统,使用了分布式计算和存储技术。它们各自具有不同的特点和优势,用户可以根据需要选择合适的架构实现大规模数据处理和分析。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值