Apache Spark

Spark学习之路 (十二)SparkCore的调优之资源调优

不想你离开。 提交于 2021-02-14 07:06:44
摘抄自: https://tech.meituan.com/spark-tuning-basic.html 一、概述 在开发完Spark作业之后,就该为作业配置合适的资源了。Spark的资源参数,基本都可以在spark-submit命令中作为参数设置。很多Spark初学者,通常不知道该设置哪些必要的参数,以及如何设置这些参数,最后就只能胡乱设置,甚至压根儿不设置。资源参数设置的不合理,可能会导致没有充分利用集群资源,作业运行会极其缓慢;或者设置的资源过大,队列没有足够的资源来提供,进而导致各种异常。总之,无论是哪种情况,都会导致Spark作业的运行效率低下,甚至根本无法运行。因此我们必须对Spark作业的资源使用原理有一个清晰的认识,并知道在Spark作业运行过程中,有哪些资源参数是可以设置的,以及如何设置合适的参数值。 二、Spark作业基本运行原理 详细原理见上图。我们使用spark-submit提交一个Spark作业之后,这个作业就会启动一个对应的Driver进程。根据你使用的部署模式(deploy-mode)不同,Driver进程可能在本地启动,也可能在集群中某个工作节点上启动。Driver进程本身会根据我们设置的参数,占有一定数量的内存和CPU core。而Driver进程要做的第一件事情,就是向集群管理器(可以是Spark Standalone集群

大数据开发-从cogroup的实现来看join是宽依赖还是窄依赖

