大数据认识篇
什么是大数据,为什么大数据,咱不说。
处理大数据。
从一个简单的需求说起:
1、 假设公司有100个域名,各个域名下有更多的子域名,下文子域名也叫做域名。
每个域名对应的nginx log 假设1G.
现在的需求是log数据得存储一年,每天早上给出每个域名对应的各种指标,多少ip,4xx,5xx and so on。
做法是:每个机器上定时任务呗,处理脚本,发送结果到邮箱,每个域名发一封,呵呵。优化:把结果写到数据库,然后写个脚本处理数据库,发送到邮箱,就是一封邮件了。
再优化:把日志晚上切割后,压缩发送到一个专门的机器上,写一个脚本,可以随意修改,数据统一,处理方式统一,结果统一。
2、 业务扩大,域名多了,日志数据从1G到1000G。
就拿单机来说,shell脚本很难做处理了,即使做到了,效果不好。这么大的数据都集中到一个存储机器,存一年,还占用网络速度,肯定不行。再说1000G---切割到100G一个,然后shell处理100G这么多,也耗时耗力。
好吧,大数据来了。
咱现在需要的第二天早上发送报告,也就是处理冷数据。
数据集中:
hadoop的hdfs
每个机器上的log文件是文本格式的,可以存到每个机器的数据库,这样一来,每个机器上的log就可以联动,但是效率不高,hadoop的hdfs来了,这样理解:这hdfs控制端查今天公司网站所有的总带宽,一个命令就行了。看起来不是按个读取文本文件去查,加起来。把分布在各个服务器的数据看作了一个总体。
数据分析:
hadoop的MapReduce,不细说。
3、 实时大规模nginx日志 elk
Elasticsearch + Logstash + Kibana(ELK)是一套开源的日志管理方案,分析网站的访问情况时我们一般会借助Google/百度/CNZZ等方式嵌入JS做数据统计,但是当网站访问异常或者被攻击时我们需要在后台分析如Nginx的具体日志,而Nginx日志分割/GoAccess/Awstats都是相对简单的单节点解决方案,针对分布式集群或者数据量级较大时会显得心有余而力不足,而ELK的出现可以使我们从容面对新的挑战。
Logstash:负责日志的收集,处理和储存
Elasticsearch:负责日志检索和分析
Kibana:负责日志的可视化
http://baidu.blog.51cto.com/71938/1676798
4、 现在公司有个计费系统,十分庞大。实时计算出需求用户的各种指标。
存储有了hadoop的hdfs,但是mapreduce压根不对实时数据起作用,ok,storm来了,还有这个:spark
这么多技术,说个大概吧,他们怎么组合的。
组合:
flume-ng+Kafka+Storm+HDFS 实时系统组合
hadoop:hdfs mapreduce组合
……………………
我该怎么选择:spark storm hadoop 什么关系,怎么选择
http://www.aboutyun.com/thread-7569-1-1.html
认识浅显,欢迎指正