面试:
掌握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上存储的大数据,进行离线数据操作。