使用Python构建基于Hadoop的MapReduce日志分析平台

流量比较大的日志要是直接写入Hadoop对Namenode负载过大,所以入库前合并,可以把各个节点的日志凑并成一个文件写入HDFS。 根据情况定期合成,写入到hdfs里面。

使用Python构建基于Hadoop的MapReduce日志分析平台

咱们看看日志的大小,200G的dns日志文件,我压缩到了18G,要是用awk perl当然也可以,但是处理速度肯定没有分布式那样的给力。

使用Python构建基于Hadoop的MapReduce日志分析平台

Hadoop Streaming原理

mapper和reducer会从标准输入中读取用户数据,一行一行处理后发送给标准输出。Streaming工具会创建MapReduce作业,发送给各个tasktracker,同时监控整个作业的执行过程。

任何语言,只要是方便接收标准输入输出就可以做mapreduce~

再搞之前我们先简单测试下shell模拟mapreduce的性能速度~

使用Python构建基于Hadoop的MapReduce日志分析平台

看下他的结果,350M的文件用时35秒左右。

使用Python构建基于Hadoop的MapReduce日志分析平台

这是2G的日志文件,居然用了3分钟。 当然和我写的脚本也有问题,我们是模拟mapreduce的方式,而不是调用shell下牛逼的awk,gawk处理。

使用Python构建基于Hadoop的MapReduce日志分析平台

awk的速度 !果然很霸道,处理日志的时候,我也很喜欢用awk,只是学习的难度有点大,不像别的shell组件那么灵活简单。

使用Python构建基于Hadoop的MapReduce日志分析平台

推荐阅读:

《Python开发技术详解》.( 周伟,宗杰).[高清PDF扫描版+随书视频+代码]

Python脚本获取Linux系统信息

Python 网站文件及数据库备份脚本

Python文件处理:读取文件

如何发布自定义的Python模块

Python爬虫多线程抓取代理服务器

Python中re(正则表达式)模块详解

Python 的详细介绍请点这里
Python 的下载地址请点这里

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/c9c348c96d9a5c215a51eb1881033f58.html