已经毕业工作快满两年了,从一家垄断国字号企业跳到某电商平台,应该是我的职业生涯第一跳了,也很荣幸地投身入互联网浪潮之中。没过多久就融入了这家朝气蓬勃的大家庭。回汉后,起初打算做机器学习、数据挖掘的相关工作,以能延续研究生的课题。不过作为新东家BI组第一位员工,不得不着手搭建基础数据平台。
五个月,小半年,我们三兄弟的工作成果也是比较显著,在被领导否定第一版数据平台后,开始重新搭建新js埋点作为数据源的基础数据平台。
1. jugg,第一版数据平台,flume+hadoop+hive的架构
flume,作为读取本地历史日志文件的管道,监听数据,采集数据,将其日志文件按行读取到集群的HDFS之中供hadoop做处理。
缺点: 单节点,未做冗余备份,加上本身的不稳定性,数据容易丢失,在机器死机就会丢失数据。
由于目标框架是一个分布式的对日志进行海量数据收集框架。
在hadoop上部署一个flume agent(使用flume把日志数上传到hdfs中),需将flume部署到每台服务器中去收集数据。
hadoop,对读入的hdfs文件数据进行mr处理,根据策略绘制访问黑名单(如一天内超过10000次PV,5秒20次PV),需经过map,分片,排序,重组,reduce一系列操作。然后通过黑名单过滤日志文件,将数据入到hive之中。
由于数据源为历史数据日志,误差(用户来源统计不准,),效率(没有做异步处理,一套流程走下来耗时),耦合高,成为这一版被否掉的重要原因。
2. 基础数据平台做出划分(PC端数据平台+移动端数据平台)
PC端数据平台,piwik.js +webservice + kafka + hadoop +hive
piwik.js,js作为用户埋点,返回用户点击行为
Sermon,自定义名称的webservice,搭建于nginx反向代理集群之上,接受js回传数据,再将数据传递到kafka,此时觉得为kafka的生产者。
Kafka,kafka作为集群依赖于zookeeper环境,较Flume更加稳定和可靠,我们为其编写消费者程序来读取kafka中的topic并上传到分布式的HDFS之中,命名为magina(dota中的敌法师,专门用于净化魔法值,该消费者亦为此意),并把mapper用于消费处理,极大提升处理效率。
hadoop,hadoop2.5-cdh重新调整环境
hive: 编写hiveF语句和dump脚本,新加上hive到Mysql的落地处理,结合业务一些比较复杂的,将大表(Hive表中的数据)fetch到Mysql中。
3.爬虫
爬虫爬取商品销量方案1:scrapy+casperjs,scrapy控制爬取流程,casperjs模拟浏览器内核解析js返回结果。
爬虫爬取商品销量方案2:公司机密,保密。
原文地址:http://blog.csdn.net/xpmars/article/details/42435441