系统在现网运行中,很多错误日志没能及时的分析,导致系统的问题总是用户发现,然后告诉我们来解决,而不是我们主动的去积极解决系统中的问题,因此想通过业余时间做一个日志分析系统,主要是把应用层和消息传输模块抛出的日志做分析,方便定位问题。在多核cpu的时代,并发编程是一个趋势,为了更好的利用现网和测试环境的4核cpu,需要先研究一下分布式并发框架hadoop。
什么是hadoop?
hadoop是apache下面的一个分布式并行计算框架,是从lunece中抽取出来的一个框架。hadoop的核心设计思想是:mapreduce和hdfs,mapreduce是google提出的一个软件架构,用于大规模数据集(大于1tb)的并行运算。概念map(映射)和reduce(化简),和他们的主要思想,都是从函数式编程语言借来的,还有从矢量编程语言借来的特性;hdfs是hadoop distributed file system的缩写,即:hadoop分布式文件系统,为分布式计算存储提供底层支持。注:mapreduce (google mapreduce 论文点击这里),gfs(google file system)和bigtable是google的三大核心技术。
hadoopmapreduce介绍
map(映射)和reduce(化简)是分开处理的,map是将一个任务分解为多个任务执行,reduce是将多个任务汇总起来得到想要的结果。把一个list拆解为多个放到线程池中启动多个线程计算list中值,然后把多个任务返回的结果合并为一个总的结果其实就是一个简单的mapreduce的应用。
在hadoop官方文档(单击这里)介绍了hadoopmapreduce的三个步骤,map(主要是分解并行的任务),combine(主要是为了提高reduce的效率),reduce(把处理后的结果再汇总起来)
hdfs介绍
由上图可以看出,hdfs是由client,datanodes,namenode3部分组成成(详细介绍点击这里)。namenode可以看作是分布式文件系统中的管理者,主要负责管理文件系统的命名空间、集群配置信息和存储块的复制等。namenode会将文件系统的meta-data存储在内存中,这些信息主要包括了文件信息、每一个文件对应的文件块的信息和每一个文件块在datanode的信息等。datanode是文件存储的基本单元,它将block存储在本地文件系统中,保存了block的meta-data,同时周期性地将所有存在的block信息发送给namenode。client就是需要获取分布式文件系统文件的应用程序。这里通过三个操作来说明他们之间的交互关系(via 岑文初《分布式计算开源框架hadoop介绍》)
hadoop非常适合海量数据分析,我们系统中的错误日志如果是gb级别的时候,估计问题早就被用户发现了。所以这种日志的分析只是借鉴hadoop的思想,具体的实现在concurrent基础上就好了。最后共享06年doug cutting一个ppt一份,大家围观之!
hadoop
view more documents from longhao.
更多阅读:
1:分布式计算开源框架hadoop介绍
2:hadoop中的集群配置和使用技巧
3:hadoop基本流程与应用开发
4:用 hadoop 进行分布式并行编程
原文地址:分布式开源并发框架hadoop简介, 感谢原作者分享。