Spark Adaptive Execution 最近遇到了很多spark性能优化的问题,刚好找到了一篇比较全面的总结,但没有给出具体实现方法。所以这边打算罗列一下计划优化的点,慢慢抽时间研究、优化,最后打算应用到公司业务中,并争取贡献到spark社区。----------------------------------------------------------------------------------------------...
java本地使用JDBC连接Spark SQL(HiveServer2) 根据Spark官网所述,Spark SQL实现了Thrift JDBC/ODBC server: The Thrift JDBC/ODBC server implemented here corresponds to the HiveServer2 in Hive 1.2.1 You can test the JDBC server with the beeline script that...
记一次Spark SQL问题排查的经历 起因分析师A:哇 你们这个数据查询平台查Spark ,同样的SQL结果每次都不同,这能用?我:???第一反应是你八成是在查一张,别人在更新数据的表吧。。(同个SQL也会去跑两遍 小声bb)排查过程过了一会儿,分析师A:看了半天了没人动数据啊,你这个Spark有问题吧?一脸蒙逼,开始排查问题。首先把SQL copy执行了下,果然每次都不一样,查了下源表 也没人在变更。SQL如下:se...
YARN : FairScheduler深入解析(NodeUpdate、assignContainer) 一、概要首先,YARN FairScheduler主要做的事情:① 处理NM心跳NodeUpdate,分配container。② 树状维护队列和任务,定时计算fair share等信息,并进行排序。本文重点分析①二、代码1、流程框架① FairScheduler接收心跳 public void handle(SchedulerEvent event) { switch (event.getType()) { .... case NODE_UPDATE:
YARN : FairScheduler深入解析(队列维护,demand、fair share计算) 一、概要首先,YARN FairScheduler主要做的事情:① 处理NM心跳NodeUpdate,分配container。② 树状维护队列和任务,定时计算fair share等信息,并进行排序。二、代码1、初始化FairScheduler在RM启动时会初始化FairScheduler, private void initScheduler(Configuration conf) throws IOException { synchronized (this) { th
Spark用HiveUDF get_json_object内存泄漏问题 1、问题背景首先我们支持Spark使用HiveUDF的实现,在某个任务中,executor GC时间普遍非常长,而Hive同样逻辑就没有问题。选取GC过长的一个executor,dump下内存,发现UDFJson对象非常大:于是推测其中存在内存泄漏。2、问题排查本文代码为社区Spark master分支a834dba120在解析SQL时我们可以看到注册UDF函数入口Analyzer.scala:发现函数注册提供qualifiedName以及不覆盖已注册的函数SessionCatalog
Hadoop: Fair Scheduler 介绍Fair Scheduler是公平分配YARN资源的方法之一。默认情况下,Fair Scheduler只基于内存来保证公平分配,通过配置yarn.scheduler.fair.cpu-scheduling-enabled为true,可以基于内存+CPU来分配资源。当只有一个application在运行时,它可以使用整个集群资源。当其他app提交后,资源会被释放并分配给新来的app,这样就能保证大家拥有大致相同的资源。Fair Scheduler还可以根据每个app的权重、优先级来确定分配资源的比例。
Hive2.3.6升级至Hive3.1.3踩坑 1、coalesce报错FAILED: SemanticException [Error 10014]: Line 197:4 Wrong arguments ''10'': Unsafe compares BETWEEN different types are disabled for safety reasons. If you know what you are doing, please SET hive.strict.checks.type.safety t
Hadoop 2.6.0升级至Hadoop 3.2.1及回滚 1、背景计划升级Hadoop版本从2.6.0-cdh5.16.1升级至开源3.2.1。Hive版本为2.3.6,与Hadoop3.2.1不兼容,于是测试Hive3.1.3。2、问题① 启动报错Exception in thread "main" java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkArgument(ZLjava/lang/String;Ljava/lang/Object;)V at org.
Hive server2慢启动问题排查与解决 1、问题描述在Hive升级到2.3.6版本后,启动Hive server2需要花费15分钟左右的时间,这对于平时调试和紧急重启影响很大。因此查看启动log,发现两处疑点:发现主要耗时就在这两处,第一次6分多钟第二次刚好5分钟。2、问题排查不多不少的5分钟让我想到了配置metastore连接的超时时间(hive.metastore.client.socket.timeout)刚好也是300s,于是去看这部分代码,并增加了些日志来排查。org/apache/hadoop/hive/metastore
Hadoop 3.2.1源码编译踩坑 编译环境和步骤可以参考这篇文章,这边主要记录一些遇到的坑。1、protobu只能用2.5.0版本2、jdk1.8,CMake3.1及以上3、用CentOS系统编译,不支持MacOS,会卡在CMake上。4、为了支持Snappy,需要去Github上下载,我用的是这个版本snappy-1.1.4.tar.gz执行./configure --prefix=/usr/local/libmake && make install随后下载hadoop-snappy支持源码并编译:gi
Spark 3.0 - AQE浅析 (Adaptive Query Execution) 1、前言近些年来,在对Spark SQL优化上,CBO是最成功的一个特性之一。CBO会计算一些和业务数据相关的统计数据,来优化查询,例如行数、去重后的行数、空值、最大最小值等。Spark根据这些数据,自动选择BHJ或者SMJ,对于多Join场景下的Cost-based Join Reorder(可以参考之前写的这篇文章),来达到优化执行计划的目的。但是,由于这些统计数据是需要预先处理的,会过时,所以我们在用过时的数据进行判断,在某些情况下反而会变成负面效果,拉低了SQL执行效率。AQE在执行过程中
Flume采集HDFS audit log日志至HDFS 1、背景HDFS的audit log产生数据量很大,速度也很快,在机器系统盘上必须立即持久化到HDFS,否则数据会被覆盖或者磁盘会打满。用于数据治理-HDFS废弃文件、Hive废弃表检测与清理。2、实现① Apache Flume官网下载最新版本的Flume。② 配置audit_log_hdfs.conf# 一个channel一个source 配置3个sinka1.sources = r1a1.sinks = k1 k2 k3a1.channels = c1# 数据来源,给c1配置s
数据治理-HDFS废弃文件、Hive废弃表检测与清理 1、背景废弃下线的业务,直接在调度系统下线了相应的调度任务,而大量历史数据仍然残留,需要清除。去年集群迁移,导致很多表有HDFS数据但Hive上没有元数据,需要清除。2、思路① 扫描HDFS目录,到分区深度(比如/user/hive/warehouse/test.db/hdfs_audit/pt=20200416,深度为6)② 采集HDFS audit log(注意过滤扫描HDFS目录时产生的脏日志)③ 给audit log和HDFS目录建外部表,互相关联去重,获得HDFS近期未访问的文件列表。
HDFS目录扫描 1、背景为了分析HDFS文件生命周期,需要获取一定深度的HDFS目录。2、实现 static final String hdfsBaseDir = "hdfs://nameservice1:8020"; static final int depth = 6; static FileSystem fs = null; static BufferedWriter out
Spark Codegen原理分析 1、背景Spark Codegen是在CBO&RBO后,将算子的底层逻辑用代码来实现的一种优化。具体包括Expression级别和WholeStage级别的Codegen。2、举例说明① Expression级别:摘一个网上的例子:x + (1 + 2)用scala代码表示:Add(Attribute(x), Add(Literal(1), Literal(2)))语法树如...
Hive权限认证模块详解 1、前言前段时间,在升级Hive版本(从Hive1.1.0升级至Hive2.3.6)的过程中,遇到了权限兼容问题。(升级相关请移步Hive1.1.0升级至2.3.6 踩坑记录)Hive1.1.0使用的是AuthorizerV1而Hive2.3.6默认是AuthorizerV2,两者相差极大。其中AuthorizerV2的权限验证极为严格,如果曾经使用V1鉴权想要使用V2的,需要修改部分代码...
Hadoop ViewFs 官方文档解读 官方文档地址:http://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-hdfs/ViewFs.html1、简介ViewFs是用来管理多个Hadoop namespace的一种方案。具体思路和一些Linux/Unix系统的挂载表十分相似。ViewFs可以生成某个namespace的视图,或者说某个集群的文件视图。简...
Presto JDBC连接官方指南与坑点记录 1、添加依赖<dependency> <groupId>io.prestosql</groupId> <artifactId>presto-jdbc</artifactId> <version>312</version></dependency>Driver为io.pre...
Hive1.1.0升级至2.3.6 踩坑记录 1、union all 左右字段类型不匹配Hive尝试跨Hive类型组执行隐式转换。隐式转换支持类型如下表:例:hive> select 1 as c2, 2 as c2 > union all > select 1.0 as c1, "2" as c1;FAILED: SemanticException Schema of both sides ...
MapReduce框架以及Hive任务提交详解 起因在切Hive任务到Spark的时候,发现Spark在处理只有Hive元数据而HDFS文件块丢失的任务时,会抛HDFS的异常InvalidInputException,而Hive在这种情况下不受影响。因此,就去找Hive在处理只有元数据的空表时做的优化。发现Hive会在读表前,setInputPaths时做一次判断,如果HDFS不存在对应的文件,则会生成一个DummyTable/DummyP...
G1日志详解 为什么要看GC日志?因为JVM的GC状态能在很大程度上衡量一个Java应用是否健康,在相同条件下能否持续稳定运行。G1和CMS在日志上会有些许的区别,由于平时用G1为主,这边就不提CMS了。G1日志详解本文参考了RedHat Blog的Collecting and reading G1 garbage collector logs,并结合了现实场景和自己的理解来分析。其中的GC日志例子为线...
记一次多线程并发问题的排查 背景最近在做离线batch任务执行的中间件,目标将线上所有的批任务都接过来,以便Hive向Spark迁移,对任务整个链路追踪(从开始预执行,到执行引擎选择,到执行日志收集,到执行完成后结果分析 是否倾斜等等)。在做自适应选择执行引擎的时候,定义了一个proposer,里面写了一些规则,来决定使用Spark还是Hive。现象在大量并发提交任务时,会出先proposer不生效的情况,应该用H...
Spark Skew Join Optimization 数据倾斜在分布式计算中是一个很常见的问题,Spark提供了一种比较便捷的方法来处理一些简单的数据倾斜场景。Spark中定位数据倾斜1、找到耗时长的stage并确定为shuffle stage。2、给所有的task按照shuffle records排序,找到最多数据的task。3、比较其他的task确定是否发生了倾斜。4、根据业务逻辑,Spark执行计划,找到倾斜的key。单表skew...
Spark Dynamic Allocation 源码解析 为什么研究Dynamic Allocation的源码?在线上任务执行的过程中,有些任务占用着Yarn资源却并行度极低,比如申请了100核cpu(现象持续时间超过了executor idle time),但那个stage只有9个running task。最关键的是,在Spark-SQL中,Dynamic Allocation可以说是必用功能之一。因此知晓其原理才能更好的理解Spark动态资源调度...
记一次Spark ThriftServer Bug排查 问题描述我们在用Spark ThriftServer(以下简称STS)用在查询平台时,遇到了以下报错:ERROR SparkExecuteStatementOperation: Error executing query, currentState RUNNING,org.apache.spark.sql.AnalysisException: org.apache.hadoop.hive.q...
使用Relational Cache加速Spark数据分析 本文转自云栖社区,作者:李呈祥(司麟)文中的Spark为阿里云EMR产品的Spark,博主之前也考虑过类似的问题,受到了一些启发,所以转载分享一下。背景Cache被广泛应用于数据处理的各个领域和方向上,在目前,计算速度远远大于IO访问速度依然是计算设备上最突出的矛盾,计算设备上的存储从HDD -> SSD -> NVMe -> Mem -> L3-L2-L1 Cach...
LockSupport详解 前言LockSupport是concurrent包中一个工具类,不支持构造,提供了一堆static方法,比如park(),unpark()等。LockSupport中的主要成员及其加载时的初始化:不难发现,他们在初始化的时候都是通过Unsafe去获得他们的内存地址,这里也可以理解为C中的指针。UnsafeUnsafe类可以参考我之前写的文章:深入理解sun.misc.Unsafe原理...
ThreadPoolExecutor详解及线程池优化 前言ThreadPoolExecutor在concurrent包下,是我们最常用的类之一。无论是做大数据的,还是写业务开发,对其透彻的理解以及如何发挥更好的性能,成为了我们在更好的coding道路上必不可少的基础。为什么用线程池?如果并发的请求数量非常多,但每个线程执行的时间很短,这样就会频繁的创建和销毁线程,如此一来会大大降低系统的效率。这就是线程池的目的了。线程池为线程生命周期的开销和资...
java 标签跳转用法解析 前言在看jdk源码ThreadPoolExecutor中的addWorker方法的时候(ThreadPoolExecutor详解),发现如下代码:首先这个retry不是java里面的关键字,所以那个retry可以用任何合法的变量名替换,例如hello:等等,下面我们再来看一下这个到底有什么用。用用看首先,下面代码会打印出1~10增加条件后的结果:如果使用retry:结论:br...
CyclicBarrier和CountDownLatch的用法与区别 前言CyclicBarrier和CountDownLatch这两个工具都是在java.util.concurrent包下,并且平时很多场景都会使用到。本文将会对两者进行分析,记录他们的用法和区别。CountDownLatchCountDownLatch是一个非常实用的多线程控制工具类,称之为“倒计时器”,它允许一个或多个线程一直等待,直到其他线程的操作执行完后再执行。CountDownL...
ThreadLocal详解 ThreadLocal是什么ThreadLocal是一个本地线程副本变量工具类。主要用于将私有线程和该线程存放的副本对象做一个映射,各个线程之间的变量互不干扰,在高并发场景下,可以实现无状态的调用,特别适用于各个线程依赖不通的变量值完成操作的场景。内部结构从上面的结构图,我们已经窥见ThreadLocal的核心机制:每个Thread线程内部都有一个Map。Map里面存储线程本地对象(k...
深入理解sun.misc.Unsafe原理 前言Unsafe类在JDK源码中被广泛使用,在Spark使用off-heap memory时也会使用到,该类功能很强大,涉及到类加载机制(深入理解ClassLoader工作机制),其实例一般情况是获取不到的,源码中的设计是采用单例模式,不是系统加载初始化就会抛出SecurityException异常。这个类的提供了一些绕开JVM的更底层功能,基于它的实现可以提高效率。但是,它是一把双刃剑:正如...
深入理解ClassLoader工作机制 前言ClassLoader类加载器可以说是Java中必学内容之一,无论是想要去研究Concurrent包、Unsafe,还是深入学习Spark等分布式计算框架,都必须对此有一定的理解。笔者在写之前也只了解了皮毛,想通过这篇文章,结合一些书籍和博客,加深对ClassLoader的理解,并分享一下。什么是class文件?xxx.class想必不陌生,JVM不会理解我们写的Java源文件, 我们必...
初探JVM原理与结构 前言这篇文章是JVM的扫盲篇,通俗易懂,对不清楚ClassLoader、Garbage Collection的可以有个大致的了解。HelloWorld在还是小白阶段的时候,我们都会写一个HelloWorld.java,然后执行javac 获得HelloWorld.classpublic class HelloWorld { public static void main(String...
阿里云分布式调度系统-伏羲 最近在做一个类似的东西,看了一篇讲FuxiSort的paper,就去详细学习了下。paper链接:链接: https://pan.baidu.com/s/1H9GdDd7lgcgWkw0tkC95Jw 提取码: gix8下文作者:陶阳宇,花名举水,阿里云高级技术专家,飞天分布式系统早期核心开发人员,开发和优化过伏羲系统中多个功能模块,参加了飞天5K、世界排序大赛等多个技术攻坚项目。在分布式...
Google Protobuf : protocol buffers Githubhttps://github.com/protocolbuffers/protobuf深入 ProtoBuf - 简介https://www.jianshu.com/p/a24c88c0526a深入 ProtoBuf - 编码https://www.jianshu.com/p/73c9ed3a4877深入 ProtoBuf - 序列化源码解析https://www.jia...
Java基础 BlockingQueue阻塞队列汇总 BlockingQueue汇总:1、概念总览与介绍https://www.cnblogs.com/duanxz/p/3400003.html2、LinkedTransferQueuehttps://www.cnblogs.com/duanxz/p/3398446.html3、SynchronousQueue同步队列https://www.cnblogs.com/...
成为Java技术专家需要掌握的知识点 好久没有写博客了,前段时间一直忙着投简历、面试,现在也差不多告一段落了。总结了一下自己的现状就是基础太渣,虽然说下面罗列的Java很多东西平常都用不到,但是如果想要成为与Java/Scala相关岗位的技术专家,就必须对这些基础非常清楚,随便聊到一个点就能谈一个面。所以就去找了很多Java相关比较不错的学习材料,这边汇总了一下,在之后工作之余慢慢学吧。1、Javadoopht...
Spark CBO CostBasedJoinReorder源码解析 1、背景最近听到阿里大神分享,讲到Spark CBO中的JoinReorder处理inner join优化,用了动态规划+遗传算法,于是处于好奇,看了一下源码,这篇博客作为记录。2、CodeCostBasedJoinReorder入口,只匹配inner join,然后reorderreorder中树的深度在(2,`spark.sql.cbo.joinReorder.dp...
Spark CBO CostBasedJoinReorder源码解析 1、背景最近听到阿里大神分享,讲到Spark CBO中的JoinReorder处理inner join优化,用了动态规划+遗传算法,于是处于好奇,看了一下源码,这篇博客作为记录。2、CodeCostBasedJoinReorder入口,只匹配inner join,然后reorderreorder中树的深度在(2,`spark.sql.cbo.joinReorder.dp...
Spark Catalyst 缓存机制 1、背景Spark SQL 用thriftserver去接,使用的时候,经常会出现找不到hdfs上xxx文件,需要手动refresh table相关的表的情况。今天偶然看到Spark Catalyst中的相关代码,突然眼前一亮,摸索着看下去,终于得到了真香。2、代码中的实现步骤位于org.apache.spark.sql.catalyst.catalog包下的Session...
Neo4j 从零开始搭建与使用 背景:做血缘分析,用来存储字段之间的血缘关系。源码:https://github.com/neo4j/neo4j1、下载源码并编译git clone https://github.com/neo4j/neo4j mvn clean package -DskipTests2、解压、启动服务复制文件,解压neo4j/packaging/standalone/...
Spark执行流程与原理 Spark执行计划分析:https://blog.csdn.net/zyzzxycj/article/details/82704713-----------先贴一张sql解析的总流程图:第一次看这图可能还不是很理解,先看一个简单sql:select * from heguozi.payinfo where pay = 0 limit 10当这个sqlText,到...
broadcast hash join和sort merge join Join操作是数据库和大数据计算中的高级特性,大多数场景都需要进行复杂的Join操作,本文从原理层面介绍了SparkSQL支持的常见Join算法及其适用场景。Join背景介绍Join是数据库查询永远绕不开的话题,传统查询SQL技术总体可以分为简单操作(过滤操作-where、排序操作-limit等),聚合操作-groupby以及Join操作等。其中Join操作是最复杂、代价最大的操作类型,也...
使用jmap和MAT分析JVM堆内存 我的一台生产环境机器每次运行几天之后就会莫名其妙的宕机,分析日志之后发现在tomcat刚启动的时候内存占用比较少,但是运行个几天之后内存占用越来越大,通过jmap命令可以查询到一些大对象引用没有被及时GC,这里就要求解决内存泄露的问题。Java的内存泄露多半是因为对象存在无效的引用,对象得不到释放,如果发现Java应用程序占用的内存出现了泄露的迹象,那么我们一般采用下面的步骤分析:1. 用工...
HBase基本架构及原理 1. HBase框架简单介绍HBase是一个分布式的、面向列的开源数据库,它不同于一般的关系数据库,是一个适合于非结构化数据存储的数据库。另一个不同的是HBase基于列的而不是基于行的模式。HBase使用和 BigTable非常相同的数据模型。用户存储数据行在一个表里。一个数据行拥有一个可选择的键和任意数量的列,一个或多个列组成一个ColumnFamily,一个Fmaily下的列位于一个HFi...
Spark执行计划分析与研究 在学习、使用和研究spark的过程中,逐渐会发现:单纯看官方文档对spark参数调优只能解决一小部分的问题,要想进一步的学习spark,进一步调优甚至在spark源码的基础上二次开发,我觉得收益最高的应该是学习执行计划了。因此在研究spark源码之前,学习执行计划 可以对整个spark执行过程、架构设计都有一个初步的认识。然而国内网站各大博客,都没有找到一个相关入门教程,笔者打算利用空余时...
Spark RDD与Partion 一、RDD的概述1.1 什么是RDD?RDD(Resilient Distributed Dataset)叫做弹性分布式数据集,是Spark中最基本的数据抽象,它代表一个不可变、可分区、里面的元素可并行计算的集合。RDD具有数据流模型的特点:自动容错、位置感知性调度和可伸缩性。RDD允许用户在执行多个查询时显式地将工作集缓存在内存中,后续的查询能够重用工作集,这极大地提升了查询速度。...
Spark性能优化之Whole-stage code generation 一、技术背景 Spark1.x版本中执行SQL语句,使用的是一种最经典,最流行的查询求职策略,该策略主要基于 Volcano Iterator Model(火山迭代模型)。一个查询会包含多个Operator,每个Operator都会实现一个接口,提供一个next()方法,该方法返回Operator Tree的下一个Operator,能够让查询引擎组装任意Operator,而不需要去考虑每...
Spark 统一内存管理模型详解 堆内内存(On-heap Memory)默认情况下,Spark 仅仅使用了堆内内存。Executor 端的堆内内存区域大致可以分为以下四大块:Execution 内存:主要用于存放 Shuffle、Join、Sort、Aggregation 等计算过程中的临时数据 Storage 内存:主要用于存储 spark 的 cache 数据,例如RDD的缓存、unroll数据; 用户内存(Us...
Spark DAG与RDD 1、DAGDAG图中,每个节点都是RDD窄依赖(也叫narrow依赖)从父RDD角度看:一个父RDD只被一个子RDD分区使用。父RDD的每个分区最多只能被一个Child RDD的一个分区使用从子RDD角度看:依赖上级RDD的部分分区 精确知道依赖的上级RDD分区,会选择和自己在同一节点的上级RDD分区,没有网络IO开销,高效。窄依赖包括:OneToOneDepen...
Spark常用算子 Spark的算子的分类 从大方向来说,Spark 算子大致可以分为以下两类: 1)Transformation 变换/转换算子:这种变换并不触发提交作业,完成作业中间过程处理。 Transformation 操作是延迟计算的,也就是说从一个RDD 转换生成另一个 RDD 的转换操作不是马上执行,需要等到有 Action 操作的时候才会真正触发运算。 2)...
spark 参数调优11-Spark Streaming spark参数调优系列 目录地址:https://blog.csdn.net/zyzzxycj/article/details/81011540 11 Spark Streamingspark.streaming.backpressure.enabled反压,默认false,详细了解请移步https://blog.csdn.net/zyzzxycj/article/detai...
Spark Streaming 反压(Back Pressure)机制介绍 背景在默认情况下,Spark Streaming 通过 receivers (或者是 Direct 方式) 以生产者生产数据的速率接收数据。当 batch processing time > batch interval 的时候,也就是每个批次数据处理的时间要比Spark Streaming 批处理间隔时间长;越来越多的数据被接收,但是数据的处理速度没有跟上,导致系统开始出现数据堆积,可...
spark 数据倾斜调优 数据倾斜应该算是一个比较麻烦的问题,笔者也是刚刚开始学习相关的调优,将看到的比较全面、清晰的几种解决方案整合了一下,并加上了一些理解与心得,供参考!首先,需要对spark执行计划有一定的基础与理解,区分若干的stage进行的不同的操作,并且将数据倾斜问题定位到某个stage是非常关键的,之后就是根据不同业务场景进行相应的处理与调优了。以下内容部分摘自:https://www.iteblog...
spark 参数调优10-Dynamic Allocation动态分配 spark参数调优系列 目录地址:https://blog.csdn.net/zyzzxycj/article/details/81011540 ⑩ Dynamic Allocation 动态分配spark.dynamicAllocation.enabled是否开启动态资源配置,根据工作负载来衡量是否应该增加或减少executor,默认false以下相关参数:spar...
spark 参数调优9-Scheduling调度 spark参数调优系列 目录地址:https://blog.csdn.net/zyzzxycj/article/details/81011540 ⑨ Schedulingspark.scheduler.maxRegisteredResourcesWaitingTime在执行前最大等待申请资源的时间,默认30s。spark.scheduler.minRegisteredRe...
spark 参数调优8-Networking网络 spark参数调优系列 目录地址:https://blog.csdn.net/zyzzxycj/article/details/81011540 ⑧ Networkingspark.rpc.message.maxSizeexecutors和driver间消息传输、map输出的大小,默认128M。map多可以考虑增加。spark.driver.blockManager.po...
spark 参数调优7-Executor behavior spark参数调优系列 目录地址:https://blog.csdn.net/zyzzxycj/article/details/81011540 ⑦ Executor behaviorspark.broadcast.blockSizeTorrentBroadcastFactory中的每一个block大小,默认4m过大会减少广播时的并行度,过小会导致BlockManager...
spark 参数调优6-Memory Management内存管理 spark参数调优系列 目录地址:https://blog.csdn.net/zyzzxycj/article/details/81011540 ⑥ Memory Managementspark.memory.fraction执行内存和缓存内存(堆)占jvm总内存的比例,剩余的部分是spark留给用户存储内部源数据、数据结构、异常大的结果数据。默认值0.6,调小会导致频繁...
spark 参数调优5-Compression and Serialization压缩与序列化 spark参数调优系列 目录地址:https://blog.csdn.net/zyzzxycj/article/details/81011540 ⑤ Compression and Serializationspark.broadcast.compress广播变量前是否会先进行压缩。默认true (spark.io.compression.codec)spark.io....
spark 参数调优4-Spark UI spark参数调优系列 目录地址:https://blog.csdn.net/zyzzxycj/article/details/81011540 ④ Spark UI这一块配置,是有关于spark日志的。日志开关,日志输出路径,是否压缩。还有一些可视化界面、端口的配置 ,之后会完善。...
spark 参数调优3-Shuffle Behavior spark参数调优系列 目录地址:https://blog.csdn.net/zyzzxycj/article/details/81011540 ③ Shuffle Behavior spark.reducer.maxSizeInFlight默认48m。从每个reduce任务同时拉取的最大map数,每个reduce都会在完成任务后,需要一个堆外内存的缓冲区来存放结果,如果没有...
spark 参数调优2-Runtime Environment 运行环境 spark参数调优系列 目录地址:https://blog.csdn.net/zyzzxycj/article/details/81011540 ② Runtime Environment 运行环境主要是一些日志,jvm参数的额外配置,jars等一些自定义的配置,稍后会完善这一块的内容。...
spark 参数调优1-Application Properties 应用基本属性 spark参数调优系列 目录地址:https://blog.csdn.net/zyzzxycj/article/details/81011540 ① Application Properties 应用基本属性spark.driver.cores driver端分配的核数,默认为1,thriftserver是启动thriftserver服务的机器,资源充足的话可以尽量给...
Spark org.apache.spark.shuffle.FetchFailedException: Too large frame: xxxxxxxx 报错如下:FetchFailed(BlockManagerId(92, hadoop1136.prod.2dfire.info, 7337, None), shuffleId=4, mapId=42, reduceId=42, message=org.apache.spark.shuffle.FetchFailedException: Too large frame: 2292863140...
java 并发: 原子类 相关文章: 1.原子类 ,锁 http://blog.csdn.net/youyou1543724847/article/details/527355102.多线程相关的3.线程安全的集合 http://blog.csdn.net/youyou1543724847/article/details/527348764.ThreadLocal http://blog.csdn.net/y...
Spark参数调优详解目录 Spark参数调优需要对各个参数充分理解,没有一套可以借鉴的参数,因为每个集群规模都不一样,只有理解了参数的用途,调试出符合自己业务场景集群环境,并且能在扩大集群、业务的情况下,能够跟着修改参数才算是正确的参数调优。本系列文章仅为个人理解与观点,如果任何地方有疑问与错误,欢迎评论指正!(上次更新时间---2018-09-0515:07)1、背景Spark2.2.1版本(现升级到了...
前端负载均衡&架构 火种培训,听了前端的架构分享,突然想知道前端是怎么处理高并发,负载均衡的。网上找了一下,转载分享~---------------------------------------------------------------------一直对浏览器到服务层这部分访问的负载均衡不是很清楚,今天看了一篇58到家shenjian的文章,觉得不错,这里大概说说自己的感想,文中的图都...
Zeppelin 搭建遇到的若干坑 最近搭建zeppelin,单独起了一台spark-thriftserver,进行hive库的查询。遇到了N多坑,这边记录一下几个主要的地方。当然,有zeppelin相关的疑问也欢迎在文末评论!1、无法启动 有好多种可能,详细可以查看/logs中得日志。可能是没有创建Log/Pid目录。可能是没有正确安装JDK,或者版本不对。确认JDK和系统版本:(我用的zeppel...
spark作业调度原理 概述 spark有多种方式调度各个计算所需的资源. 首先,每个application(即sparkContext实例)有一组独立的Executor进程。各种cluster manager(yarn Resource manager,standalone master等等)为application间的调度提供自己的方式。 其次,一个applicatio...
R树及其应用场景 地理围栏(Geo-fencing)是LBS的一种应用,就是用一个虚拟的栅栏围出一个虚拟地理边界,当手机进入、离开某个特定地理区域,或在该区域内活动时,手机可以接收自动通知和警告。如下图所示,假设地图上有三个商场,当用户进入某个商场的时候,手机自动收到相应商场发送的优惠券push消息。地理围栏应用非常广泛,当今移动互联网主要app如美团、大众点评、手淘等都可看到其应用身影。图1 地理围栏示意图 ...
GeoHash核心原理解析 引子 机机是个好动又好学的孩子,平日里就喜欢拿着手机地图点点按按来查询一些好玩的东西。某一天机机到北海公园游玩,肚肚饿了,于是乎打开手机地图,搜索北海公园附近的餐馆,并选了其中一家用餐。 饭饱之后机机开始反思了,地图后台如何根据自己所在位置查询来查询附近餐馆的呢?苦思冥想了半天,机机想出了个方法:计算所在位置P与北京所有餐馆的距离,然后返回距离<=1000米的餐馆。小得意了一会儿,机机...
一个故事讲清楚NIO 假设某银行只有10个职员。该银行的业务流程分为以下4个步骤:1) 顾客填申请表(5分钟);2) 职员审核(1分钟);3) 职员叫保安去金库取钱(3分钟);4) 职员打印票据,并将钱和票据返回给顾客(1分钟)。 我们看看银行不同的工作方式对其工作效率到底有何影响。1 BIO方式 每来一个顾客,马上由一位职员来接待处理,并且这个职员需要负责以上4个完整流程。当超过10个顾客时,剩余的顾客需要排队等...
位图索引:原理(BitMap index) 位图(BitMap)索引 前段时间听同事分享,偶尔讲起Oracle数据库的位图索引,顿时大感兴趣。说来惭愧,在这之前对位图索引一无所知,因此趁此机会写篇博文介绍下位图索引。1. 案例 有张表名为table的表,由三列组成,分别是姓名、性别和婚姻状况,其中性别只有男和女两项,婚姻状况由已婚、未婚、离婚这三项,该表共有100w个记录。现在有这样的查询: select * from tabl...
Hive on Spark 搭建&踩坑 背景:想通过jdbc连接hive的方式,用spark引擎,hive的数据,来处理业务需求。环境:一台1C2G的ECS,渣渣机器;需要搭建集群的只需要更改yarn、slaves的配置即可。接下来肯定会关注的问题就是版本了,版本的选择有千千万万种,这边的参考版本可在下面的参考配置中获得。最关键的就是版本的匹配了,之前瞎配,最后会导致各种无法解决的问题。所以还是在动手前,先好好看看官方文档吧。Hive和...
PostgreSQL ADHoc(任意字段组合)查询 与 字典化 (rum索引加速) - 实践与方案1 背景业务背景某系统数据量:20亿行左右,64个字段,原始数据多为字符串类型。(大多数字段的唯一值有限)需求:1. 查询,任意字段组合查询,求聚合值。2. 查询并发,1000左右查询并发,每次查询响应时间要求100ms以内。3. 写入、更新,要求延迟1秒内。高峰时写入、更新可达20万行/s。业务上允许批量写入。4. 要求加字段方便。5. 要求实时计算(无需建模),或者说要求加统计维度方便,不需要等建...
Mysql索引的原理、调优及其相关基础知识 索引的本质MySQL官方对索引的定义为:索引(Index)是帮助MySQL高效获取数据的数据结构。提取句子主干,就可以得到索引的本质:索引是一种数据结构。数据库查询是数据库的主要功能之一,最基本的查询算法是顺序查找(linear search)时间复杂度为O(n),显然在数据量很大时效率很低。优化的查找算法如二分查找(binary search)、二叉树查找(binary tree search)...
Dremel made simple with Parquet (Parquet 原理分析) 原版地址:https://blog.twitter.com/engineering/en_us/a/2013/dremel-made-simple-with-parquet.html写在前面:本来想翻译一下的,结果发现已经有翻译的版本了,仔细看了一下,有些许地方说的不是很清楚。就同时参考了原文,补了一些个人的理解上去。。Google 对于传说中3秒查询 1 PB 数据的 Dremel,有一篇论文:...
Hadoop 过滤,映射,谓词下推基本概念 1. Filter(过滤) 和 Project(映射) 在传统的 OLAP 系统中,在进行 Join 的时候使用过滤和映射会极大的提高性能。同样的,在 Hadoop 中使用 Filter 和 Projection 同样可以提高效率,由于减少了一个管道需要处理的数据量。在Hadoop中减少处理的数据量是至关重要的,尤其当需要通过网络和本地磁盘进行处理的时候。我们都知道,MapReduce 的shuf...
spark 持久化 cache和persist的区别 cache和persist都是用于将一个RDD进行缓存的,这样在之后使用的过程中就不需要重新计算了,可以大大节省程序运行时间。cache和persist的区别基于Spark 1.4.1 的源码,可以看到/** Persist this RDD with the default storage level (`MEMORY_ONLY`). */def cache(): this.type = pe...
zeppelin on yarn 搭建遇到的问题总结 搭建zeppelin还是非常坎坷的,从最开始git clone源码下来打包,就会等上半天,弹个包下不来之类的报错。。可以说是很扎心了,,切入正题:1、spark 2.0及以上的版本,配置yarn的时候,需要的配置:2、配置interpreter的时候,依赖的添加如spark 需要添加你的机器hadoop版本:hive则需要加上hado...
Serializable、synchronized、transient、volatile的用法与介绍 在看链表的时候,看到transient关键词:然后就去百度了一下,发现相关的有四个,这边通过个人的理解,简单概括了一下。Serializable:序列化(串行化),反序列化(并行化)在java中得数据要被序列化成字节流,才嫩和在磁盘io和网络io中传输,需要继承Serializable接口。Serializable接口类似于一个声明,没有具体的方法,只是表明使用了序列化协议。transient:1...
java中modCount 参数的用处 在看到List的add操作的时候,发现了一个全局的变量modCount:在链表尾部添加节点,发现最后有个modCount++:发现这个东西 用的地方还挺多:仔细看了一下官方给的解释:大致的意思是:modCount这个参数记录了 某个List改变大小的次数,如果modCount改变的不符合预期,那么就会抛出异常。然后看了一下,判断的条件,有这么一个check函数,经常被调用:预期的modCount:...
java native 方法和修饰符 最近开始学习java基础工具等源码,还是得更耐心些,去体会精髓的地方。。看到了ArrayList.java中的fastRemove方法:由于数组删除了中间一个元素,就必须把之后的元素向前移动一位。发现这边用的是System.arraycopy:之后就找不到它的实现源码了。查了native修饰符 才知道:"A native method is a Java method whose implemen...
zeppelin 安装 macOS 首先git clone https://github.com/apache/zeppelin.git编译,对应上spark和hadoop的版本(可能会运行很久,下载安装很多东西。。)mvn package -Pspark-2.1 -Dhadoop.version=2.6.0 -Phadoop-2.6 -DskipTests可能会报错,注意查看 是不是执行命令的时候,有些插件没装。比如:需要安装wg...
sysbench oltp基准测试 TiDB 上一篇已经有sysbench的安装教程了,补充一下 在使用sysbench之前需要安装libtool,automake autoconf,mysql。接下来详细介绍 用sysbench oltp基准测试 线下TiDB1、测试准备: 10张表 每个表填充10W条数据 最大请求时间120s#-test=tests/db/oltp.lua 表示调用 tests/db/oltp.lua 脚本进行 oltp...
sysbench的安装与使用 参数配置(with MySQL) 在使用sysbench 之前 先要避免一个坑。。(搞了一上午才跳过去):sysbench的版本有好多,每个版本对应的命令是不同的,语法也是有相当一部分的差异,所以一定要按照你安装的版本,去sysbench --help 仔细看相关的命令,不然就会一直报各种语法错误。。例如:在sysbench 0.4版本中 --help可以看到Compiled-in tests 下 有oltp基准测试的选项,而且可...
TiSpark 服务安装、部署、测试 最近比较忙,之后会整理一下TiDB&TiSpark的学习心得,以及经历过的坑。首先这边先贴2篇官方说明文档:- [TiSpark 快速入门指南](https://github.com/pingcap/docs-cn/blob/master/tispark/tispark-quick-start-guide.md) - [TiSpark 用户指南](https://github.com/pi...
阿里云PAI在线模型部署与调用 最近在做毕业设计,需要用到阿里云PAI上训练好的模型,并在java工程中调用解析。本文就以官方文档给出的例子,来具体实践。首先将跑通的模型在线部署:部署成功后,会在左侧“模型-已部署的在线模型”中找到对应的模型:(注意:在线的模型调用测试 可以查看官方文档,已经写的非常详细了 https://help.aliyun.com/document_detail/45395.html)接下来就是在java...
hive复制表 存储格式转换 在之前的博客中已经介绍过hive的四种存储格式:http://blog.csdn.net/zyzzxycj/article/details/79267635本文以ORCFile存储格式为例,详细介绍hive上转换表的存储格式的步骤和需要注意的地方。1、 查看需要转换的原表信息show create table 表名;这边的tmp_mf
hive版本查看 由于hive并没有提供-version类似的命令去查看版本,本文提供了一种较为便捷的方法。具体思路是查看hive运行时,加载的jar的信息,来查看hive版本。1、先启动hive[root@hadoop1008 ~]# hive2、新建终端窗口,连接上服务器,并输入jps查看进程找到RunJar对应的id。3、
hive四种存储格式介绍与分析比较 一、四种存储格式介绍1、TestFileTextFile文件不支持块压缩,默认格式,数据不做压缩,磁盘开销大,数据解析开销大。这边不做深入介绍。2、RCFileRecord Columnar的缩写。是Hadoop中第一个列文件格式。能够很好的压缩和快速的查询性能,但是不支持模式演进。通常写操作比较慢,比非列形式的文件格式需要更多的内存空间和计算量。
hive 表的复制 1、首先需要明确分区表和非分区表可以通过查看建表信息命令:show create table 表名;查看是否有partition 分区信息。2、非分区表的复制将表t_temp复制到新建表t_copy:create table t_copy as select * from t_temp;3、分区表的复制分区表如
Linux查看基本系统信息命令 1、CPU信息cat /proc/cpuinfo2、内存信息cat /proc/meminfo3、硬盘相关fdisk -l |grep Disk4、查看内核/操作系统/CPU信息的linux系统信息命令uname -a5、列出加载的内核模块lsmod
实时数据Storm,Spark和Samza介绍和比较 本文转自:http://www.jdon.com/bigdata/streaming-big-data-storm-spark.html 当前有许多分布式计算系统能够实时处理大数据,这篇文章是对Apache的三个框架进行比较,试图提供一个快速的高屋建瓴地异同性总结。Apache Storm 在Storm中,你设计的实时计算图称为toplogy,将其以集群方式运行,
CronExpression表达式详解和案例 控制任务定时执行的表达式1. cron表达式格式:{秒数} {分钟} {小时} {日期} {月份} {星期} {年份(可为空)}2. cron表达式各占位符解释:{秒数} ==> 允许值范围: 0~59 ,不允许为空值,若值不合法,调度器将抛出SchedulerException异常"*" 代表每隔1秒钟触发;"," 代表在指