苦逼呀,这两天我在分析了爬虫的日志,和一小部分的cdn的日志。爬虫的日志收集cs是我们自己写的一套收集系统。  现在需要做的是离线分析。  也就是对接工单系统,可以方便的自动分析特定的日志。 以前有个哥们是个geek,分析的程序是groovy写的,虽然他已经在很大程度让我爽了很多,但是不怎么好改。  java派系的那些东西,玩不转呀。

最近爬虫很是凶猛呀。原文地址是,http://xiaorui.cc

      那一开始是用python写的,逻辑也简单,就是拆分成多个文件,然后多进程处理,最后的结果入库。 总起来说,速度还是有些慢。一个5g的日志,经常干到最少40分钟。 因为日志会做域名的抽取。   爬虫log里面肯定是有很多域名的, 但是域名都是详细的域名,所以需要抽取他的一级域名。  就这个操作是很费cpu的。    

      其实做这件事情前,我也考虑过用pig,毕竟以前用pig从hadoop里面抽取访问次数和ip排名。 只是我印象中 pig 没有regex的功能,也就没有搜他的文档,直接用python搞的。 


 今天看了下文档,发现 尼玛 是支持regex的。哎。。 坑死了。   简单介绍下pig

Apache Pig是用来处理大规模数据的高级查询语言,配合Hadoop使用,可以在处理海量数据时达到事半功倍的效果,比使用Java,C++等语言编写大规模数据处理程序的难度要小N倍,实现同样的效果的代码量也小N倍。Apache Pig为大数据集的处理提供了更高层次的抽象,为mapreduce算法(框架)实现了一套类SQL的数据处理脚本语言的shell脚本,在Pig中称之为Pig Latin,在这套脚本中我们可以对加载出来的数据进行排序、过滤、求和、分组(group by)、关联(Joining),Pig也可以由用户自定义一些函数对数据集进行操作,也就是传说中的UDF(user-defined functions)。


Pig有两种运行模式:Loca模式和MapReduce模式。当Pig在Local模式下运行时,Pig只访问本地一台主机;当Pig在MapReduce模式下运行时,它将访问一个Hadoop集群和HDFS的安装位置。这时,Pig将自动地对这个集群进行分配和回收。因为Pig系统可以自动对MapReduce程序进行优化,所以当用户使用Pig Latin语言进行编程的时候,不必关心程序运行的效率,Pig系统将会自动对程序进行优化,这样可以大了节省编程时间。Pig的Local模式和MapReduce模式都有三种运行方式,分别为:Grunt Shell方式、脚本文件方式和嵌入式程序方式。


Pig是一种编程语言,它简化了Hadoop常见的工作任务。Pig可加载数据、表达转换数据以及存储最终结果。Pig内置的操作使得半结构化数据变得有意义(如日志文件)。同时Pig可扩展使用Java中添加的自定义数据类型并支持数据转换。

本来想周六写个pig的文档,结果 mac下pig装的有问题。公司的那个测试机还连不上,尼玛。    现在正在下载vm,过会给大家演示下。 

总起来说,pig的速度要比python要快不少,尤其是从hadoop输入文件的时候。  毕竟像python这样靠着streaming管道取数据,性能不是那么太靠谱。 




对Python及运维开发感兴趣的朋友可以加QQ群 : 478476595 !!!
{ 2000人qq大群内有各厂大牛,常组织线上分享及沙龙,对高性能及分布式场景感兴趣同学欢迎加入该QQ群 }

另外如果大家觉得文章对你有些作用!   帮忙点击广告. 一来能刺激我写博客的欲望,二来好维护云主机的费用.
如果想赏钱,可以用微信扫描下面的二维码. 另外再次标注博客原地址  xiaorui.cc  ……   感谢!
暂无相关产品

3则回应给“使用pig来实现快速的分析爬虫及cdn日志”

  1. 沈灿说道:

    带我,ruishen

  2. ruby说道:

    上次在群里说,写个详细的pig,请问详细的在哪里?

发表评论