spark

Spark Core概述

﹥>﹥吖頭↗ 提交于 2020-03-08 06:42:46
Spark Core是spark的核心与基础,实现了Spark的基本功能,包含任务调度,内存管理,错误恢复与存储系统交互等模块 Spark Core中包含了对Spark核心API——RDD API(弹性分布式数据集)的定义:RDD表示分布在多个计算节点上可以并行操作的元素集合,是spark的核心抽象 Spark Core提供Spark最基础与最核心的功能,主要包括以下功能: (1)SparkContext: 通常而言,Driver Application的执行与输出都是通过SparkContext来完成的。在正式提交Application之前,首先需要初始化SparkContext。SparkContext隐藏了网络通信、分布式部署、消息通信、存储能力、计算能力、缓存、测量系统、文件服务、Web服务等内容,应用程序开发者只需要使用SparkContext提供的API完成功能开发。SparkContext内置的DAGScheduler负责创建Job,将DAG中的RDD划分到不同的Stage,提交Stage等功能。内置的TaskScheduler负责资源的申请,任务的提交及请求集群对任务的调度等工作。 (2)存储体系: Spark优先考虑使用各节点的内存作为存储,当内存不足时才会考虑使用磁盘,这极大地减少了磁盘IO,提升了任务执行的效率,使得Spark适用于实时计算、流式计算等场景

Spark SQL 之 Join 实现

扶醉桌前 提交于 2020-03-08 04:25:00
在这篇文章中: SparkSQL总体流程介绍 Join基本要素 Join基本实现流程 sort merge join实现 broadcast join实现 hash join实现 inner join left outer join right outer join full outer join left semi join left anti join 总结 文章写的很好,原文路径: https://cloud.tencent.com/developer/article/1005502 Join作为SQL中一个重要语法特性,几乎所有稍微复杂一点的数据分析场景都离不开Join,如今Spark SQL(Dataset/DataFrame)已经成为Spark应用程序开发的主流,作为开发者,我们有必要了解Join在Spark中是如何组织运行的。 SparkSQL总体流程介绍 在阐述Join实现之前,我们首先简单介绍SparkSQL的总体流程,一般地,我们有两种方式使用SparkSQL,一种是直接写sql语句,这个需要有元数据库支持,例如Hive等,另一种是通过Dataset/DataFrame编写Spark应用程序。如下图所示,sql语句被语法解析(SQL AST)成查询计划,或者我们通过Dataset/DataFrame提供的APIs组织成查询计划,查询计划分为两大类

spark为什么比MapReduce速度快

会有一股神秘感。 提交于 2020-03-08 00:01:10
比mapreduce在内存中快100倍, 比mapreduce在磁盘中快10倍 重要原因: 1)mapreduce中间结果数据只能够保存在磁盘,spark可以保存在内存中。 比如说一个任务有2个job,在mapreduce中会存在shuffle,同样spark里面也会存在shuffle * 它们的shuffle产生的数据都会落地到磁盘 * mapreduce中前面的job运行完成后,当前该job的结果只能保存在磁盘,后面的job需要依赖于前面job的结果,这个时候只能进行大量的磁盘io操作 (2)mapreduce里面如果有大量的任务(Map任务和Reduce任务),比如说此时一共有1000个任务,每一个任务都是以进程的方式运行在yarn中。在spark中同样也有1000个任务,每一个任务都是以线程方式运行在spark集群中,开启一个进程跟开启一个线程代价和时间都是不一样的。进程的开启需要的资源远远大于线程。 来源: CSDN 作者: 弗瑞得姆 链接: https://blog.csdn.net/aiyin9511/article/details/104717716

neo4j与spark 的结合

