本文首发于水木社区http://www.newsmth.net/bbscon.php?bid=715&id=14649。
当然也是我发的了,以后我计划在这里以及我的另外一个博客
http://blogger.org.cn/blog/blog.asp?name=liangbin
继续该连载,希望广大网友关注,感兴趣的网页可以转载,不注明也没关系,我只是希望推广大规模数据处理技术,如果能对大家学习工作有所帮助,十分欣慰。
我此前写过《走进搜索引擎》,翻译了《Managing gigabyte中文版》,各大新华书店有售,大规模数据处理我就不写书了,直接分享给大家。
大规模数据处理是什么?
大规模数据处理我认为就是在有限的机器资源的情况下,通过软件和硬件共同完成的G以上级别的数据计算和存储。
北大已经开了这么课程,可见重要性。
http://net.pku.edu.cn/~course/cs402/CC_Syllabus-0.3.pdf
大规模数据处理有哪些应用场合?
(1)搜索引擎,搜索引擎需要存储数10亿的有效网页,并进行快速的全文检索,这是最主要的战场。
(2)数据挖掘,日志分析,商业智能等,业务上产生的大规模日志需要进行有效地加工和分析,使用传统的通用结构化查询数据库已经很难满足特定的业务需要。
(3)科学计算,一般是那些复杂的大数据量的并行计算场合。
如何掌握大规模数据处理的各种技术?
(1)理解使用的机器和操作系统。
(2)理解业务的特性。
(3)将特定机器和特定业务发挥到极致的计算程序。
首先我们看一下我们平常使用的机器(下面进入细节)
磁盘和文件系统
现代磁盘一般被抽象为一个线性的块数据组,在顺序访问块的情况下,可以认为寻道时间是某个固定值(大约10ms左右),传输时间大约是10-100ms/MB,磁盘的外延到内延的访问速度线性递减,外延部分是读写最高效的部分。
多个盘块可以通过RAID 0的方式组在一起,在寻道时间不变的情况下,大大提高了传输数据量(可以看做是并发的磁盘访问),但是RAID 0没有冗余,数据不安全,中间计算过程使用比较适宜。RAID 0可以有硬件和软件的方法,使用硬件的方法在使用时节省更多的CPU时间。
大规模数据处理的场合,以处理日志为例,一般均为顺序处理,通常采用异步,直接IO的方法进行处理,异步的磁盘访问在内核2.?
一些其他的技巧,在大规模数据处理的过程中,基本的模型是read process write。整个过程中总是有读有写的,因此读写分离很重要,读盘和写盘不要是同一个盘,可以用iostat命令实时查询当前磁盘使用状况。
磁盘和文件系统,不同机器参数都不同,可以采用hdparam等方法进行检测和优化。必须充分了解所使用机器的特性,能够估计出执行程序大致的耗时,才可能优化到得极限。
本文介绍大规模数据处理的概念及其应用场景,包括搜索引擎、数据挖掘和科学计算等领域。文章还探讨了掌握大规模数据处理技术所需的三个关键方面:理解硬件和操作系统、理解业务特性和编写高效的计算程序。
1190

被折叠的 条评论
为什么被折叠?



