随笔分类 - Spark
摘要:问题:我用 sqoop 把 Mysql 中的数据导入到 hive,使用了--delete-target-dir --hive-import --hive-overwrite 等参数,执行了两次。 mysql 中只有 20 条记录。在 hive shell 中,查询导入到的表的记录,得到结果 20 条
阅读全文
摘要:为了开发测试方便,想直接在 IDEA 里运行 Spark 程序,可以连接 Hive,需不是打好包后,放到集群上去运行。主要配置工作如下: 1. 把集群环境中的 hive-core.xml, hdfs-site.xml, core-site.xml 三个文件复制一份,放到 resource 目录下。网
阅读全文
摘要:HDP 上安装了 Hive3.1 和 Spark2, 提交 Spark 作业时,报找不到 Hive 中表的问题 但是查一了下 hive 表,明明是存在这个表的。查看日志,注意到如下的一段日志。 没修改值之前,我在 Spark-shell 里创建了一张 hive 表,发现其创建的位置是 spark.s
阅读全文
摘要:Spark 中 RPC 部分的涉及了几个类,有点晕,在此记录一下 1. RpcEndpoint: RPC的一个端点。给定了相应消息的触发函数。保证 `onStart`, `receive` and `onStop` 函数按顺序触发。 2. RpcEndpointRef: 一个远程的 RpcEndpo
阅读全文
摘要:Application 启动的时候: 1. 会在 SparkEnv 中实例化 BlockManagerMaster 和 MapOutputTracker,其中 (a) BlockManagerMaster: 对整个集群的 Block 数据进行管理的 (b) MapoutputTrackerMaste
阅读全文
摘要:1. 如果 Spark 中 CPU 的使用率不够高,可以考虑为当前的程序分配更多的 Executor, 或者增加更多的 Worker 实例来充分的使用多核的潜能 2. 适当设置 Partition 分片数是非常重要的,过少的 Partition 分片数可能会因为每个 Partition 数据量太大而
阅读全文
摘要:有时候,Transformation 的 RDD 非常多或者具体 Transformation 产生的 RDD 本身计算特别复杂和耗时,此时我们必须考虑对计算结果数据进行持久化。与 persist 不同,persist 是优先将结果放入内存,内存不够的情况下,会放在磁盘。无论是放内存还是磁盘,都是不
阅读全文
摘要:1. CacheManager 管理缓存,而缓存可以是基于内存的缓存,也可以是基于磁盘的缓存 2. CacheManager 需要通过 BlockMananger 来操作数据; 3. 当 Task 运行的时候会调用 RDD 的 compute 方法来进行计算,而 compute 方法会调用 iter
阅读全文
摘要:1. RDD1 和 RDD2 进行 Join 操作, 其中采用采样的方式发现 RDD1 中有严重的数据倾斜的 Key 第一步: 采用 Spark RDD 中提供的采样接口,基于采样的数据可以计算出哪个(哪些)Key 的 Values 个数最多 第二步:把全休数据分成两部分,即把原来一个RDD1 变成
阅读全文
摘要:某人,并未提他的名字,是因为看的视频是1年前的,视频里他吹得厉害。我看视频时,查了一下他在视频里说的要做到的东西,结果上网一查,就看到了很多人说他骗了钱后,就不管交了学费的人了。真假无从查起。但是无风不起浪。也真没查到他说的要做出来的东西发布出来。所以这里不那人的名字了。只把他说的知识拿过来,做些笔
阅读全文
摘要:Task的执行流程: 1. Driver端中的 CoarseGrainSchedulerBackend 给 CoarseGrainExecutorBacken 发送 LaunchTask 消息 2. CoarseGrainExecutorBacken 在收到消息后,首先会反序列化 TaskDescr
阅读全文
摘要:1. 数据序列化 默认使用的是Java自带的序列化机制。优点是可以处理所有实现了java.io.Serializable 的类。但是Java 序列化比较慢。 可以使用Kryo序列化机制,通常比Java 序列化机制性能高10倍。但是并不支持所有实现了java.io.Serializable 的类。使用
阅读全文
摘要:TaskScheduler 原理: 1. DAGScheduler 在提交Taskset给底层调度器的时候是面向接口TaskScheduler的, 这符合面向对象中依赖抽象原则,带来底层资源调度器的可插拔性, 导致Spark可以运行在众多的资源高度器模式上。例如: Standalone, Yarn,
阅读全文
摘要:Spark Executor 工作原理: 1. 在CoarseGrainedExecutorBackend启动时向Driver注册Executor,其实质是注册ExecutorBackend实例,和Executor实例之间没有直接关系 2. CoarseGrainedExecutorBackend
阅读全文
摘要:Spark Streaming 为了实现容错特性,接收到的数据需要在集群的多个Worker 节点上的 executors 之间保存副本(默认2份)。当故障发生时,有两种数据需要恢复: 1. 已接收并且有副本的数据。当只有一台worker 发生故障时,这些数据不会丢失 2. 已接收但还没有副本的数据。
阅读全文
摘要:Master对其它组件注册的处理: Master如果决定接收注册的Worker,首先会创建WorkerInfo对象 ,来保存注册的Worker的信息。 注意:SparkContext 初始化时,会实例化SparkDeploySchedulerBackend,其内部有AppClient,而AppCli
阅读全文
摘要:1. Spark 程序在运行的时候分为 Driver 和 Executor 两部分; 2. Spark 的程序编写是基于 SparkContext 的,具体来说包含两方面: a) Spark 编程的核心基础 RDD, 是由 SparkContext 来最初创建 b) Spark 程序的调度优化也是基
阅读全文
摘要:Hadoop Yarn解析: 1. Yarn是Hadoop推出整个分布式(大数据)集群的资源管理器,负责资源的管理和分配,基于Yarn,我们可以在同一个大数据集群上同时运行多个计算框架。例如:Spark、MapReduce、Storm等 2. Yarn基本工作流程: 注意:Container要向No
阅读全文
摘要:从Spark Runtime的角度来讲由五大核心对象:Master、Worker、Executor、Driver、CoarseGrainedExecutorBacked; Spark在做分布式集群系统设计的时候,最大化功能独立、模块化封装具体独立的对象、强内聚、松耦合。 Spark集群的启动及任务提
阅读全文
摘要:提交Spark程序的机器一般一定和Spark集群在同样的网络环境中(Driver频繁和Executors通信),且其配置和普通的Worker一致 1. Driver: 具有main方法的,初始化 SparkContext 的程序。Driver运行在提交Spark任务的机器上。 Driver 部分的代
阅读全文