executor

Spark-SQL 面试准备 2

馋奶兔 提交于 2020-01-21 01:51:30
Spark Knowledge NO.2 11.RDD缓存: Spark可以使用 persist 和 cache 方法将任意 RDD 缓存到内存、磁盘文件系统中。缓存是容错的,如果一个 RDD 分片丢失,可以通过构建它的 transformation自动重构。被缓存的 RDD 被使用的时,存取速度会被大大加速。一般的executor内存60%做 cache, 剩下的40%做task。 Spark中,RDD类可以使用cache() 和 persist() 方法来缓存。cache()是persist()的特例,将该RDD缓存到内存中。而persist可以指定一个StorageLevel。StorageLevel的列表可以在StorageLevel 伴生单例对象中找到。 Spark的不同StorageLevel ,目的满足内存使用和CPU效率权衡上的不同需求。我们建议通过以下的步骤来进行选择: 如果你的RDDs可以很好的与默认的存储级别(MEMORY_ONLY)契合,就不需要做任何修改了。这已经是CPU使用效率最高的选项,它使得RDDs的操作尽可能的快。 如果不行,试着使用MEMORY_ONLY_SER并且选择一个快速序列化的库使得对象在有比较高的空间使用率的情况下,依然可以较快被访问。 尽可能不要存储到硬盘上,除非计算数据集的函数,计算量特别大,或者它们过滤了大量的数据。否则

mybatis插件机制

