Apache Spark

spark HashShuffleManager调优

我的未来我决定 提交于 2020-03-02 18:18:11
HashShuffle调优概述 大多数Spark作业的性能主要就是消耗在了shuffle环 节,因为该环节包含了大量的磁盘IO、序列化、网络数据传输等操作。因此,如果要让作业的性能更上一层楼,就有必要对shuffle过程进行调优。但是也 必须提醒大家的是,影响一个Spark作业性能的因素,主要还是代码开发、资源参数以及数据倾斜,shuffle调优只能在整个Spark的性能调优中占 到一小部分而已。因此大家务必把握住调优的基本原则,千万不要舍本逐末。下面我们就给大家详细讲解shuffle的原理,以及相关参数的说明,同时给出各 个参数的调优建议。 ShuffleManager发展概述 在Spark的源码中,负责shuffle过程的执行、计算和处理的组件主要就是ShuffleManager,也即shuffle管理器。 在Spark 1.2以前,默认的shuffle计算引擎是HashShuffleManager。该ShuffleManager而HashShuffleManager有着一个非常严重的弊端,就是会产生大量的中间磁盘文件,进而由大量的磁盘IO操作影响了性能。 因此在Spark 1.2以后的版本中,默认的ShuffleManager改成了SortShuffleManager。SortShuffleManager相较于 HashShuffleManager来说,有了一定的改进

Shuffle 调优之 HashShuffleManager 和 SortShuffleManager

。_饼干妹妹 提交于 2020-03-02 16:37:55
spark.shuffle.manager:hash、sort、tungsten-sort(自己实现内存管理)spark.shuffle.sort.bypassMergeThreshold:200 spark 1.2.x版本以后,默认的shuffle manager,是什么呢? SortShuffleManager。 SortShuffleManager与HashShuffleManager两点不同: 1、SortShuffleManager会对每个reduce task要处理的数据,进行排序(默认的)。 2、SortShuffleManager会避免像HashShuffleManager那样,默认就去创建多份磁盘文件。一个task,只会写入一个磁盘文件,不同reduce task的数据,用offset来划分界定。之前讲解的一些调优的点,比如consolidateFiles机制、map端缓冲、reduce端内存占比。 这些对任何shuffle manager都是有用的。 总结: 如何来选择? 1、需不需要数据默认就让spark给你进行排序?就好像mapreduce,默认就是有按照key的排序。 如果不需要(不需要排序)的话,其实还是建议搭建就使用最基本的HashShuffleManager,因为最开始就是考虑的是不排序,换取高性能; 2、什么时候需要用sort shuffle

hive on spark 趟坑指南

喜夏-厌秋 提交于 2020-03-01 23:44:07
1、执行SQL 查询时候,报Failed to submit Spark work 错误。 Failed to execute spark task, with exception 'java.lang.Exception(Failed to submit Spark work, please retry later)' FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.spark.SparkTask. Failed to submit Spark work, please retry later 这个问题,需要看具体的错误在哪里,再做解决,不要随便归结于 spark 与 hive 版本不兼容。 建议大家修改hive 日志级别查看错误, 大家将 -e 后面的sql 换成自己这边的,查看输出中的错误信息,定位修改 hive --hiveconf hive.root.logger=DEBUG,console -e "use userdb;select count(*) from app_yyb;" 来源: oschina 链接: https://my.oschina.net/u/931220/blog/3056772

数据运营者的福音:海量数据处理利器Greenplum

折月煮酒 提交于 2020-03-01 14:32:05
前言:近年来,互联网的快速发展积累了海量大数据,而在这些大数据的处理上,不同技术栈所具备的性能也有所不同,如何快速有效地处理这些庞大的数据仓,成为很多运营者为之苦恼的问题!随着Greenplum的异军突起,以往大数据仓库所面临的很多问题都得到了有效解决,Greenplum也成为新一代海量数据处理典型代表。本文结合个推数据研发工程师李树桓在大数据领域的实践,对处理庞大的数据量时,如何选择有效的技术栈做了深入研究,探索出Greenplum是当前处理大数据仓较为高效稳定的利器。 一、Greenplum诞生的背景 时间回到2002年,那时整个互联网数据量正处于快速增长期,一方面传统数据库难以满足当前的计算需求,另一方面传统数据库大多基于SMP架构,这种架构最大的一个特点是共享所有资源,扩展性能差,因此面对日益增长的数据量,难以继续支撑,需要一种具有分布式并行数据计算能力的数据库,Greenplum正是在此背景下诞生了。 和传统数据库的SMP架构不同,Greenplum主要基于MPP架构,这是由多个服务器通过节点互联网络连接而成的系统,每个节点只访问自己的本地资源(包括内存、存储等),是一种完全无共享(Share Nothing)结构,扩展能力较之前有明显提升。 二、解读 Greenplum架构 Greenplum 主要由

大数据(Spark-基本概念)

柔情痞子 提交于 2020-03-01 10:40:22
Spark简介 Apache Spark是专为大规模数据处理而设计的快速通用的计算引擎。目前已经形成一个高速发展应用广泛 的生态系统。 Apache Spark特性: 1,快速 大多数操作均在内存中迭代,只有少部分函数需要落地到磁盘。 2,易用性 支持scala、Java、Python、R等语言;提供超过80个算子,API使用及其方便。 3,通用性 Spark提供了针对数据处理的一站式解决方案,计算时用Spark Core算子(替代Hadoop Map/Reduce) ,批处理时用Spark SQL(替代HiveSQL),实时计算用Spark Streaming(替代Stom),机器学习用 Spark MLlib(替代Mahout);另外,通过Spark GraphX进行图计算。 4,跨平台 Spark可以使用Local模式,Standalone模式,Cluster模式运行。 Local模式:在本地运行调试,支持断点,可以指定并行线程数。 Standalone模式:Spark管理资源,有Master和Worker,相当于ResourceManager和NodeManager。 Cluster模式:分布式模式,用于生产环境。资源管理器使用Yarn或者Mesos。 Spark的适用场景 目前大数据处理场景有以下几个类型: 复杂的批量处理(Batch Data Processing)