自古美人都是妖i 提交于 2020-03-07 23:50:31
spark 是用来 做 图计算的,Graphx,其实 spark 和Neo4j 有交叉点,在图论算法上都可以用上 使用 neo4j 和 spark 结合 1.首先 如果你的neo4j 是需要账号密码登录的话,你就应该 在项目中配置一下,两三种方式 import org.apache.spark.rdd.RDD import org.apache.spark.sql.{SQLContext, SparkSession} import org.apache.spark.sql.types.{StringType, StructField, StructType} import org.apache.spark.{SparkConf, SparkContext} import org.neo4j.spark.Neo4j import org.neo4j.spark._ import collection.JavaConversions._ val spark=SparkSession.builder().appName("play") .master("local[*]") .config("spark.neo4j.bolt.url", "bolt://localhost:7687") .config("spark.neo4j.bolt.user", "neo4j") .config(

「资源」每天花5h来学习Hadoop+Spark大数据巨量分析与机器学习实战

落花浮王杯 提交于 2020-03-07 19:30:19
本文的主题是Hadoop+Spark大数据分析与机器学习。众所周知,Hadoop是运用最多的大数据平台,然而Spark 异军突起,与Hadoop兼容而且运行速度更快,各大公司也开始加入Spark的开发。例如,IBM公司加入Apache Spark社区,打算培育百万名数据科学家。谷歌(Google)公司与微软公司也分别应用了Spark的功能来构建服务、发展大数据分析云与机器学习平台。这些大公司的加入,也意味着未来更多公司会采用Hadoop+ Spark进行大数据的数据分析。 然而,目前市面上虽然很多大数据的书,但是多半偏向理论或应用层面的介绍,网络上的信息虽然很多,但是也很杂乱。本文希望能够用浅显易懂的原理介绍和说明,再加上上机实践操作、范例程序,来降低大数据技术的学习门槛,带领读者进入大数据与机器学习的领域。当然整个大数据的生态系非常庞大,需要学习的东西太多。希望读者通过本文的学习,有了基本的概念后,能比较容易踏入这个领域,以便继续深入与研究其他大数据的相关技术。 文档内容简介 本文档从浅显易懂的“大数据和机器学习”原理介绍和说明入手,讲述大数据和机器学习的基本概念,如:分类、分析、训练、建模、预测、机器学习(推荐引擎)、机器学习(二元分类)、机器学习(多元分类)、机器学习(回归分析)和数据可视化应用。为降低读者学习大数据技术的门槛,书中提供了丰富的上机实践操作和范例程序详解

spark调优

徘徊边缘 提交于 2020-03-07 19:15:04
1.分配更多的资源     它是性能优化调优的王道,就是增加和分配更多的资源,这对于性能和速度上的提升是显而易见的, 基本上,在一定范围之内,增加资源与性能的提升,是成正比的;写完了一个复杂的spark作业之后,进行性能调 优的时候,   首先第一步,就是要来调节优的资源配置;在这个基础之上,如果说你的spark作业,能够分配的资源达到 了你的能力范围的顶端之后,无法再分配更多的资源了,公司资源有限;那么才是考虑去做后面的这些性能调优的点。 2.参数调节到多大才算大      第一种情况:standalone模式 先计算出公司spark集群上的所有资源 每台节点的内存大小和cpu核数, 比如:一共有20台worker节点,每台节点8g内存,10个cpu。 实际任务在给定资源的时候,可以给20个executor、   每个executor的内存8g、每个executor的使用的cpu个数 10。 第二种情况:Yarn 先计算出yarn集群的所有大小,比如一共500g内存,100个cpu; 这个时候可以分配的大资源,比如给定50个executor、每个executor的内存   大小10g,每个executor使用的cpu 个数为2。 使用原则:你能使用的资源有多大,就尽量去调节到大的大小(executor的数量:几十个到上百个不等;executor的 内存;exector的cpu个数

Spark常见问题汇总

*爱你&永不变心* 提交于 2020-03-07 17:41:41
原文地址:https://my.oschina.net/tearsky/blog/629201 摘要:    1 、 Operation category READ is not supported in state standby    2 、配置 spark.deploy.recoveryMode 选项为 ZOOKEEPER    3 、多 Master 如何配置    4 、 No Space Left on the device ( Shuffle 临时文件过多)    5 、 java.lang.OutOfMemory, unable to create new native thread    6 、 Worker 节点中的 work 目录占用许多磁盘空间    7 、 spark-shell 提交 Spark Application 如何解决依赖库    8 、Spark在发布应用的时候,出现连接不上master问题    9 、开发spark应用程序(和Flume-NG结合时)发布应用时可能出现org.jboss.netty.channel.ChannelException: Failed to bind to: /192.168.10.156:18800    10 、 spark-shell 找不到hadoop so问题解决    11 、ERROR XSDB6

Spark RDD与MapReduce

旧城冷巷雨未停 提交于 2020-03-07 13:16:47
什么是Map、什么是Reduce MapReduce是一个分布式编程计算模型,用于大规模数据集的分布式系统计算。 我个人理解,Map(映射、过滤)就是对一个分布式文件系统(HDFS)中的每一行(每一块文件)执行相同的函数进行处理; Reduce(规约、化简)就是对Map处理好的数据进行两两运算,因此reduce函数必须要有两个参数。 Map/Reduce的执行原理其实可以参考python的map/reduce函数: https://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/00141861202544241651579c69d4399a9aa135afef28c44000 Spark中的MapReduce RDD(Resilient Distributed Dataset)叫做弹性分布式数据集,是Spark中最基本的数据抽象,它代表一个不可变、可分区、里面的元素可并行计算的集合。RDD具有数据流模型的特点:自动容错、位置感知性调度和可伸缩性。RDD允许用户在执行多个查询时显式地将工作集缓存在内存中,后续的查询能够重用工作集,这极大地提升了查询速度。 RDD也支持常见的MapReduce操作。 RDD操作: 转换操作: 每一次转换操作都会产生不同的RDD,供给下一个“转换

Apache Spark源码走读之14 -- Graphx实现剖析

风流意气都作罢 提交于 2020-03-07 12:04:03
欢迎转载,转载请注明出处,徽沪一郎。 概要 图的并行化处理一直是一个非常热门的话题,这里头的重点有两个,一是如何将图的算法并行化,二是找到一个合适的并行化处理框架。Spark作为一个非常优秀的并行处理框架,将一些并行化的算法移到其上面就成了一个很自然的事情。 Graphx是一些图的常用算法在Spark上的并行化实现,同时提供了丰富的API接口。本文就Graphx的代码架构及pagerank在graphx中的具体实现做一个初步的学习。 Google为什么赢得了搜索引擎大战 当Google还在起步的时候,在搜索引擎领域,Yahoo正如日中天,红的发紫。显然,在Google面前的是一堵让人几乎没有任何希望的墙。 但世事难料,现在“外事问谷歌”成了不争的事实,Yahoo应也陪客了。 这种转换到底是如何形成的了,有一个因素是这样的,那就是Google发明了显著提高搜索准确率的PageRank算法。如果说PageRank算法的提出让谷歌牢牢站稳了搜索引擎大战的脚跟,这是毫不夸张的。 搜索引擎有几个要考虑的关键因素(个人观点而已)。 要想吸引用户,就必须要有出色的搜索准确率 有了用户,才能做广告投放,提高广告投放的针对性就可以盈利 上述两个方面都有非常优秀的算法。 废话少述,回到正题。PageRank算法是图论的一个具体应用,ok, 转到图论。 图论简介 图的组成

Spark Graphx编程指南

为君一笑 提交于 2020-03-07 11:59:22
问题导读 1.GraphX提供了几种方式从RDD或者磁盘上的顶点和边集合构造图? 2.PageRank算法在图中发挥什么作用? 3.三角形计数算法的作用是什么? Spark中文手册-编程指南 Spark之一个快速的例子 Spark之基本概念 Spark之基本概念 Spark之基本概念(2) Spark之基本概念(3) Spark-sql由入门到精通 Spark-sql由入门到精通续 spark GraphX编程指南(1) Pregel API 图本身是递归数据结构,顶点的属性依赖于它们邻居的属性,这些邻居的属性又依赖于自己邻居的属性。所以许多重要的图算法都是迭代的重新计算每个顶点的属性,直到满足某个确定的条件。 一系列的graph-parallel抽象已经被提出来用来表达这些迭代算法。GraphX公开了一个类似Pregel的操作,它是广泛使用的Pregel和GraphLab抽象的一个融合。 在GraphX中,更高级的Pregel操作是一个约束到图拓扑的批量同步(bulk-synchronous)并行消息抽象。Pregel操作者执行一系列的超级步骤(super steps),在这些步骤中,顶点从 之前的超级步骤中接收进入(inbound)消息的总和,为顶点属性计算一个新的值,然后在以后的超级步骤中发送消息到邻居顶点。不像Pregel而更像GraphLab