spark源码分析

【Spark SQL】1、初探大数据及Hadoop的学习

China☆狼群 提交于 2020-01-16 19:41:59
初探大数据 centos 6.4 CDH5.7.0 系列http://archive.cloudera.com/cdh5/cdh/5/ 生产或测试环境选择对应CDH版本时,一定要采用尾号一样的版本 OOPTB apache-maven-3.3.9-bin.tar.gz Jdk-7u51-linux-x64.tar.gz Zeppelin-0.7.1-bin.tgz Hive-1.1.0-cdh5.7.0.tar.gz hadoop-2.6.0-cdh5.7.0.tar.gz Mysql-connector-java.5.1.27.bin.jar Scala-2.11.8.tar.gz spark-2.1.0-bin-2.6.0-cdh5.7.0 大数据概述 数据量 速度 多样性、复杂性 基于高度分析的新价值 Hadoop 一个分布式系统基础架构,由Apache基金会开发。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力高速运算和存储 Apache顶级项目 访问网站 projetName.apache.org 包括 HSFS/YARN/MapReduce 狭义Hadoop VS 广义Hadoop 狭义的Hadoop:是一个适合大数据分布式存储HDFS、分布式计算MapReduce和资源调度YARN的平台 广义的Hadoop:指的是Hadoop生态系统

Spark DataFrame、Spark SQL、Spark Streaming入门教程

五迷三道 提交于 2020-01-14 23:06:47
文章目录 前言 1、RDD、Spark DataFrame、Spark SQL、Spark Streaming 2、Spark DataFrame 2.1 创建基本的Spark DataFrame 2.2 从各类数据源创建Spark DataFrame 2.3 Spark DataFrame持久化数据 2.4 Dataframe常见的API 3、Spark SQL 4、Spark Streaming 实时计算TCP端口的数据 前言   本文介绍Spark DataFrame、Spark SQL、Spark Streaming入门使用教程,这些内容将为后面几篇进阶的streaming实时计算的项目提供基本计算指引,本文绝大部分内容来自Spark官网文档(基于PySpark): Spark DataFrame 、 Spark SQL 、 Spark Streaming 1、RDD、Spark DataFrame、Spark SQL、Spark Streaming   RDD:大家最熟悉的数据结构,主要使用transmissions和actions 相关函数式算子完成数据处理和数理统计,例如map、reduceByKey,rdd没有定义 Schema(一般指未定义字段名及其数据类型), 所以一般用列表索引号来指定每一个字段。 例如, 在电影数据的推荐例子中: move_rdd.map

Spark RDD 概念以及核心原理

倖福魔咒の 提交于 2019-12-26 07:15:56
2、依赖关系下的数据流视图         在spark中,会根据RDD之间的依赖关系将DAG图划分为不同的阶段,对于窄依赖,由于partition依赖关系的确定性,partition的转换处理就可以在同一个线程里完成,窄依赖就被spark划分到同一个stage中,而对于宽依赖,只能等父RDD shuffle处理完成后,下一个stage才能开始接下来的计算。   因此spark划分stage的整体思路是:从后往前推,遇到宽依赖就断开,划分为一个stage;遇到窄依赖就将这个RDD加入该stage中。因此在图2中RDD C,RDD D,RDD E,RDDF被构建在一个stage中,RDD A被构建在一个单独的Stage中,而RDD B和RDD G又被构建在同一个stage中。   在spark中,Task的类型分为2种:ShuffleMapTask和ResultTask;   简单来说,DAG的最后一个阶段会为每个结果的partition生成一个ResultTask,即每个Stage里面的Task的数量是由该Stage中最后一个RDD的Partition的数量所决定的!而其余所有阶段都会生成ShuffleMapTask; 已经为大家精心准备了大数据的系统学习资料,从Linux-Hadoop-spark-......,需要的小伙伴可以点击

hive on spark

