Linux内核进程调度是一个极其重要的模块,实现多任务切换,同时为了兼顾系统性能,调度器的设计需要足够精巧,最近仔细回顾了一下Linux内核进程调度器CFS的相关内容,整理记录一下。
C程序的内存布局
学习了操作系统的一些基本知识之后,有必要对C程序的结构进行一下学习,事实上它并不是那么简单,这篇文章就对C语言程序在内存中的布局进行一下小结。
Bochs模拟器的使用
很早之前就在琢磨,能不能自己撸一个简单的操作系统内核出来,但是一直没有实质性行动。最近受师兄的启发,要开始造轮子了,不然编程能力是很难有提高的,就重拾当初的想法了。
Spark Streaming数据接收和并行度的关系
Spark Streaming在运行过程中数据来源分为两种,一种是从例如hdfs的文件系统直接读取,另外就是实时从网络接收数据,其中后者需要由运行在worker节点上的receiver来完成,具体接收数据过程在源码分析中已经简要介绍。这次就receiver和系统并行度的关系进行探讨和实验。
Spark作业调度日志获取与分析
Spark在Standalone模式下,作业调度采用中心调度方式。按Job-> Stage-> TaskSet-> run on executor步骤来实现作业的调度执行,因为折腾自己的一点东西需要获取Spark作业调度的详细信息,这里把获取方式和对日志的分析记录一下。
Spark作业调度中stage的划分
Spark在接收到提交的作业后,会进行RDD依赖分析并划分成多个stage,以stage为单位生成taskset并提交调度。这里stage划分是一个设计的亮点,这两天学习一下。
Spark中RDD转换操作的具体实现--以map为例
Spark使用RDD(弹性分布式数据集)来抽象分布式内存,提供一种抽象数据类型,具有高度容错的特点,对编程者提供了一种极为便捷的数据操作方式。Spark内部提供了丰富的RDD转换操作为编程者提供了丰富的RDD转换接口。学习Spark编程的第一步就是要了解一些常见的转换操作,最近看了一些常见的Spark中RDD转换操作,这里以最简单的map操作来学习一下Spark内部到底是如何进行RDD转换计算的。
Paxos算法的一种简单理解
Lamport提出的Paxos算法是一种基于消息传递且具有高度容错特性的一致性算法,被誉为分布式系统的基石。目前已经有很多成熟的分布式系统使用Paxos,如Google的Chubby、Megestore和Spanner,Zookeeper等。因为Lamport在论文中解释这个算法时将其描述成一种游戏,一般人从论文中很难将其和分布式系统中的一致性联系起来。搞不清楚Paxos算法的目的和在分布式存储系统中的应用(Lamport觉得是人们无法理解他的幽默)。