- 博客(123)
- 资源 (6)
- 收藏
- 关注
原创 PySpark基于Conda自定义Python运行环境
文章目录背景conda创建环境并zip打包上传zip包到hdfsspark-submit提交参数设置参考背景在使用PySpark进行开发时,面临的痛点问题之一是Driver或Executor上运行Python的包依赖的问题,解决办法之一是可以通过Conda创建环境解决Python包依赖的问题,具体为在本地机器打包Conda创建的运行环境为zip包,然后zip包上传hdfs,然后在spark-submit提交命令中添加archives和spark.pyspark.python参数的方式解决。conda创
2021-03-13 15:08:39
2800
原创 Spark源码分析之调度框架详解
文章目录原理概述源码分析Job提交Stage划分Task提交Executor端运行TaskSpark的调度框架分为资源调度和任务调度。Spark的资源调度是基于Yarn实现的,包含Driver和Executor资源的申请等,详细过程见博文 Spark源码分析之AM端运行流程(Driver) 和 Spark源码分析之CoarseGrainedExecutorBackend运行流程(Executor);本文主要讲述Spark任务调度框架的原理和源码分析。原理概述由于 Spark Scheduler内部原理
2020-06-13 16:20:12
999
原创 PySpark源码分析之Driver端基于Py4j的通信详解
文章目录概述服务端启动Python客户端编程示例概述接上文 PySpark源码分析之AM端运行流程(Driver) 的最后部分可知,PySpark是通过Py4j来实现与Scala端JVM通信交互的(注:Py4j只用于Driver端Python调用JVM中方法;Executor端是直接通过socket通信的。),PySpark主要提供一层Python API的封装。其过程主要是JVM会开启一个Socket端口提供RPC服务,Python需要调用Spark API时,它会作为客户端将调用指令序列化成字节流发
2020-05-27 10:58:24
1924
原创 Spark源码分析之分区(Partition)
文章目录概述Spark的分区器(Partitioner)RDD分区数确认窄依赖中分区数宽依赖中分区数源RDD的分区数RDD的重新分区Spark分区编程示例概述我们知道Task是Spark计算的最小计算单位,一个Partition(分区)对应一个Task,因此Partition个数也是决定RDD并行计算的关键,合理设置Partition个数能够极大的提高Spark程序执行效率。首先我们看下RDD、Partition和task的关系如下图:那Spark中分区个数是如何确定的呢?当发生shuffle时候,
2020-05-15 09:27:42
1367
原创 Spark源码分析之CoarseGrainedExecutorBackend运行流程(Executor)
接上文 Spark源码分析之AM端运行流程(Driver) 分析完了在AM端Driver的运行流程,在最后我们看到AM向Yarn提交申请Executor容器请求,请求上下文参数如下图:Yarn分配运行Executor容器流程和Yarn分配运行Driver容器流程一样(流程分析见 Spark源码分析之任务提交流程(Client)),我们继续看启动Executor的launch_container...
2020-04-18 12:08:47
1365
原创 Spark源码分析之Rpc框架
文章目录概述基本概念组件原理Message消息通信架构SparkEnv的初始化概述在Spark中很多地方都涉及网络通信,比如 Spark各个组件间的消息互通、用户文件与Jar包的上传、节点间的Shuffle过程、Block数据的复制与备份等。Spark1.6之前,Spark的Rpc是基于Akka来实现的,Akka是一个基于scala语言的异步的消息框架,但由于Akka不适合大文件的传输,在Sp...
2020-04-16 15:21:57
936
原创 PySpark源码分析之AM端运行流程(Driver)
文章目录先验知识PythonRunner启动Python过程基于Py4J的通信模型先验知识前面文章 Spark源码分析之ApplicationMaster运行流程 我们介绍了Java|Scala程序在AM端的运行流程,本文介绍Python程序在AM端的运行流程,首先Client看提交命令:spark-submit --master yarn \--deploy-mode cluster \...
2020-04-08 09:50:46
1085
1
原创 Spark源码分析之AM端运行流程(Driver)
文章目录先验知识Yarn启动AM流程AM启动Driver流程AM申请Executors流程先验知识接之前文章 Spark源码分析之任务提交流程 介绍了Client提交Spark任务的源码分析过程。本文继续分析ApplicationMaster的启动流程(源码Hadoop2.7.1),首先给出Client的提交的一些先决条件如下:提交命令:spark-submit --master yarn...
2020-04-06 10:41:58
2402
原创 Yarn源码分析之状态机机制
文章目录基本概念基本概念在Yarn中状态转移和事件驱动往往协同工作,一个处理请求首先会作为某种事件发送给集群,然后经事件调度后传给具体的事件处理器,在事件处理器中调用状态机完成状态转移处理逻辑(具体事件驱动的过程见另一篇《学习笔记之Yarn中事件驱动模型.md》)。状态机由一组状态组成,这些状态大体分为三类:初始状态、中间状态和最终状态。状态机首先由初始状态A开始运行,经过一系列的中间状态后...
2020-04-04 09:16:55
1443
原创 Yarn源码分析之事件模型
文章目录事件模型设计原理AsyncDispatcher的基本结构AsyncDispatcher的初始化AsyncDispatcher的启动注册事件处理器分发事件处理器调用事件过程参考上篇 Yarn源码分析之集群启动过程 我们介绍了Yarn的启动过程,捎带介绍了AsyncDispatcher,但感觉有必要单独详细分析下(源码版本:hadoop2.7.1)…事件模型设计原理为了更好的应对并发,Y...
2020-03-29 20:06:04
611
原创 Yarn源码分析之集群启动流程
文章目录集群启动脚本分析ResourceManager启动流程初始化流程启动流程中央事件调度器-AsyncDispatcher本文以hadoop2.7.1的源码分析(主要是最新版本考虑更多因素,源码不够纯粹)集群启动脚本分析首先我们从启动hadoop集群说起,我们一般在单点hadoop启动集群一般直接使用 sbin/start-all.sh 或 sbin/stop-all.sh ,我们直接看...
2020-03-28 14:47:09
1324
原创 Spark源码分析之任务提交流程(Client)
文章目录提交命令任务提交流程任务提交初流程YarnClusterApplication提交集群流程提交过程用户Yarn-Cluster提交shell命令提交给SparkSubmit类的cmd命令提交给集群启动driver的命令任务运行结果上传到hdfs的文件整个任务运行日志提交命令假定Yarn-Cluster方式提交:./bin/spark-submit \--class org.apac...
2020-03-20 14:05:22
1107
原创 学习笔记之Kafka幂等和事务
文章目录Producer 幂等性Kafka为啥需要幂等性?Kafka的幂等性是如何实现的?幂等性引入之后解决了什么问题?幂等性的限制条件幂等性的实现原理幂等性整体流程消息重试对顺序消息的影响幂等性的使用Producer 事务Kafka引入事务的用途?基本概念事务解决的场景事务保证事务恢复的保证事务原子性的保证事务中 Offset 的提交保证用于事务特性的控制型消息事务流程事务原理流程图寻找 TC ...
2020-03-08 09:59:25
2523
原创 一文弄懂Kafka基础理论
文章目录概述docker安装Kafka版本演进Kafka架构架构Kafka支持高并发读写核心技术页缓存技术 + 磁盘顺序写零拷贝技术(zero-copy)性能测试元数据文件存储日志的清除及压缩策略日志清除策略日志压缩策略分区和副本分区副本的分布算法Leader副本的选举副本复制原理基本原理同步方式如何处理Replica恢复?副本HA的Purgatory机制同步源码分析Controller 控制器为...
2020-03-08 09:40:00
1466
原创 一文弄懂Flink基础理论
文章目录Flink概述Flink生态为什么选择Flink?系统架构JobManager运行架构常用的类型和操作程序结构介绍并行数据流Task and Operator Chains核心原理Window&TimeWindowTimeState状态管理按组织形式的划分按照数据的划分和扩张方式Checkpoint容错机制Savepoint保存点Savepoint 和 CheckpointFlin...
2019-10-22 20:17:17
56966
8
原创 Flink项目pom编译配置
开发flink项目pom编译基本配置,如下 <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>mave...
2019-10-22 19:49:04
935
原创 Spark同步数据到线上数据库的一个坑
背景使用PySpark抽取数据同步到数据库时候(例如:clickhouse、mysql等数据库),使用RDD的foreachPartition、mapPartitions或mapPartitionsWithIndex等函数发现有的分区会执行多次,导致重复同步数据问题。原因及解决方案可以通过mapPartitionsWithIndex的函数打印partitionIndex,然后在日志查看的方式...
2019-08-23 17:09:10
1263
1
原创 一文弄懂HDFS基本原理和架构
文章目录概述HDFS架构(Hadoop1.x)ClientNameNode(Master)DataNode(Slave)Secondary NameNodeHDFS 副本存放策略NameNode工作原理SecondNameNode与NameNode交互DataNode与NameNode交互或惩罚项(penalty term)。正则化一般是模型复杂度的单调递...
2019-04-28 19:21:31
11224
原创 一文弄懂ROC、AOU和F1 Score评价指标
文章目录混淆矩阵ROCAOUPRCF1-Score多分类的F1-Score选择指标ROC 曲线和 AUC 常被用来评价一个 二值分类器 的优劣。混淆矩阵其中,TP(真正,True Positive)表示真正结果为正例,预测结果也是正例;FP(假正,False Positive)表示真实结果为负例,预测结果却是正例;TN(真负,True Negative)表示真实结果为正例,预测结果却是负例...
2019-04-20 23:58:30
16048
2
原创 一文弄懂word2vec(从源码解析)
文章目录一、简介二、两种模型1、CBOW2、Skip-Gram三、Trick1、hierarchical softmax2、negative sampling四、比较五、最佳实践一、简介Word2Vec并非指一个模型,而是2013年Google开源的一个获取词向量的工具包,由于简单高效,大大降低了词向量在工业界的应用门槛。我们先来看下Word2Vec能够取得的效果:相似词:通过向量间距离的...
2019-03-20 13:06:22
908
原创 一文弄懂PySpark原理与实践
文章目录一、PySpark 的背后原理二、文档三、pyspark读写dataframe四、通过spark-submit提交任务模板示例五、代码示例1、wordcount.py2、使用PySpark语言开发操作Hive一、PySpark 的背后原理架构图:其中白色部分是新增的Python进程,在Driver端,通过Py4j实现在Python中调用Java的方法,即将用户写的PySpark程序...
2019-03-12 11:21:20
14038
2
原创 一文弄懂Spark基本架构和原理
文章目录一、基本介绍spark是什么?弹性分布式数据集RDD基本概念基本流程二、Hadoop和Spark的区别三、RDD操作TransformationAction四、Block与RDD生成过程五、依赖关系与Stage划分六、Spark流程调度流程(粗粒度图解)执行流程(细粒度图解)七、spark在yarn上的两种运行模式(yarn-client和yarn-cluster)1、Yarn-Clien...
2019-03-11 19:28:02
10405
3
原创 Python Cheat Sheet
文章目录Python基础知识导入数据:Python备忘单SciPy备忘单:Python中的线性代数NumPy备忘单:Python中的数据分析Matplotlib备忘单:用Python绘图Python Seaborn:统计数据可视化Scikit-Learn Cheat Sheet:Python机器学习PySpark备忘单:Python中的SparkPySpark备忘单:Python中的Spark D...
2019-03-07 10:36:33
1254
原创 Python操作hdfs
下面代码中的hosts为hdfs中的namenode节点,NameNode节点查看方法见学习笔记之Hdfs的Ha高可用原理snakebite通过rpc方式操作hdfsgithub:https://github.com/spotify/snakebite文档:https://snakebite.readthedocs.io/en/latest/client.html#coding=u...
2019-03-05 17:51:49
2626
原创 一文弄懂HDFS的Ha高可用原理
文章目录一、Hadoop1.x中hdfs架构二、Hadoop2.x中hdfs架构三、Hadoop 2.x元数据四、基于 QJM 的共享存储系统的总体架构1、基于 QJM 的共享存储系统的内部实现架构图如图。2、QJM 写过程分析五、HDFS的HA参数配置六、hdfs中的DataNode节点配置一、Hadoop1.x中hdfs架构在介绍HA之前,我们先来看下Hadoop的系统架构,这对于理解HA...
2019-03-05 17:48:00
3023
1
原创 一文弄懂Java线程安全队列
文章目录一、分类二、BlockingQueue 阻塞队列三、ConcurrentLinkedQueue 非阻塞队列一、分类java中所有队列都继承至java.util.Queue接口,该接口定义了以下三组方法:方法名抛出异常返回特殊值插入add(e)offer(e)移除remove()poll()检查element()peek()Java提...
2019-03-01 17:26:45
8396
原创 服务端HTTP压力测试框架locust
locust使用篇locust安装:pip install locustiogithub:https://github.com/locustio/locust官方文档:https://docs.locust.io/en/stable/示例:locust_test.py#coding=utf-8from locust import HttpLocust, TaskSet, taski...
2019-02-24 17:20:58
439
原创 一文弄懂Netty基本架构
文章目录Netty简介Netty结构Netty线程模型服务端线程模型客户端线程模型NioEventLoopTaskNetty中的Channel工作原理线程ChannelPipeline和ChannelHandlerChannelHandlerContextChannelHandler参考:Netty 5用户指南:http://ifeve.com/netty5-user-guide/Netty...
2019-02-02 18:09:53
635
原创 一文弄懂zookeeper基本架构
1、zookeeper工作原理Zookeeper的核心是原子广播,这个机制保证了各个server之间的同步。实现这个机制的协议叫做Zab协议。Zab协议有两种模式,它们分别是恢复模式和广播模式。当服务启动或者在领导者崩溃后,Zab就进入了恢复模式,当领导者被选举出来,且大多数server的完成了和leader的状态同步以后,恢复模式就结束了。状态同步保证了leader和server具有相同的系统...
2019-02-02 18:05:05
951
原创 一文弄懂Hbase基本架构
文章目录1、存储模型2、架构模型图3、ROOT表和META表4、Region拆分原理5、HBase在HDFS中存储6、读写操作流程写操作流程读操作流程7、Hbase的容错性1、存储模型table中的所有行都按照row key的字典序排列。table在行的方向上分割为多个HRegion,每个HRegion分散在不同的RegionServer中。每个HRegion由多个Store构成(每个...
2019-02-02 18:03:00
476
原创 一文弄懂IO多路复用模型
文章目录阻塞和非阻塞IO模型阻塞 io 模型 blocking IO非阻塞 io 模型 nonblocking IOIO多路复用模型select和pollepollIO多路复用模型应用场景阻塞和非阻塞IO模型操作系统在处理io的时候,主要有两个阶段:1.等待数据传到io设备2.io设备将数据复制到user space我们一般将上述过程简化理解为:1.等到数据传到kernel内核s...
2019-02-02 17:52:43
2956
原创 一文弄懂Redis基本理论
文章目录一、Redis:简介Redis 优势Redis内存占用参考二、Redis为什么那么快?三、Redis数据结构和底层存储1、String(字符串)2、List(列表)3、Hash(字典)4、Set(集合)5、Sorted Set(有序集合)四、redis事务事务中的命令和普通命令在执行上的相同与不同redis事务不支持回滚redis乐观锁的实现Redis分布式锁的实现五、Redis持久化1....
2019-02-02 17:50:09
787
原创 一文弄懂常用分布式事务解决方案
文章目录CAP理论BASE理论常见分布式事务解决方案2PC(二阶段提交)方案:强一致性3PC(三阶段提交)方案:强一致性TCC 事务:最终一致性本地消息表:最终一致性事务消息:最终一致性Saga 事务:最终一致性命令协调各方案适用场景及对比CAP理论在一个分布式系统(指互相连接并共享数据的节点的集合)中,当涉及读写操作时,只能保证一致性(Consistence)、可用性(Availabilit...
2019-02-02 17:29:34
487
原创 基于Redis的分布式锁实现
锁:解决多个线程争抢资源的情况,保证任何时候有且只有一个线程能持有资源,并且避免死锁。关注问题:分布式、过期、宕机、代码原子性、GC、重入(lock次数)分布式锁必须保证可靠性,需满足以下四个条件:1、互斥性。在任意时刻,只有一个客户端能持有锁。2、不会发生死锁。即使有一个客户端在持有锁的期间崩溃而没有主动解锁,也能保证后续其他客户端能加锁。3、具有容错性。只要大部分的Redis节点正...
2019-02-02 17:24:33
370
原创 一文弄懂数据库索引
文章目录一、索引二、索引分类1、从逻辑角度2、从物理存储角度三、索引的实现方式1、红黑树2、B-树3、B+树4、B/B+树和红黑树区别(1)为什么用B/B+树这种结构来实现索引呢?(2)红黑树 和 b+树的用途有什么区别?5、B-树和B+树区别四、MySQL索引实现1、MyISAM索引实现2、InnoDB索引实现3、MyISAM和InnoDB区别五、索引的几种运用场景1、联合索引运用-最左匹配原则...
2019-02-02 17:21:03
946
原创 一文弄懂Java中的线程池
文章目录一、线程二、线程池1、ThreadPoolExecutor2、ForkJoinPool三、Java通过Executors提供的线程池四、Spring中线程池1、ThreadPoolTaskExecutorXML配置注解配置2、ThreadPoolTaskSchedulerXML配置注解配置五、监听Future任务结果的解决方案1、Guava中ListenableFuture实现(1)对任务...
2019-02-02 17:10:16
761
原创 一文弄懂Java8新特性之函数式编程
文章目录lambda表达式函数式接口Stream1、Stream的创建2、Stream操作(1)中间操作方法filterdistinctlimit/skipmapflatMapconcatpeeksortedforEachallMatch/anyMatch/noneMatchmin/max/countfindFirst/findAnycollect,将流转换为其他形式reduce3、stream和...
2019-02-02 16:50:26
560
nm-local-dir(删除jar版).zip
2020-04-06
状态机可视化png.zip
2020-04-04
scrapy入门例子-tutorial
2015-08-29
jQuery特效之浮动div模式框
2015-01-26
理解的ThreadLocal类的相关源码(用于博文引用源码下载)
2014-08-09
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人