使用Python构建基于Hadoop的MapReduce日志分析平台
流量比较大的日志要是直接写入Hadoop对Namenode负载过大,所以入库前合并,可以把各个节点的日志凑并成一个文件写入HDFS。 根据情况定期合成,写入到hdfs里面。
咱们看看日志的大小,200G的dns日志文件,我压缩到了18G,要是用awk perl当然也可以,但是处理速度肯定没有分布式那样的给力。
Hadoop Streaming原理
mapper和reducer会从标准输入中读取用户数据,一行一行处理后发送给标准输出。Streaming工具会创建MapReduce作业,发送给各个tasktracker,同时监控整个作业的执行过程。
任何语言,只要是方便接收标准输入输出就可以做mapreduce~
再搞之前我们先简单测试下shell模拟mapreduce的性能速度~
看下他的结果,350M的文件用时35秒左右。
这是2G的日志文件,居然用了3分钟。 当然和我写的脚本也有问题,我们是模拟mapreduce的方式,而不是调用shell下牛逼的awk,gawk处理。
awk的速度 !果然很霸道,处理日志的时候,我也很喜欢用awk,只是学习的难度有点大,不像别的shell组件那么灵活简单。
推荐阅读:
Python 的详细介绍:请点这里
Python 的下载地址:请点这里
相关推荐
tomli 2020-07-26
ErixHao 2020-05-16
zhangll00 2020-05-07
香帅 2020-04-15
strongyoung 2020-04-11
sujins 2020-03-06
lixiaotao 2020-03-05
tomli 2020-03-05
WeiHHH 2020-02-23
zzjmay 2020-02-23
通过实现MapReduce计算结果保存到MySql数据库过程,掌握多种方式保存计算结果的技术,加深了对MapReduce的理解;创建maven项目,项目名称hdfs,这里不再说明。红色部分为增加内容:
大白配小猪 2020-02-09
IT智囊 2020-01-01
yogoma 2020-01-10
sujins 2020-01-09