Spark工作原理

面试:

掌握Java开发

熟悉HDFS/HBase/Hive/MapReduce/spark,有丰富的分布式编程经验;

熟悉Spark Streaming和Spark SQL;

熟悉Core Java,熟悉Java IO, NIO, 多线程编程, 熟悉JVM运行机制和内存管理,网络协议;

熟练掌握Linux操作系统,熟悉shell等脚本编程;

有在Spark相关项目中应用Java或Python语言的经验者优先;

熟练数据库/数据仓库分层设计、宽表设计、星型模型设计等;

熟练ETL工具:Sqoop/Kettle/Spark等;

负责大数据平台数据实时计算算法和流处理

负责大数据平台数据及相关的应用开发,调优及维护。

熟悉大数据其他相关组件**:hdfs、yarn、hive、hbase等**

有互联网业务**分布式数据仓库、**大数据数据分析等相关经验者加分。

有以下大数据平台子系统开发经验优先(元数据管理平台、即席查询平台、OLAP平台、实时计算)

熟悉Hadoop大数据生态圈技术,对分布式存储Hdfs,Hive,Hbase等 资源调度Yarn,Kubernetes,Azkaban等,计算框架 Spark,Prosto,Hive,Impala等 有相关源码研究优先。

熟悉并掌握离线和实时数据处理流程,熟练使用Spark,Flink优先

熟悉Linux环境,熟悉Mysql、MongoDB等数据库,熟练编写SQL语句

多个数据库来回传送数据(Hive与Mysql等使用Sqoop)

图片

Spark工作原理

图片

1. 分布式(一个集群通过多个节点并行处理数据的计算2. 主要基于内存(少数情况下基于磁盘) 3. 迭代式计算
** Spark与MapReduce最大的区别在于迭代式计算模型** Map Reduce:分为两个阶段,Map 和 Reduce ,两个阶段处理完毕之后,就结束了,所以我们在一个Job里能做的处理很有限,只能在Map 和 Reduce里面处理 Spark:计算模型,可以分为 n 个阶段,因为他是内存迭代式的,我们在处理完一个阶段的以后,可以继续往下处理多个阶段,而不是之两个阶段,所以,Spark相比较于Map Reduce来说,计算模型可以提供更强大的功能。 所有计算操作,都是针对多个节点上的数据,进行并行处理计算操作。 最终的数据会传入Hadoop,HDFS,Hive,Mysql,DB,客户端等等。

什么是RDD?

RDD是spark提供的核心抽象,全称:弹性分布式数据集。 RDD在抽象上来说是一种元素的集合,包含了数据。它是被分区的,分为多个分区,每个分区分布在集群的不同节点上,从而让RDD中的数据可以被并行操作(分布式数据集) RDD通常通过Hadoop上的文件,即DHFS文件或者和Hive表,来进行创建;又是也可以通过应用程序中的集合来创建。 RDD最重要的特性就是,提供了容错性,可以自动从节点失败中回复过来。 即如果某个节点上的RDD partition,因为节点故障,导致数据丢失了,那么RDD会自动通过自己的数据来源重新计算该partition。这一切对使用这都是透明的, RDD的数据默认情况下都存放在内存中,但是内存资源不足的时候,Spark会自动将RDD数据写如磁盘**(弹性)**
每一批节点上的每一批数据,实际上就是一个RDD!!!一个RDD是分布式的,所以数据都是散落在一批节点上,每个节点都存储了RDD的部分partition。

什么是Spark开发?

1. 核心开发:离线批处理 / 交互式数据处理 2. SQL查询:底层都是RDD和计算操作 3. 实时计算:底层都是RDD和计算操作
Spark的核心编程是什么? 其实就是, 首先:第一,定义初始的RDD,就是说,你要定义一个RDD从哪里读取数据,hdfs , Linux 本地文件,程序中的集合。 第二,定义RDD的计算操作,这个在Spark里面称之为算子,map,reduce,flatmap,groutByKey等等 第三,其实就是循环往复的过程,第一个计算完成以后,数据可能就会到新的一批节点上,也就是编程一个新的RDD,单核再次反复,针对新的RDD定义计算操作。 第四,最后获得最终的数据,将数据保存起来。

开发wordcount程序

下载Scala ide for edipse

图片

1. 用Scala开发wordcount程序 下载Scala ide for edipse 在Java Build Path中,添加spark依赖包(如果Scala ide for dipse原生的Scala版本发生冲突,则异常原生的Scala,重新配置Scala compiler) 用expord导出Scala spark工程 2. 用spark-shell开发word count程序 常用于简单的测试

workcount程序工作做原理深度剖析

图片

Spark架构原理(核心组件)

图片

Sopark集群,有多个节点(3个),我们自己手工搭建的Spark集群,有三个节点,这里的节点,指的就是我们搭建的时,说的那个节点。
1,Driver(进程)我们编写的Spark程序就在Driver上,由Driver进程执行,Spark集群的节点之一/就是你提交Spark程序的机器
2,Master(1个主节点):是进程,主要是资源的调度和分配,还有集群的监控
3,worker(2个副节点):是进程,主要负责两个,一个是用自己的内存存储RDD的某个或某些partition;另一个,是启动其它进程和线程的,对RDD上的partition进行并行的处理和计算
4,Executor:(进程),当我们启动Worker节点时,里面会启动Executor进程,
5,Task:(线程)Executor进程里面有很多个Task线程
Executor和Task,其实就是执行负责执行,对RDD的partition进行并行的计算了,也就是执行我们对RDD定义的,比如map,reduce,flatMap等等算子

创建RDD

Spark Core提供了创建RDD的方式,包括:使用程序中的集合创建RDD;使用本地文件创建RDD;使用HDFS文件创建RDD。

使用HDFS文件创建RDD,就是最常见的生产环境处理方式,主要可以针对HDFS上存储的大数据,进行离线数据操作。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值