spark
文章平均质量分 62
houzhizhen
专注大数据处理和分布式计算。
展开
-
以 http 方式启动 SparkThriftServer
beeline 连接 Spark thriftServer 的参数。原创 2024-08-14 11:12:16 · 264 阅读 · 0 评论 -
spark-shuffle-site.xml 配置项
在 NodeManager 启动 spark shuffle,可以配置 spark-shuffle-site.xml,设置 spark-shuffle 的参数。原创 2024-03-18 20:58:24 · 187 阅读 · 0 评论 -
Spark Executor decommission 原理分析
Spark Executor decommission 最初是 AWS 为了 Spot 节点和 Spot Block 节点配置的, Spot 节点仅有正常节点几分之一的价格,但是可能在任何时间收回,收回的时候仅给 120 秒的缓冲期。如果正常的 executor 地址,则从 executor 读取,如果是 fall back 地址,则调用 FallBackStorage.read 读取数据块。开启一个线程,不断检查 decomission 状态,如果 decommission 成功,则。原创 2024-03-06 14:18:13 · 807 阅读 · 0 评论 -
Spark Shuffle 方案概览
依赖 YARN 框架,Map 任务计算完后,每个 shuffle partition 的数据被推往固定的 ESS, 在 ESS 端进行合并, 合并的 ESS 称为 Merger Location。Reduce 任务计算时,先从 Merger Location 读取 Merge 后的 shuffle 数据,缺少的数据再从原来的 ESS 读取。Executor 在没有计算任务时,把 shuffle 数据迁移到正常的 Executor 和远程存储上,如bos,然后退出。原创 2024-03-05 14:12:39 · 842 阅读 · 0 评论 -
Spark 设置日志级别
查看是否有文件 ${SPARK_HOME}/conf/log4j2.properties,如果没有,则执行以下创建 log4j2 配置文件。原创 2024-02-23 17:23:01 · 542 阅读 · 0 评论 -
Spark Push Based Shuffle 原理分析
如果两个推测执行的 shuffle 数据同时达到,由于锁的限制,会先后执行时,后边的请求执行时,currentMapIndex 都等于当前 map 的 index,也不会有问题。当开启shuffle merge 时,第一个 block(仅一个) 是 ShuffleMergedBlockId, 代表所有已经 merge 的shuffle数据,后面是没有 merge 的数据(包括 shuffle 数据量为 0 和 shuffle 数据量超过限额,和其他原因失败造成没有 merge 的数据)原创 2024-02-22 09:33:00 · 977 阅读 · 0 评论 -
spark3 spark-sql explain 命令的执行过程
以 explain 命令为基础,介绍了 SPARK sql 的执行过程。原创 2023-09-19 14:23:09 · 534 阅读 · 1 评论 -
spark SQLQueryTestSuite sql 自动化测试用例
SQLQueryTestSuite 是执行这些 SQL 的地方,对于 inputs 目录的每个文件,生成一个case。存放SQL的执行结果。在执行测试时,根据最新生成的结果和。如在inputs下增加一个 sum.sql 内容如下。如果一样,则测试成功,否则失败。把SQL 添加到自动化测试用例。目录存放原始的SQL.生成对应的 resuts。原创 2023-09-14 10:42:11 · 524 阅读 · 1 评论 -
Spark Optimizer 规则详解和示例
Optimizer 是在 Analyzer 生成 Resolved Logical Plan 后,进行优化的阶段。原创 2023-09-01 17:19:56 · 588 阅读 · 0 评论 -
Spark Analyzed LogicalPlan 的生成过程用的规则
Spark SQL 解析之后是 Unresolved Logical Plan,经过 Analyzer 之后变为 Resolved Logical Plan。用的规则组成一个 batches: Seq[Batch]。一个 Batch 包含一组规则和这组规则的执行次数限制。原创 2023-08-31 08:59:05 · 129 阅读 · 0 评论 -
Spark 内存管理之 MemoryConsumer
MemoryConsumer 是内存的使用者,如 sort, shuffle。MemoryConsumer 的 spill 方法是抽象方法,由子类提供。原创 2023-08-07 17:22:53 · 613 阅读 · 0 评论 -
spark benchmark tpcds_sf5120_withdecimal_withdate_withnulls 各表分区数和记录数
tpcds_sf5120_withdecimal_withdate_withnulls 各表分区数和记录数。原创 2023-07-12 10:23:17 · 316 阅读 · 0 评论 -
Spark Join类型和适用的场景
本文档描述了 Join 类型和适用的场景。示例仅从语法上进行描述,并不一定具有实际意义。原创 2022-08-16 14:29:57 · 471 阅读 · 0 评论 -
Spark 远程调试
【代码】Spark 远程调试。原创 2022-08-09 10:38:54 · 929 阅读 · 0 评论 -
在集群上安装spark
1.从http://spark.apache.org/ 下载spark 1.2.解压到当前目录,进入spark 1.2.2.编译命令,和hadoop2.0.5兼容。export MAVEN_OPTS="-Xmx2g -XX:MaxPermSize=512M -XX:ReservedCodeCacheSize=512m" mvn -Pyarn-alpha -Dhadoop.version原创 2015-01-16 18:01:52 · 474 阅读 · 0 评论 -
为spark添加入口机
从spark master:/user/hadoop/home/setupSpark目录下以root用户执行以下命令export ENTRANCE_IP=*.*.*.*export ENTRANCE_PASSWD='******'# 把spark cluster的服务器添加到/etc/hostssshpass sshpass -p ${ENTRANCE_PASSWD}原创 2015-01-23 11:06:41 · 781 阅读 · 0 评论 -
spark和hive结合实践
上文中已经说了建立spark ,现在需要 spark访问hive的数据。hive安装0.13版。创建mysql数据库。设置hive/conf/hive-site.xml设置元数据存储在mysql中。在hive中创建一些表。把数据存到hadoop在hive中用select * from tableName limit 10;可以看到数据。执行spark-shell原创 2015-01-23 16:47:53 · 1192 阅读 · 0 评论 -
spark常用函数:transformation和action Example
1、RDD提供了两种类型的操作:transformation和action所有的transformation都是采用的懒策略,如果只是将transformation提交是不会执行计算的,计算只有在action被提交的时候才被触发。1)transformation操作:得到一个新的RDD,比如从数据源生成一个新的RDD,从RDD生成一个新的RDDmap(func):对调用map的RDD数转载 2016-09-14 16:49:36 · 482 阅读 · 0 评论 -
spark-submit source analysis
When we run spark-submit with parameters, it call spark-class shell script.The spark-submit source code:if [ -z "${SPARK_HOME}" ]; then export SPARK_HOME="$(cd "`dirname "$0"`"/..; pwd)"原创 2016-09-23 15:38:06 · 407 阅读 · 0 评论 -
spark-defaults.conf 里的参数被加载的时机
org.apache.spark.launcher.CommandBuilderUtils static final String DEFAULT_PROPERTIES_FILE = "spark-defaults.conf";org.apache.spark.launcher.AbstractCommandBuilder/** * Loads the configuration原创 2016-10-11 11:50:25 · 3977 阅读 · 0 评论 -
spark 1.6.2 spark-shell source code analysis
spark-shell source code , it is obvious that it call spark-submit with parametes --class org.apache.spark.repl.Main#!/usr/bin/env bash## Licensed to the Apache Software Foundation (ASF) under o原创 2016-09-28 09:50:37 · 678 阅读 · 0 评论 -
Spark 作业调度
概述 Spark有几个在计算中调度资源的工具。首先需要记得,正如集群模式概述中描述的那样,每个Spark应用中(SparkContext实例)都运行着一组独立的执行进程。Spark运行在的集群管理器提供了应用间调度的工具。第二,在每个Spark应用中,由不同线程提交的多个“jobs”(Spark actions)可以同时运行。在处理网络请求的应用中这很常见,比如Shark服务器就以这种方式转载 2016-10-17 15:14:32 · 603 阅读 · 0 评论 -
spark 2.0 OneForOneStreamManager
OneForOneStreamManager只能按顺序一个接一个的读取一个流的数据块。它借助于内部的StreamSate类,StreamState类里存放了客户端编号,ManagedBufffer的迭代器,以及当前读的块编号。要读的块编号必须为当前块编号加1。/** * StreamManager which allows registration of an Iterator, w原创 2016-11-16 10:53:51 · 457 阅读 · 0 评论 -
Spark2.0 shuffle service
/** Provides an interface for reading shuffle files, either from an Executor or external service. */public abstract class ShuffleClient implements Closeable { /** * Initializes the ShuffleClien原创 2016-11-14 10:32:20 · 1582 阅读 · 0 评论 -
spark2.0 Transport Service服务最多使用8线程
SparkTransportConf /** * Provides a utility for transforming from a SparkConf inside a Spark JVM (e.g., Executor, * Driver, or a standalone shuffle service) into a TransportConf with det原创 2016-11-14 13:51:22 · 339 阅读 · 0 评论 -
spark 2.0 TransportConf常量
TransportConf/** * A central location that tracks all the settings we expose to users. */public class TransportConf { private final String SPARK_NETWORK_IO_MODE_KEY; private final String S原创 2016-11-14 14:14:24 · 743 阅读 · 0 评论 -
spark 2.0 RpcHandler
/** * Callback for the result of a single RPC. This will be invoked once with either success or * failure. */public interface RpcResponseCallback { /** * Successful serialized result from ser原创 2016-11-14 14:24:02 · 708 阅读 · 0 评论 -
spark 2.0 RpcEndpointRef
RpcEndpointRef是一个远端RpcEndpoint对象的引用。 RpcEndpointRef是线程安全的。send(message:Any):Unit 单方向发送一个异步消息,发送完就忘记类型。ack[T: ClassTag](message: Any, timeout: RpcTimeout): Future[T] 发送一个消息对应RpcEndpoint.receiveAndReply()方法,并且返回一个Future对象来接收响应,响应必须在规定的时间内。这个方法仅把消息发送一次,不会重原创 2016-11-14 14:54:43 · 470 阅读 · 0 评论 -
spark 2.0 RpcEnv
RpcEnv代表一个Rpc环境信息。为了接收信息,RpcEndpoint需要把自己注册到RpcEnv。 然后RpcEnv将处理从RpcEndpoitRef或者远程结点送过来的消息,并且把消息交付给RpcEndpoint。对于RpcEnv捕获到的未处理异常,RpcEnv会使用RpcCallContext的sendFailure方法把异常发送到消息发送方,如果没有消息发送方或者异常类型是NotSeri原创 2016-11-14 15:30:35 · 366 阅读 · 0 评论 -
spark 2.0 RpcEnvFileServer
Spark RpcEnvFileServer 是RpcEnv用来为本应用程序的其它进程提供文件。一个文件服务器可以返回通用库(像hdfs或者http)处理的URI,或者它可以返回PrcEnv的fetchFile方法处理的 spark URI。/** * A server used by the RpcEnv to server files to other processes own原创 2016-11-14 16:56:53 · 414 阅读 · 0 评论 -
spark 2.0 RpcEnv NettyRpcEnv
private[netty] class NettyRpcEnv( val conf: SparkConf, javaSerializerInstance: JavaSerializerInstance, host: String, securityManager: SecurityManager) extends RpcEnv(conf) with Logging原创 2016-11-14 17:02:16 · 1377 阅读 · 0 评论 -
spark2.0 RpcAddress
RpcAddress类 是Rpc环境中的地址信息,包括主机名和端口号。RpcAddress伴生对象提供了从URI字符串中和从SaprkURL字符串中构建RpcAddress的方法。/** * Address for an RPC environment, with hostname and port. */private[spark] case class Rpc原创 2016-11-14 17:14:26 · 563 阅读 · 0 评论 -
spark 2.0 RpcCallCopntext和NettyRpcCallContext
RpcCallConText是为RpcEndpoint提供的一个回调,这个回调用来返回消息或者错误。 RpcCallContext是线程安全的,可以被任何线程调用。reply: 向发送方回复一个消息。如果发送方是一个RpcEndpoint,那么它的receive方法会被调用。sendFailure: 向发送方报告一个错误。senderAddress: 得到发送方的地址。原创 2016-11-14 17:18:10 · 419 阅读 · 0 评论 -
spark2.0 rpc.netty.Dispatcher
Dispatcher 包含一个receivers的消息队列,消息队列中的对象类型是Endpoint,一个处理消息的线程池。当接收一个消息时,把消息放到相应Endpoint的inbox队列中,然后把这个Endpoint放到receiver中。线程池中的线程不断从receivers中取出Endpoint元素,然后处理该Endpoint的一个消息。private[ne原创 2016-11-15 11:12:19 · 1277 阅读 · 0 评论 -
spark 2.0 StreamManager
/** * The StreamManager is used to fetch individual chunks from a stream. This is used in * {@link TransportRequestHandler} in order to respond to fetchChunk() requests. Creation of the * stream is原创 2016-11-15 11:51:38 · 327 阅读 · 0 评论 -
spark 2.0 NettyStreamManager -- StreamManager的实现
NettyStreamManager是StreamManager的一种实现,它从NettyRpcEnv中提供文件服务。这个管理器可以有三种资源,背后都是物理文件。第一种:“/files”: 文件列表,为SparkContext.addFile提供支持。第二种:“/jars”: 一个文件列表,为SparkContexst.addJar提供支持。第三种:任意目录,在这个目录下的所有原创 2016-11-15 13:52:27 · 922 阅读 · 0 评论 -
spark 2.0 ManagedBuffer 和 FileSegmentManagedBuffer
ManagedBuffer以字节数组的方式提供数据,并且数据不能被修改。 它的实现应该制定数据是怎么提供的。ManagedBuffer有三种具体的实现 1. FileSegmentManagedBuffer: 文件的一部分支持数据。 2. NioManagedBuffer: NIO ByteBuffer支持数据。 3. NettyManageBuffer: Netty原创 2016-11-15 13:59:19 · 1303 阅读 · 0 评论 -
spark2.0 TransportClient
/** * Client for fetching consecutive chunks of a pre-negotiated stream. This API is intended to allow * efficient transfer of a large amount of data, broken up into chunks with size ranging from *原创 2016-11-15 14:44:19 · 1052 阅读 · 0 评论 -
spark2.0 MessageHandler和 TransportResponseHandler
MessageHandler处理Netty发送或者接收的消息。一个MessageHandler和一个 Netty通道关联在一起,尽管一个 Netty通道可以为多个client对象服务。TransportResponseHandler扩展自MessageHandler,它处理服务器端响应,响应是TransportClient的请求。它跟踪请求的列表和它们的回调函数。它是线程安全的。/**原创 2016-11-15 17:31:21 · 3340 阅读 · 0 评论 -
spark 课程总结
1. 一个阶段的若干task组成一个taskset,一个excutor可以并发执行的多少个task由executor-cores决定。2. 除非用checkpoint,否则各阶段的rdd的数据都保存到内存里不释放。SPARK SQL需要的内存如果只有一个阶段的shuffle,如group by,各executor的总内存应该是输入内存的4倍。3. spark.defaultParalle原创 2016-11-23 11:24:35 · 741 阅读 · 0 评论