末鹿安然 提交于 2020-01-20 18:52:02
默认的分页机制 通过查询时指定 RowBounds 参数,如executor查询数据得出1000条数据,然后使用 DefaultResultSetHandler 处理结果集,内部使用基于内存的分页,即对这1000条数据进行不停地跳过,最终返回特定页码范围的数据 RowBounds类包装了两个分页参数:offset和limit RowBounds.DEFAULT:代表不分页,即offset=0,limit=Integer.MAX_VALUE 插件机制 参考这里 mybatis插件机制提供了mybatis的拓展点。 根据拦截点,指定不同的Signature @Intercepts({ @Signature( type = Executor.class, method = "query", args ={MappedStatement.class, Object.class, RowBounds.class, ResultHandler.class} ) }) public class ExamplePlugin implements Interceptor { // 省略逻辑 } 然后把这个类配置到相关配置文件中。 创建了Executor之后,会执行如下代码对executor(默认是CachingExecutor)进行植入 public Object pluginAll(Object

Storm介绍及与Spark Streaming对比

谁说我不能喝 提交于 2020-01-20 01:22:00
1 Storm 介绍 Storm 是由 Twitter 开源的分布式、高容错的实时处理系统,它的出现令持续不断的流计算变得容易,弥补了 Hadoop 批处理所不能满足的实时要求。 Storm 常用于在实时分析、在线机器学习、持续计算、分布式远程调用和 ETL 等领域。 在 Storm 的集群里面有两种节点:控制节点 (Master Node) 和工作节点 (Worker Node) 。控制节点上面运行一个名为 Nimbus 的进程 , 它用于资源分配和状态监控;每个工作节点上面运行一个 Supervisor 的进程,它会监听分配给它所在机器的工作,根据需要启动 / 关闭工作进程。 Storm 集群架构如下图所示: 图 1 Storm 集群架构 Storm 集群中每个组件具体描述如下: l Nimbus :负责在集群里面发送代码,分配工作给机器并且监控状态,在集群中只有一个,作用类似 Hadoop 里面的 JobTracker 。 l ZooKeeper : Storm 重点依赖的外部资源, Nimbus 、 Supervisor 和 Worker 等都是把心跳数据保存在 ZooKeeper 上, Nimbus 也是根据 ZooKeeper 上的心跳和任务运行状况进行调度和任务分配的。 l Supervisor :在运行节点上,监听分配的任务,根据需要启动或关闭工作进程 Worker

IDEA开发java版本spark程序

こ雲淡風輕ζ 提交于 2020-01-19 18:51:40
如何去创建项目这里就不对讲了,可以参考 : https://www.cnblogs.com/braveym/p/12214367.html 先在pom.xml文件里面添加spark依赖包 <dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-core_2.11</artifactId> <version>2.3.0</version> </dependency> 新建一个java类 编写代码 package com.dtiantai; import org.apache.spark.SparkConf; import org.apache.spark.api.java.JavaPairRDD; import org.apache.spark.api.java.JavaRDD; import org.apache.spark.api.java.JavaSparkContext; import org.apache.spark.api.java.function.FlatMapFunction; import org.apache.spark.api.java.function.Function2; import org.apache.spark.api.java.function.PairFunction

Storm-源码分析-Topology Submit-Nimbus-mk-assignments

谁说胖子不能爱 提交于 2020-01-19 15:32:08
什么是"mk-assignment”, 主要就是产生executor->node+port关系, 将executor分配到哪个node的哪个slot上(port代表slot, 一个slot可以run一个worker进程, 一个worker包含多个executor线程) 先搞清什么是executor, 参考 Storm-源码分析- Component ,Executor ,Task之间关系 ;; get existing assignment (just the executor->node+port map) -> default to {} ;; filter out ones which have a executor timeout ;; figure out available slots on cluster. add to that the used valid slots to get total slots. figure out how many executors should be in each slot (e.g., 4, 4, 4, 5) ;; only keep existing slots that satisfy one of those slots. for rest, reassign them across remaining slots ;

Zookeeper 初体验之——JAVA实例

二次信任 提交于 2020-01-19 06:30:15
简介 Apache Zookeeper 是由 Apache Hadoop 的 Zookeeper 子项目发展而来,现在已经成为了 Apache 的顶级项目。Zookeeper 为分布式系统提供了高效可靠且易于使用的协同服务,它可以为分布式应用提供相当多的服务,诸如统一命名服务,配置管理,状态同步和组服务等。 Zookeeper 接口简单,开发人员不必过多地纠结在分布式系统编程难于处理的同步和一致性问题上,你可以使用 Zookeeper 提供的现成(off-the-shelf)服务来实现分布式系统的配置管理,组管理,Leader 选举等功能。 英文原文地址 : http://zookeeper.apache.org/doc/current/javaExample.html 一个简单的 Zookeeper Watch 客户端 为了介绍 Zookeeper Java API 的基本用法,本文将带你如何一步一步实现一个功能简单的 Zookeeper 客户端。该 Zookeeper 客户端会监视一个你指定 Zookeeper 节点 Znode, 当被监视的节点发生变化时,客户端会启动或者停止某一程序。 基本要求 该客户端具备四个基本要求: 客户端所带参数: Zookeeper 服务地址。 被监视的 Znode 节点名称。 可执行程序及其所带的参数 客户端会获取被监视 Znode

spark 运行关键参数

我只是一个虾纸丫 提交于 2020-01-18 04:11:49
1.num-executors 参数说明: 该参数用于设置Spark作业总共要用多少个Executor进程来执行。Driver在向YARN集群管理器申请资源时,YARN集群管理器会尽可能按照你的设置来在集群的各个工作节点上,启动相应数量的Executor进程。这个参数非常之重要,如果不设置的话,默认只会给你启动少量的Executor进程,此时你的Spark作业的运行速度是非常慢的。 参数调优建议: 每个Spark作业的运行一般设置50~100个左右的Executor进程比较合适,设置太少或太多的Executor进程都不好。设置的太少,无法充分利用集群资源;设置的太多的话,大部分队列可能无法给予充分的资源。 2.executor-memory 参数说明: 该参数用于设置每个Executor进程的内存。Executor内存的大小,很多时候直接决定了Spark作业的性能,而且跟常见的JVM OOM异常,也有直接的关联。 参数调优建议: 每个Executor进程的内存设置4G~8G较为合适。但是这只是一个参考值,具体的设置还是得根据不同部门的资源队列来定。可以看看自己团队的资源队列的最大内存限制是多少,num-executors乘以executor-memory,就代表了你的Spark作业申请到的总内存量(也就是所有Executor进程的内存总和),这个量是不能超过队列的最大内存量的。此外

Field xxxx required a single bean, but 2 were found

廉价感情. 提交于 2020-01-16 07:25:18
在一次配置多线程bean的过程中报了如下错误: Field xxx required a single bean, but 2 were found: async-task-pool: defined by method ‘asyncTaskPool’ in class path resource async-task-executor: defined by method ‘asyncTaskExecutor’ in class path resource Action: Consider marking one of the beans as @Primary, updating the consumer to accept multiple beans, or using @Qualifier to identify the bean that should be consumed 上代码: import lombok . extern . slf4j . Slf4j ; import org . springframework . context . annotation . Bean ; import org . springframework . context . annotation . Configuration ; import org .

java.util.concurrent

帅比萌擦擦* 提交于 2020-01-15 05:06:23
一、java.util.concurrent介绍 java.util.concurrent包含了许多线程安全,测试良好,高性能的并发模块。创建java.util.concurrent的目的就是要实现Collection框架对数据结构所执行的并发操作。 二、核心组件 Executor ExecutorService ScheduledExecutorService Future CountDownLatch CyclicBarrier Semaphore ThreadFactory BlockingQueue DelayQueue Locks Phaser 2.1 Executor 一个接口,其定义了一个接收Runnable对象的方法executor。 1 public class Invoker implements Executor { 2 @Override 3 public void execute(Runnable r) { 4 r.run(); 5 } 6 } 1 public void execute() { 2 Executor executor = new Invoker(); 3 executor.execute( () -> { 4 // task to be performed 5 }); 6 } 2.2 ExecutorService

初识Spark程序

狂风中的少年 提交于 2020-01-15 00:27:47
执行第一个spark程序 普通模式提交任务 : bin/spark-submit \ --class org.apache.spark.examples.SparkPi \ --master spark://hdp-node-01:7077 \ --executor-memory 1G \ --total-executor-cores 2 \ examples/jars/spark-examples_2.11-2.0.2.jar \ 10 该算法是利用蒙特·卡罗算法求圆周率PI,通过计算机模拟大量的随机数,最终会计算出比较精确的π。 高可用模式提交任务 : 在高可用模式下,因为涉及到多个Master,所以对于应用程序的提交就有了一点变化,因为应用程序需要知道当前的Master的IP地址和端口。这种HA方案处理这种情况很简单,只需要在SparkContext指向一个Master列表就可以了, 如 spark://host1:port1,host2:port2,host3:port3 ,应用程序会轮询列表,找到活着的Master。 bin/spark-submit \ --class org.apache.spark.examples.SparkPi \ --master spark://hdp-node-01:7077,hdp-node-02:7077,hdp-node-03