与世无争的帅哥 提交于 2019-12-23 16:09:21
装了一个多星期的hive on spark 遇到了许多坑。还是写一篇随笔,免得以后自己忘记了。同事也给我一样苦逼的人参考。 先说明一下,这里说的 Hive on Spark 是 Hive 跑在 Spark 上,用的是 Spark 执行引擎,而不是MapReduce,和 Hive on Tez的道理一样。 先看官网的资源 Hive on Spark: Getting Started 要想在Hive中使用Spark执行引擎,第一步当前就是环境设置,我们需要在Hive启动的时候加载 spark-assembly-1.5.0-hadoop2.6.0.jar ,最简单的方法是把spark-assembly-1.5.0-hadoop2.6.0.jar包直接拷贝 到$HIVE_HOME/lib目录下。我采用的方法是在hive-site里面添加spark.home。具体给出官方的建议,这个不算坑,基本都能做好。 好了到这里开始讲我遇到的坑 第一个坑:直接使用spark pre-build版本,下来后按照上面配置弄结果报错 java.lang.NoSuchFieldError: SPARK_RPC_CLIENT_CONNECT_TIMEOUT at org.apache.hive.spark.client.rpc.RpcConfiguration.<clinit>(RpcConfiguration

spark源码分析之任务本地化

一世执手 提交于 2019-12-11 19:23:42
Spark也有数据本地化的概念(Data Locality),这和MapReduce的Local Task差不多,如果读取HDFS文件,Spark则会根据数据的存储位置,分配离数据存储最近的Executor去执行任务。 这么理解没错,我搭建的Spark集群情况是这样: 每台DataNode节点的HDFS集群,我在每个DataNode上都部署了一个Spark Worker,并且,启动Spark Application的时候,每个Worker都有一个Executor,这样理论上来说,只要读取HDFS文件,Spark都可以使用本地任务来读取(NODE_LOCAL)。 其中任务本地化后再器spark 提交任务界面存在。 通过分析源码 :spark 再sparkcontext 阶段已经再对应的wokers 上启动了excuter (里面指定了具体的内存和cpu ) 但通过源码分析都没有根据数据的具体位置去选择性的启动excutor 具体代码为 spark 1.3.1 spark 1.6.1 的excutor 资源分配为: 没有找到具体的执行代码 推测 为: 两种任务shuffleTask 和 resultTask 出现新的日志任务调度 (源码查看) 来源: CSDN 作者: lianchaozhao 链接: https://blog.csdn.net/weixin_40809627

spark算子总结

拈花ヽ惹草 提交于 2019-12-10 16:20:45
一:转换算子 1:Value类型 1.1 map(func) 1. 作用:返回一个新的RDD,该RDD由每一个输入元素经过func函数转换后组成 2. 需求:创建一个1-10数组的RDD,将所有元素*2形成新的RDD (1)创建 scala> var source = sc.parallelize(1 to 10) source: org.apache.spark.rdd.RDD[Int] = ParallelCollectionRDD[8] at parallelize at <console>:24 (2)打印 scala> source.collect() res7: Array[Int] = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10) (3)将所有元素*2 scala> val mapadd = source.map(_ * 2) mapadd: org.apache.spark.rdd.RDD[Int] = MapPartitionsRDD[9] at map at <console>:26 (4)打印最终结果 scala> mapadd.collect() res8: Array[Int] = Array(2, 4, 6, 8, 10, 12, 14, 16, 18, 20) 1.2 mapPartitions(func) 1. 作用

大数据学习路线是怎么样的?

与世无争的帅哥 提交于 2019-12-09 16:39:54
1.Linux基础和分布式集群技术 学完此阶段可掌握的核心能力: 熟练使用Linux,熟练安装Linux上的软件,了解熟悉负载均衡、高可靠等集群相关概念,搭建互联网高并发、高可靠的服务架构; 学完此阶段可解决的现实问题: 搭建负载均衡、高可靠的服务器集群,可以增大网站的并发访问量,保证服务不间断地对外服务; 学完此阶段可拥有的市场价值: 具备初级程序员必要具备的Linux服务器运维能力。 1.内容介绍: 在大数据领域,使用最多的操作系统就是Linux系列,并且几乎都是分布式集群。该课程为大数据的基础课程,主要介绍Linux操作系统、Linux常用命令、Linux常用软件安装、Linux网络、防火墙、Shell编程等。 2.案例:搭建互联网高并发、高可靠的服务架构。 2.离线计算系统课程阶段 1. 离线计算系统课程阶段 hadoop核心技术框架 学完此阶段可掌握的核心能力: 1、通过对大数据技术产生的背景和行业应用案例了解hadoop的作用;2、掌握hadoop底层分布式文件系统HDFS的原理、操作和应用开发;3、掌握MAPREDUCE分布式运算系统的工作原理和分布式分析应用开发;4、掌握HIVE数据仓库工具的工作原理及应用开发。 学完此阶段可解决的现实问题: 1、熟练搭建海量数据离线计算平台;2、根据具体业务场景设计、实现海量数据存储方案;3

