2. 大数据基础
前言
几个故事
- 大数据都是骗人的,一头猪悲催的猪
- 数据不全不是大数据,不可信
- 过去->将来
- 啤酒尿布
- 这个案例仅是一碗数据分析的“心灵鸡汤”——听起来很爽,但信不得!
- GFT 预测 H1N1
- 搜索词和H1N1敏感性关联
- “预测即干涉”悖论和“菜农种菜”,过度拟合
- 数据并非越大越好:谷歌流感趋势错在哪儿了?
- 更准确的预测模型
特性
- 4V,有价值的,海量的,多样化的,快速的(产生,处理)
挑战
- 对现有数据库管理技术的挑战
- 经典数据库并没有考虑数据的多类别
- 实时性的技术挑战
- 网络架构、数据中心、运维的挑战。
- 系统瓶颈:存储容量、读写速度、计算效率
- 其他挑战:数据隐私、数据源的复杂多样等
技术基础
涉及数据采集、数据存储、数据处理/分析/挖掘、可视化。学习上可以看书、博客、网站。
系统&语言
- Linux
- Shell
- Java
- Python
- Scala - 多范式(multi-paradigm)的编程语言,设计初衷是要集成面向对象编程和函数式编程的各种特性
- R - 用于统计分析,图形表示和报告的编程语言和软件环境
框架
- Hadoop/Yarn - Apache基金会所开发的分布式系统基础架构
- HDFS - 分布式存储系统,包含NameNode,DataNode
- Hbase - 数据库。非常适合用来做大数据的实时查询。Facebook用Hbase存储消息数据并进行消息实时的分析
- Hive - 数据仓库 可以用SQL查询,可以运行Map/Reduce程序。用来计算趋势或者网站日志,不应用于实时查询,需要很长时间返回结果。
- Spark - Scala语言中实现的类似于Hadoop MapReduce的通用并行框架,除了Hadoop MapReduce所具有的优点,但不同于MapReduce的是job中间输出结果可以保存在内存中,从而不需要读写HDFS,因此Spark能更好的适用于数据挖掘与机器学习等需要迭代的MapReduce算法。
- Kafka - 高吞吐量的分布式发布订阅消息系统,可以处理消费者规模的网站中的所有动作流数据(浏览,搜索等)。相对Hadoop的日志数据和离线分析,可以实现实时处理。目前通过Hadoop的并行加载机制来统一线上和离线的消息处理
大数据计算模式
批处理计算
- MapReduce,分布式并行处理,离线计算
- Spark,实时,内存
流式计算
- Scribe ,Flume,Storm,S4,SparkStreaming
- 实时查询,秒级响应
迭代计算
- HaLoop ,iMapReduce,Twister,Spark
- 逐步逼近,xk+1 - x^ = ε
图计算
- Pregel, PowerGrapg, GraphX
- 图和邻接矩阵,邻接表
ELK
需求
通常日志由服务器生成,输出到不同的文件中,一般会有系统日志、 应用日志、安全日志。这些日志分散地存储在不同的机器上。日志数据在以下几方面具有非常重要的作用:
- 数据查找:通过检索日志信息,定位相应的 bug ,找出解决方案
- 服务诊断:通过对日志信息进行统计、分析,了解服务器的负荷和服务运行状态
- 数据分析:可以做进一步的数据分析,比如根据请求中的课程 id ,找出 TOP10 用户感兴趣课程。
以前做法
通常当系统发生故障时,工程师需要登录到各个服务器上,使用 grep / sed / awk 等 Linux 脚本工具去日志里查找故障原因。在没有日志系统的情况下,首先需要定位处理请求的服务器,如果这台服务器部署了多个实例,则需要去每个应用实例的日志目录下去找日志文件。每个应用实例还会设置日志滚动策略(如:每天生成一个文件),还有日志压缩归档策略等。
这样一系列流程下来,对于我们排查故障以及及时找到故障原因,造成了比较大的麻烦。因此,如果我们能把这些日志集中管理,并提供集中检索功能,不仅可以提高诊断的效率,同时对系统情况有个全面的理解,避免事后救火的被动。
现在做法
针对这些问题,为了提供分布式的实时日志搜集和分析的监控系统,我们采用了业界通用的日志数据管理解决方案 - 它主要包括 Elasticsearch 、 Logstash 和 Kibana 三个系统。通常,业界把这套方案简称为ELK,取三个系统的首字母。3个系统作用:
- Logstash :数据收集处理引擎。支持动态的从各种数据源搜集数据,并对数据进行过滤、分析、丰富、统一格式等操作,然后存储以供后续使用。
- Kibana :可视化化平台。它能够搜索、展示存储在 Elasticsearch 中索引数据。使用它可以很方便的用图表、表格、地图展示和分析数据。
- Elasticsearch :分布式搜索引擎。具有高可伸缩、高可靠、易管理等特点。可以用于全文检索、结构化检索和分析,并能将这三者结合起来。Elasticsearch 基于 Lucene 开发,现在使用最广的开源搜索引擎之一,Wikipedia 、StackOverflow、Github 等都基于它来构建自己的搜索引擎。
其他
大数据,云计算,物联网
- 大数据技术维度:数据采集,分析处理,存储,隐私保护,可视化处理
- 云计算的关键技术:虚拟化、分布式存储、分布式计算、多租户(数据隔离、客户化配置、架构扩展、性能定制)等。
- 物联网的技术架构:感知层、网络层、处理层、应用层。物联网的关键技术:识别和感知技术、网络和通信技术、数据挖掘和融合技术。
- 区别,大数据侧重对海量数据的存储、处理、分析,发现价值,服务生活;云计算本质旨在整合和优化各种IT资源并通过网络以服务的方式,廉价地提供给用户;物联网的发展目标是实现物物相连,应用创新是物联网发展的核心
参考文档
- 关于大数据的10个小故事 - 入门理解
- 怎样进行大数据的入门级学习? - 阶段学习简要说明
- 从 ELK 到 EFK 演进 - 几个演进图
- 大规模图计算系统综述 - 图计算概念理解
- 大数据关键技术、及计算模式介绍,以及大数据与云计算、物联网的关系 - 概念理解
- 大数据基础知识 - 基础概念
Go!!!