Spark操作hive示例代码

瘦欲@ 提交于 2020-02-29 12:57:43
示例代码 val sparkConf = new SparkConf().setAppName( "hive example" ) val sc = new SparkContext( sparkConf ) val hiveContext = new HiveContext( sc ) val tableName = "hive_test" ; var spark = SparkSession .builder() .appName( "Spark SQL basic example" ) .config( "spark.sql.warehouse.dir" , "hdfs://10.37.154.84:8020/user/hive/warehouse" ) .enableHiveSupport() .getOrCreate() spark .sql( "SELECT * FROM hive_test" ).show() 版本问题 当spark2.2和hadoop2.6安装在不同的集群,同时hive和hadoop安装在一起的时候,如果要使用spark sql访问hive,需要将hive的hive-site.xml复制到spark的conf目录中。 同时,spark2.2默认是访问hive1.2.0版本的,而hive2.2.0的客户端会和spark2.2存在版本不一致,在默认情况下

Severless SQL on OSS 实验(DataLakeAnalytics on OSS)

南楼画角 提交于 2020-02-29 11:21:18
摘要: 数据存储在OSS后,可以有多种方式查询分析OSS数据,如自建Spark/Presto/Impala(阿里云EMR以及Hadoop社区官方已支持OSS), 使用MaxCompute、DataLakeAnalytics等。 基于OSS的数据查询分析 数据存储在OSS后,有多种查询分析的方法,包括阿里云MaxCompute、DataLakeAnalytics产品等Severless查询分析服务,也可以自建Spark、Presto、Imapla应用来分析OSS上的数据。 实验步骤(DataLakeAnalytics on OSS) 本次实验,主要介绍实验DataLakeAnalytics如何Severless地查询分析OSS上的数据。 服务开通 OSS服务: 1.开通OSS服务 https://www.aliyun.com/product/oss DataLakeAnalytics服务: 1. 申请DataLakeAnalytics的试用资格 备注:目前DataLakeAnalytics公测中,需提交公测申请,开通试用。 操作步骤 准备数据 登录控制台 , 并创建目录 请创建 华东1 区域的OSS测试Bucket(目前DataLakeAnalytics产品公测区域为华东1)。 备注:Bucket名称是全局唯一,如果提示名称已存在,请更换一个Bucket名称。 创建目录(建议目录如下

《Hadoop大明白》【2】pyspark的应用场景

[亡魂溺海] 提交于 2020-02-29 07:46:47
1,python的码农涉猎Hadoop,首选pyspark 2,开发spark应用,需要知道的几个点: 【1】SQL语句:insert into / overwirte 【2】DataFrame的常用API 【3】UDF函数 【4】Kafka组件使用 【5】Avro序列化 【6】RDD的坑:谨防嵌套使用 来源: oschina 链接: https://my.oschina.net/u/107574/blog/2962594

spark2.2官方教程笔记-Spark SQL, DataFrames and Datasets向导

本秂侑毒 提交于 2020-02-28 21:57:15
概括 spark SQL是一个spark结构数据处理模型。不像基本的rdd api,Spark 提供的接口可以给spark提供更多更多关于数据的结构和正在执行的计算的信息。另外,spark sql在性能优化上比以往的有做改善。目前有更多的方式和spark sql交互:sql,dataset api。无论你是用哪种api/语言,计算时最终使用相同的sql引擎。 SQL Spark Sql的一个作用是执行sql查询。spark sql能够用来从现有的hive中读取数据。更多关于如何配置使用的问题,请参考 Hibe 表 章节。当使用其他编程语言运行sql,结果也将返回Dataset/DataFrame。你能通过使用命令行或者jdbc/odbc和sql接口交互。 Datasets and DataFrames 一个dataset是分布式数据集合。数据集合是一个spark1.6开始提供的接口,想要把rdd的优势(强类似,强大的lambda函数功能)和spark sql的优化执行的优势结合到一起来。dataset能够从jvm对象中创建然后使用transformations(map,flagmap,filter等等)进行转换。 开始 SparkSession 所有spark功能的入口点是 SparkSession 类,创建一个基本的sparksession,只要使用一句语句就话哦啊

大数据面试之Spark

喜夏-厌秋 提交于 2020-02-28 08:59:55
谈谈对spark的理解 https://www.cnblogs.com/gaoxing/p/4916785.html Spark的优势 运行速度快:相对于Hadoop而言,Spark基于内存的运算要快100倍以上,基于硬盘也要快10倍以上。Spark实现了高效的DAG执行引擎,可以节约内存来高效处理数据流。 简单,易用:Spark支持Java、Python和Scala的API,还有超过80种的高级算法,用户可以快速构建不同的应用。 通用:一站式的解决方案,Spark可以用于批处理、交互式查询(Spark SQL),实时流处理(Spark Streaming)、机器学习(Spark MLlib)和图计算(GraphX)。这些不同类型的处理可以在同一个应用中无缝使用。 兼容性:Spark可以方便的与其他开源产品进行融合。如,Spark可以使用Hadoop的YARN和Mesos作为它的资源管理和调度器,并且可以处理所有Hadoop支持的数据,包括HDFS、HBase和Cassandra等。 Spark的工作流程 client提交任务到master master将任务放入到队列中,获取appid,返回给client Driver端创建sc实例,等待资源分配 一旦有了资源,启动executor并反向和driver进行注册 driver端开始运行代码,对到action算子就生成DAG有向无环图