Spark设计理念与基本架构

99封情书 提交于 2019-12-06 06:41:04
Spark设计理念与基本架构 https://www.cnblogs.com/swordfall/p/9280006.html 1.基本概念 Spark中的一些概念: RDD(resillient distributed dataset):弹性分布式数据集。 Partition:数据分区。即一个RDD的数据可以划分为多少个分区。 NarrowDependency:窄依赖,即子RDD依赖于父RDD中固定的Partition。Narrow-Dependency分为OneToOneDependency和RangeDependency两种。 ShuffleDependency:shuffle依赖,也称为宽依赖,即子RDD对父RDD中的所有Partition都有依赖。 Task:是送到某个Executor上的工作单元,即具体执行任务。Task分为ShuffleMapTask和ResultTask两种。ShuffleMapTask和ResultTask分别类似于Hadoop中的Map和Reduce。Task是运行Application的基本单位,多个Task组成一个Stage,而Task的调度和管理等是由TaskScheduler负责的。 Job:用户提交的作业。一个Job包含多个Task组成的并行计算,往往由Spark Action触发。 Stage:每个Job会被拆分成多组Task

Spark成为大数据高手进阶步骤

早过忘川 提交于 2019-12-04 18:45:21
什么是Spark Spark是UC Berkeley AMP lab所开源的类Hadoop MapReduce的通用的并行计算框架,Spark基于map reduce算法实现的分布式计算,拥有Hadoop MapReduce所具有的优点;但不同于MapReduce的是Job中间输出和结果可以保存在内存中,从而不再需要读写HDFS,因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的map reduce的算法。其架构如下图所示: Spark的适用场景 Spark是基于内存的迭代计算框架,适用于需要多次操作特定数据集的应用场合。需要反复操作的次数越多,所需读取的数据量越大,受益越大,数据量小但是计算密集度较大的场合,受益就相对较小(大数据库架构中这是是否考虑使用Spark的重要因素) 由于RDD的特性,Spark不适用那种异步细粒度更新状态的应用,例如web服务的存储或者是增量的web爬虫和索引。就是对于那种增量修改的应用模型不适合。 总的来说Spark的适用面比较广泛且比较通用。 运行模式 本地模式 Standalone模式 Mesoes模式 yarn模式 Spark生态系统 Shark ( Hive on Spark): Shark基本上就是在Spark的框架基础上提供和Hive一样的H iveQL命令接口,为了最大程度的保持和Hive的兼容性

Spark入门01

拜拜、爱过 提交于 2019-12-04 11:57:29
一, Spark概述 spark框架地址 1、官网: http://spark.apache.org/ 2、源码托管: https://github.com/apache/spark 3、母公司网站: https://databricks.com/ 官方博客:https://databricks.com/blog/、https://databricks.com/blog/category/engineering/spark 1,官方定义 http://spark.apache.org/docs/2.2.0/ Spark框架,类似于MapReduce框架,针对大规模数据分析框架。 2,大数据分析类型 离线处理:处理分析的数据是静态不变的,类似MapReduce和Hive框架等 交互式分析:即席查询,类似于impala 实时分析:针对流式数据实时处理,展示结果等 3,Spark框架介绍 在磁盘上对100TB的数据进行排序,可以看到Spark比hadoop快的多,效率高。 为什么Spark框架如此快? 数据结构 RDD:弹性分布式数据集,Spark将要处理的数据封装到集合RDD中,调用RDD中函数处理数据。 RDD数据可以放到内存中,内存不足可以放到磁盘中。 Task任务运行方式不一样 MapReduce应用运行:MapTask和ReduceTask都是JVM进程。启动一个jvm进程很慢