打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
大数据项目,ETL离线数据,日志分析系统

大数据的价值之一就是数据可视化。

大数据(bigdata),看着挺高大上的,其实就是数据量大了,想从中发现商业规律,找到商业价值。从事三年多大数据开发和数据分析工程师,说说平时工作做的数据可视化的事吧。
话说那天风和日丽,某个人突发奇想,创建了个公司,公司成立以后发展不错,拿到了融资。业务越来越大、用户越来越多,产生的数据越来越多。后来美国有个数据科学家说,同志们,数据很重要,数据是21世纪的石油,谁能提前利用、挖掘了数据,谁就能挣钱,就这样红果果、赤裸裸的诱惑你,一夜之间,大数据的概念产生了。


初期,说到大数据,大家首先想到这家公司体量大,发展不错。因为,体量小的公司Excel报表数据分析就可以完美解决问题,能给决策层提供直观的数据支撑。比如,季度销售数据,年度营业数据等等。
随着互联网的发展,公司越做越大,数据越来越多,传统Excel、Mysql这些数据分析系统完全hold不住了,新技术应运而生。越来越多的数据分析系统和数据处理软件被开发出来,这些技术全部都是为了公司盈利而发展出来的。不以提升性能、给公司创盈利为目的的技术,肯定不是好技术。


做一个日志处理系统
现在ETL依然是很多公司的选择,当然不必要写代码,可以使用sqoop和kettle工具对数据进行清洗。不过很多情况下,还是需要使用mapredcue和spark做数据处理的,这样B格更高。大数据刚发展之初,是mapreduce的天下,mapreduce非常适合做离线数据分析。后来spark得到发展,越来越多的程序员同学,喜欢使用spark开发。一是内存计算快,二是代码量少,当然还有其他很多因素,具体就不多说了。
//spark版的wordcount,核心代码
val sc = new SparkContext(new SparkConf().setAppName("").setMaster(""))
sc.textFile("").flatMap(_.split("\t")).map((_,1)).reduceByKey(_+_)
就这么简简单单的几行代码就能实现wordcount单词统计,使用mapreduce需要写一堆代码。有兴趣的可以看下,mapreduce版本的wordcount。下面就让我们来看看mapredcue版的ETL,处理日志系统,这也是我毕业以后转做大数据开发做的第一个项目。


使用mapreduce处理日志数据

那天,我正在工位上悠闲地喝着咖啡,产品经理走到我身边,拍拍我肩膀说:“男神,我们要做个产品,分析日志的产品,走去会议室唠唠嗑”我一惊,公司果然不会让咱闲着,昨天刚搞完上个项目,现在又来新的需求、新项目了。说走咱就走,我随手拿起了身边的板砖,产品经理惊恐的看着我:“你你你...,你想干嘛”?
从会议室里出来,说干就干,定了需求,咱就撸起袖子加油干。
话说某天一个用户通过web访问我们网站产生了日志,运营部门的男神、女神们要分析用户的行为数据,提前埋点,后端工程师哥哥设置了字段属性,用这些字段分析用户的行为。跟后端开发哥哥们对完数据需求,着手开发。


完整链路的ETL日志处理系统

通过nginx服务器,使用flume收集了一批又一批的日志数据,把这些数据放到HFDS(分布式文件系统)上。
一旁的实习生小王很是不解:“哥,为啥放到HDFS上,不直接存Hive表里”我意味深长的说:“少年对原始数据备份处理是很必要的。”
存HDFS的同时,建了一张Hive分区表,以天作为分区,分区表放每日产生的日志数据。
如果直接把这些数据给运营人员和老板看,估计第二天办公室里会传来“小明啊,我看你最近表现不错,去财务那里结了工资,明天就别来了。”
为了让数据更直观,运营人员能方便的分析不同维度的日志数据。我使用mapreduce对日志数据进行处理,通宵加班加点搞定,用手抚了抚锃亮的脑门,头猛地一甩,头屑乱飞,发出一阵得意的笑声:“搞定。”
数据清洗完毕,把清洗处理完成有一定格式的日志数据,存入Hive分区表中。Hive是个很强大的数据库,数据存在分布式文件系统HDFS上面,非常适合做数据的离线分析。做数据分析Hive是不二的选择,使用类SQL的HQL语言,会SQL就会用Hive,方便数据分析人员使用的数据库。
第二天早上,运营小姐姐刚到公司,就要看昨天官网日志PV和UV等各维度的指标情况,我噼里啪啦一阵敲,小姐姐满眼小星星的看着,我心里那个美啊!报表页面,半天没数据出来。
纳尼?我用手一拍额头,Hive底层走的mapreduce,直接查hive库那效率真不敢恭维,尤其涉及到复杂HQL语句的时候暗骂一声,还数据开发分析老鸟呢,阴沟翻船。我对运营小姐姐说:“女神,等会,马上就好。”
我又噼里啪啦一阵敲,把Hive数据库中的数据,根据不用业务维度查询出来以后同步到Oracle数据库,对接上报表系统,完美解决查询太慢的问题,数据分析完成。
一个完整的ETL项目就算完成了,事情总算告一段落。
后来,为了方便运营人员和老板更直观的点点报表系统,看不同维度的运营数据,又对报表系统进行开发,可以让不会SQL的他们,选择不同维度的属性就能出来不一样的结果。

后续

本来打算进一步优化项目,搞得更智能化、效率更高。对有些不合理的地方进行优化,但是公司流计算实时处理系统项目开启了,领导让叫我把后续事情交给实习生来做。后面一门心思在做爬虫和实时系统,就没负责离线数据处理项目了。
日志处理系统,是一个很简单的系统。这是我刚毕业就开始接触的一个系统,当时会的技术不多,考虑的不全,就按照上面程序来做的。之后,使用Oozie替代了LInux自带的Crontab定时调度。定时让mapredcue每天凌晨以后跑任务,设置了任务失败重启检测系统,错误日志分析系统等等。
总结,对大数据来说,数据分析是很重要的一环。通过开发人员,把一串复杂的、抽象化的日志数据,经过清晰处理,最后统计形成直观的报表,展示给运营和决策部门,公司领导层可以根据这些数据决定今后运营的方向。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
阿里年薪50WJAVA工程师转大数据学习路线!
什么是数据仓库,什么是ETL
《大数据》第1期“专题”——大数据与OLAP系统
我所认识的数据仓库(Data Warehouse)
用Hadoop 还是不用Hadoop?
Hadoop的辉煌还能延续多久?
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服