redis
c语言编写的kv非关系型数据库,每秒可以处理超过10万次的读写,是一直性能最快的kvDB,比ememcached快得多。一个string能存储的最大容量是512M。redis是单进程单线程,利用了队列技术将并发访问变为串行访问,消除了传统数据库串行控制的开销。
RDB是redis database的缩写,是默认的持久化方式。优点:只有一个文件dump.rdb,方便持久化。容灾星好,可以保存到磁盘。
aof持久化方式(append only file)将redis执行的每次写命令记录到单独的日志文件中,当重启redis会重新将持久化日志文件恢复数据,不过aof文件比rdb文件更大,回复速度更慢。数据集大的时候,比rdb启动效率低
两种方式同时开启时,优先aof
集群之间是异步复制,使用的哈希槽,16384个
spark
local、standalone、yarn和mesos。作业提交可以yarnclient和yarncluster模式。
yarn-cluster:driver相当于就是在NodeManager的某一个ApplicationMaster
yarn-client:driver还是在本地启动的一个进程
driver:作业主进程,执行实际的代码,有main函数,是程序入口。可以申请资源、向master注册信息,负责作业的调度和解析
Executor:是spark程序中的一个jvm进程,负责执行具体任务。Spark应用启动时,Executor同时被启动,并且伴随着Spark程序的生命周期而存在。如果有Executor节点发生了故障,程序也不会停止运行,而是将出错的Executor节点上的任务调度到其他Executor节点运行。
Executor运行Spark作业中具体的任务,并且将执行结果返回给Driver。
master节点常驻master守护进程,负责管理worker节点,我们从master节点提交作业
worker节点常驻worker守护进程,与master节点通信,并管理executor进程
driver就是main()并构建sparkcontext对象,提交应用后就会启动一个对应的driver进程。dirver先申请executor。一个worker、可以有多个ex,每个ex都有一个线程池,每个线程可以执行一个task,ex执行完之后可以将结果返回给driver,每个ex执行的task都属于同一个应用