如有不对或不足的地方请指正。 RDD可以很好地适用于支持数据并行的批量分析应用,包括数据挖掘,机器学习,图算法等,因为这些程序通常都会在很多记录上执行相同的操作。RDD不太适合那些异步更新共享状态的应用,例如并行web爬行器。因此,我们的目标是为大多数分析型应用提供有效的编程模型,而其他类型的应用交给专门的系统。 关于RDD详见: 弹性分布式数据集:一种基于内存的集群计算的容(二):弹性分布式数据集(RDD) 硬件环境: 开发机器是 3台 Intel(R) Xeon(R) CPU E5440 @ 2.83GHz双核 2.8G 4G内存 操作系统: Red Hat Enterprise Linux Server release 5.7 (Tikanga) Spark配置: 三节点,每个节点2G内存,14 个维度,100个类别,10次迭代,使用不同大小样例文件分析。 结论1:定义0.8(数据量/2048/3)作为三节点的阈值,当运行数据在阈值内时性能成单调递增,当超过该阈值时,性能急剧下降,当超过阈值2%时性能下降53.11937%,当超过34.01326%,性能下降70.80896% 以下是测试数据: 序号 数据文件大小(M) 记录条数 耗时 数据文件/耗时 数据/内存 数据/内存/节点数 0 33.33 147,106 10 3.333344 0.016274 0.005425 1 100 441,319 13 7.692317 0.048828 0.016276 2 166.67 735,533 15 11.11118
存档在 ‘淘宝系技术博客’ 分类
Spark 性能测试报告
2012年2月15日关于squid请求源服务器的响应中带Vary头
2012年2月8日1. 源服务器返回的响应头不带”Vary: Accept-Encoding” 不管客户端请求头中带不带”Accept-Encoding: gzip,deflate”,squid会只缓存一份对象 1)如果第一个MISS的请求,客户端请求头中带”Accept-Encoding: gzip,deflate”。 源服务器会返回带gzip压缩的对象给squid,squid会把这个gzip压缩之后的对象保存下来。 以后不管客户端的请求头中是否带”Accept-Encoding: gzip,deflate”,都会把这个gzip的对象返回给client。 2)如果第一个MISS的请求,客户端请求头中不带”Accept-Encoding: gzip,deflate”。 源服务器会返回不压缩的对象给squid,squid会把这个没经过压缩的对象保存下来。 以后不管客户端的请求头中是否带”Accept-Encoding: gzip,deflate”,都会把这个没压缩的对象返回给client。 2. 源服务器返回的响应头中带”Vary: Accept-Encoding” squid会根据客户端每次不同的请求头中”Accept-Encoding”包含的值,squid会缓存多份对象,可能每份对象都相同。 1)客户端请求头中不带”Accept-Encoding”。squid先判断是否存在以url为key的StoreENtry。 2)如果不存在,squid请求原服务器,源服务器会返回一个不带压缩的对象给squid,squid会把这个没经过压缩之后的对象保存下来。 存放的时候squid先创建一个StoreEntry(VaryData)对象,对象的http响应头是squid内部对象头,对象body部分保存这个url包含不同的 accept-encoding值和这个值对应的StoreEntry的KEY。 00002472 48 54 54 50 2f 31 2e 30 20 32 30 30 20 49 6e 74 |HTTP/1.0 200 Int| 00002482 65 72 6e 61 6c 20 6d 61 72 6b 65 [...]
硬件虚拟化技术浅析
2012年2月7日==================================== 目录 1 硬件虚拟化技术背景 2 KVM的内部实现概述 2.1 KVM的抽象对象 2.2 KVM的vcpu 2.3 KVM的IO虚拟化 2.3.1 IO的虚拟化 2.3.2 VirtIO 3 KVM-IO可能优化地方 3.1 Virt-IO的硬盘优化 3.2 普通设备的直接分配(Direct Assign) 3.3 普通设备的复用 =================================== 1 硬件虚拟化技术背景 硬件虚拟化技术通过虚拟化指令集、MMU(Memory Map Unit)以及IO来运行不加修改的操作系统。 传统的处理器通过选择不同的运行(Ring 特权)模式,来选择指令集的范围,内存的寻址方式,中断发生方式等操作。在原有的Ring特权等级的基础上,处理器的硬件虚拟化技术带来了一个新的运行模式:Guest模式[1],来实现指令集的虚拟化。当切换到Guest模式时,处理器提供了先前完整的特权等级,让Guest操作系统可以不加修改的运行在物理的处理器上。Guest与Host模式的处理器上下文完全由硬件进行保存与切换。此时,虚拟机监视器(Virtual Machine Monitor)通过一个位于内存的数据结构(Intel称为VMCS, AMD称为VMCB)来控制Guest系统同Host系统的交互,以完成整个平台的虚拟化。 传统的操作系统通过硬件MMU完成虚拟地址到物理地址的映射。在虚拟化环境中,Guest的虚拟地址需要更多一层的转换,才能放到地址总线上: Guest虚拟地址 -> Guest物理地址 -> Host物理地址 ^ ^ | | MMU1 MMU2 其中MMU1可以由软件模拟(Shadow paging中的vTLB)或者硬件实现(Intel EPT、AMD NPT)。MMU2由硬件提供。 系统的IO虚拟化技术,通常是VMM捕捉Guest的IO请求,通过软件模拟的传统设备将其请求传递给物理设备。一些新的支持虚拟化技术的设备,通过硬件技术(如Intel VT-d),可以将其直接分配给Guest操作系统,避免软件开销。 [1]X86处理器的生产厂商有自己的称谓,比如英特尔将Guest模式称为non-root [...]
sheepdog内部实现机制
2012年2月7日简介:
Sheepdog[0]是由日本NTT实验室的MORITA Kazutaka专为虚拟化平台创立的分布式块存储开源项目, 于2009年开源[1].从2011年9月开始, 一些淘宝的同学加入了Sheepdog项目, 以及相关开源项目比如Corosync[2]…
多存储设备混合使用raid卡配置问题
2012年2月6日背景说明:
oceanbase的updateserver服务使用了SAS+SSD的混合存储方式,其中SAS盘用于存储实时记录的操作日志,SSD用于存储定期转储的内存数据。updateserver写操作日志的特点是大量的小块数据追加