倾然丶 夕夏残阳落幕 提交于 2021-02-12 22:27:19
前面一篇文章提到大数据开发-Spark Join原理详解,本文从源码角度来看cogroup 的join实现 1.分析下面的代码 import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext} object JoinDemo { def main(args: Array[String]): Unit = { val conf = new SparkConf().setAppName(this.getClass.getCanonicalName.init).setMaster("local[*]") val sc = new SparkContext(conf) sc.setLogLevel("WARN") val random = scala.util.Random val col1 = Range(1, 50).map(idx => (random.nextInt(10), s"user$idx")) val col2 = Array((0, "BJ"), (1, "SH"), (2, "GZ"), (3, "SZ"), (4, "TJ"), (5, "CQ"), (6, "HZ"), (7, "NJ"), (8, "WH"), (0, "CD")) val rdd1: RDD[

HDFS Federation(联邦)简介

孤街浪徒 提交于 2021-02-12 15:27:07
1 文档编写目的 本文主要介绍HDFS Federation(联邦)相关知识,为后续文章《如何为CDH集群启用Federation(联邦)》做一个简单的铺垫。Federation即为“联邦”,该特性允许一个HDFS集群中存在多组Namenode同时对外提供服务,分管一部分目录(水平切分),彼此之间相互隔离,但共享底层的Datanode存储资源。 文章目录结构: 1. 文档编写目的 2. Federation 2.1 单组Namenode架构 2.2 单组Namenode局限性 2.3 为什么要引入Federation 3. Federation 介绍 3.1 Federation 架构 3.1.1 主要优点 3.1.3 主要缺点 3.2 Federation 局限性 4. 总结 2 Federation 背景 2.1 单组Namenode架构 HDFS 主要有两大模块: Namespace (命名空间): 由目录、文件和块组成,它支持所有命名空间相关的文件操作,如创建、删除、修改,查看所有文件和目录。 Block Storage Service (块存储服务):包括Block管理和存储两部分 Block 管理 通过控制注册以及阶段性的心跳,来保证Datanode的正常运行; 处理Block的报告信息和维护块的位置信息; 支持Block相关的操作,如创建、删除、修改

一文读懂Flink容错数据流

放肆的年华 提交于 2021-02-11 21:02:59
Flink容错数 据流概念 有状态的函数和操作需要存储计算相关的数据,这使得状态成为复杂计算的关键。在 Flink 中的每一种函数和操作都可以成为有状态的。为了达到很好的容错,Flink 的容错机制持续的记录分布式的数据流的快照。这些快照是非常轻量化的,因此高频的记录快照并不会影响性能。当进程由于机器,网络甚至是软件异常而失败的时候,Flink 会停止数据流。系统重启操作同时将他们恢复到最近的快照点。输入流也会被设置到记录快照点那个时间点,通俗点说就是一条记录不会存在于快照中同时还在数据流中等待被处理。 问题1:哪些函数是有状态的? 问题2:为什快照是非常轻量化的? 问题3:快照如何设置异步的? 问题4:如何在配置中设置多个快照 问题5:快照支持哪几种方式,如何配置 问题6:Checkpoint和Snapshots如何使用 Checkpointing Flink 容错机制的核心就是,记录分布式的数据流和状态的一致性快照。通过这些快照,系统可以从失败中恢复回来 屏障Barriers Flink分布式快照的一个核心元素是流屏障。这些屏障被注入到数据流中,并将记录作为数据流的一部分。障碍永远不会超过记录,它们严格按照顺序流动。一个屏障将数据流中的记录分隔为进入当前快照的记录集和进入下一个快照的记录集。每个屏障都携带快照的ID,快照将快照的记录推到它前面。屏障不会中断流,因此非常轻

Pyspark实战

好久不见. 提交于 2021-02-10 16:55:49
本篇文章介绍pyspark的使用,参考书籍《pyspark实战》。 Apache Spark最初由Matei Zaharia开发,于2013年创建了Databricks公司并担任CTO。 1.spark介绍 spark提供MapReduce的灵活性和可扩展性,但是明显速度更快。可以使用java,scala,sql,R和Python访问Spark API。 1.1 spark作业和API spark作业与一系列对象依赖相关联,这些依赖关系以DAG图的方式组织。 弹性分布式数据集(RDD)是JVM对象的分布式集合,Spark是围绕RDD构建的。RDD有两种操作: 转换 和 动作 。 DataFrame与RDD类似,区别主要是DataFrame是以 命名列 的方式组织的。与关系型数据库中的表类似。与java、scala相比, python中的RDD速度很慢 ,但是DataFrame在各种语言中性能相似。 Spark SQL的核心是Catalyst优化器。 Spark 2.0发布的三个主要主题包括:性能增强;引入结构化流;统一Dataset和DataFrame。 2.RDD 2.1 创建RDD 下边使用两种方式生成RDD, from pyspark import SparkContext data = SparkContext.parallelize([( ' alibaba ' ,

PySpark SQL 相关知识介绍

寵の児 提交于 2021-02-10 16:31:27
本文作者: foochane 本文链接: https://foochane.cn/article/2019060601.html 1 大数据简介 大数据是这个时代最热门的话题之一。但是什么是大数据呢?它描述了一个庞大的数据集,并且正在以惊人的速度增长。大数据除了体积(Volume)和速度(velocity)外,数据的多样性(variety)和准确性(veracity)也是大数据的一大特点。让我们详细讨论体积、速度、多样性和准确性。这些也被称为大数据的4V特征。 1.1 Volume 数据体积(Volume)指定要处理的数据量。对于大量数据,我们需要大型机器或分布式系统。计算时间随数据量的增加而增加。所以如果我们能并行化计算,最好使用分布式系统。数据可以是结构化数据、非结构化数据或介于两者之间的数据。如果我们有非结构化数据,那么情况就会变得更加复杂和计算密集型。你可能会想,大数据到底有多大?这是一个有争议的问题。但一般来说,我们可以说,我们无法使用传统系统处理的数据量被定义为大数据。现在让我们讨论一下数据的速度。 1.2 Velocity 越来越多的组织机构开始重视数据。每时每刻都在收集大量的数据。这意味着数据的速度在增加。一个系统如何处理这个速度?当必须实时分析大量流入的数据时,问题就变得复杂了。许多系统正在开发,以处理这种巨大的数据流入

Spark(GraphX)

為{幸葍}努か 提交于 2021-02-10 08:16:49
Spark core GraphX core Pregel+GraphLab API GraphX工具包 处理流水线 raw data from FS/DB->initail graph by ETL->subgraph by Slice->Pagerank by Graphlib/Pregel compute->store/ to FS/DB 数据结构(物理数据结构) RDPG(Resilient Distributed Property Graph),一种点和边都带属性的有向多重图 实际上都会转化为RDD(RDD[VertexPartition]和RDD[EdgePartition]) 操作视图(逻辑数据结构) RDPG,支持两种视图Graph视图和Collection/Table视图 Collection/Table视图由边表和点表组成,使用spark rdd API Graph视图是直接操作图 图存储 边分割(GraphX采用):每个顶点都存储一次,但有的边会被打断分到两台机器上 点分割:每条边只存储一次,都只会出现在一台机器上 每个图由3个RDD组成 图计算 基础模型:BSP(bulk synchronous parallel),一次计算分多个超步,一个超步含三子步(并发计算,通信,栅栏同步) BSP扩展模型:     消息通信模型(Pregel,顶点思考模型

蚂蚁金服:超大规模分布式计算系统 + 超大规模分布式优化算法

五迷三道 提交于 2021-02-08 05:51:44
人工智能大数据与深度学习 公众号: weic2c 近年来,随着“大”数据及“大”模型的出现,学术界和工业界对分布式机器学习算法引起了广泛关注。针对这一刚需,阿里集团和蚂蚁金服设计了自己的分布式平台——鲲鹏。鲲鹏结合了分布式系统及并行优化算法,解决了大规模机器学习算法带来的一系列问题,不仅囊括了数据/模型并行、负载平衡、模型同步、稀疏表示、工业容错等特性,而且还提供了封闭好的、宜于调用的 API 供普通的机器学习者开发分布式算法,降低使用成本并提升效率。相关论文在本届 KDD 以口头报告的形式发表 (应用数据科学 Track)。 论文《鲲鹏:基于参数服务器的分布式学习系统及其在阿里巴巴和蚂蚁金服的应用》 (KunPeng: Parameter Server based Distributed Learning Systems and Its Applications in Alibaba and Ant Financial),由蚂蚁金服人工智能部和阿里云团队的周俊,李小龙,赵沛霖,陈超超,李龙飞,杨新星,崔卿,余晋,陈绪,丁轶,漆远合作完成。 文中描述的实验在十亿级别的样本和特征数据上进行。结果表示,鲲鹏的设计使得一系列算法的性能都得到了极大的提升,包括 FTRL,Sparse-LR,以及 MART。此外,鲲鹏在阿里巴巴“双11”狂欢购物节及蚂蚁金服的交易风险检测中

阿里云轻量应用服务器和ECS云服务器区别对比选择方法

荒凉一梦 提交于 2021-02-07 21:34:26
阿里云轻量应用服务器和ECS云服务器哪个好?轻量应用服务器和ECS云服务器有什么区别?云服务器吧分享 阿里云轻量应用服务器和ECS云服务器 的区别及选择方法: 轻量应用服务器和ECS云服务器详解 ECS云服务器是阿里云的明星产品,上云必备,ECS云服务器可以结合云数据库、SLB负载均衡等产品实现高容灾高可靠性的应用架构;轻量应用服务器是轻量级的云服务器,不能搭建集群,适用于单机应用,比如单机网站应用。详细如下: 什么轻量应用服务器? 轻量应用服务器是面向单机应用场景的新一代计算服务,提供应用一键部署、一站式域名解析、网站发布、安全、运维、应用管理等服务。极大地优化了搭建简单应用的体验,降低了入门级用户使用云计算产品的门槛。更多介绍参考: 轻量应用服务器 - 阿里云 轻量应用服务器适用于:搭建小型网站、建立个人博客、建立论坛社区、构建知识效率管理工具、建立个人学习环境、搭建小型电商网站及快速搭建开发环境等。 什么是ECS云服务器? ECS云服务器是一种弹性可伸缩的计算服务,ECS是阿里云的上云必备明星产品。ECS云服务器可用于搭建各类型的企业级应用,如集群应用、网站服务器、视频弹幕等应用。ECS云服务器可以和云数据库、VPC、SLB等实例搭建集群应用。更多介绍参考: ECS云服务器 - 阿里云 ECS云服务器适用于:企业官网或轻量的Web应用、多媒体以及高并发应用或网站、高I

基于Docker的大数据开发环境

折月煮酒 提交于 2021-02-06 20:37:25
大数据开发对运行环境和数据的依赖比较重,比如开发Spark应用,往往会依赖Hive,但本地开发环境是没有Hive的,所以需要在本地和服务器之间拷贝代码,效率不高,我认为用Docker在本地搭建一套单机的大数据集群,然后将代码拷贝到容器里进行测试,可以改善这种情况。我自己对这个思路做过探索:https://github.com/iamabug/BigDataParty,这个镜像安装了Hadoop、Hive、Spark等组件,基本可以满足需求,但是也有一些问题存在,比如有时需要对配置进行调整来保持和生产环境的一致性,虽然可以做,但工作量也不少。 其实,CDH和HDP都提供了类似的单机镜像,其中HDP中组件的版本比较新,并且和公司的技术栈一致,因此来探索一下,如果体验更好的话,以后就用它来进行相关的开发了。 CDH镜像相关:https://hub.docker.com/r/cloudera/quickstart/ HDP镜像相关:https://www.cloudera.com/tutorials/sandbox-deployment-and-install-guide/3.html Sandbox获取 系统要求 安装Docker 17.09 或更新的版本 对于Windows和Mac,Docker需要配置10G以上的内存 脚本下载与执行 可以在浏览器里访问https://www