2. 大数据基础

前言

几个故事

  • 大数据都是骗人的,一头猪悲催的猪
    • 数据不全不是大数据,不可信
    • 过去->将来
  • 啤酒尿布
    • 这个案例仅是一碗数据分析的“心灵鸡汤”——听起来很爽,但信不得!
  • GFT 预测 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的并行加载机制来统一线上和离线的消息处理

大数据计算模式

批处理计算

  1. MapReduce,分布式并行处理,离线计算
  2. Spark,实时,内存

流式计算

  1. Scribe ,Flume,Storm,S4,SparkStreaming
  2. 实时查询,秒级响应

迭代计算

  1. HaLoop ,iMapReduce,Twister,Spark
  2. 逐步逼近,xk+1 - x^ = ε

图计算

  1. Pregel, PowerGrapg, GraphX
  2. 图和邻接矩阵,邻接表

ELK

需求

通常日志由服务器生成,输出到不同的文件中,一般会有系统日志、 应用日志、安全日志。这些日志分散地存储在不同的机器上。日志数据在以下几方面具有非常重要的作用:

  • 数据查找:通过检索日志信息,定位相应的 bug ,找出解决方案
  • 服务诊断:通过对日志信息进行统计、分析,了解服务器的负荷和服务运行状态
  • 数据分析:可以做进一步的数据分析,比如根据请求中的课程 id ,找出 TOP10 用户感兴趣课程。

以前做法

通常当系统发生故障时,工程师需要登录到各个服务器上,使用 grep / sed / awk 等 Linux 脚本工具去日志里查找故障原因。在没有日志系统的情况下,首先需要定位处理请求的服务器,如果这台服务器部署了多个实例,则需要去每个应用实例的日志目录下去找日志文件。每个应用实例还会设置日志滚动策略(如:每天生成一个文件),还有日志压缩归档策略等。

这样一系列流程下来,对于我们排查故障以及及时找到故障原因,造成了比较大的麻烦。因此,如果我们能把这些日志集中管理,并提供集中检索功能,不仅可以提高诊断的效率,同时对系统情况有个全面的理解,避免事后救火的被动。

现在做法

针对这些问题,为了提供分布式的实时日志搜集和分析的监控系统,我们采用了业界通用的日志数据管理解决方案 - 它主要包括 Elasticsearch 、 Logstash 和 Kibana 三个系统。通常,业界把这套方案简称为ELK,取三个系统的首字母。3个系统作用:

  • Logstash :数据收集处理引擎。支持动态的从各种数据源搜集数据,并对数据进行过滤、分析、丰富、统一格式等操作,然后存储以供后续使用。
  • Kibana :可视化化平台。它能够搜索、展示存储在 Elasticsearch 中索引数据。使用它可以很方便的用图表、表格、地图展示和分析数据。
  • Elasticsearch :分布式搜索引擎。具有高可伸缩、高可靠、易管理等特点。可以用于全文检索、结构化检索和分析,并能将这三者结合起来。Elasticsearch 基于 Lucene 开发,现在使用最广的开源搜索引擎之一,Wikipedia 、StackOverflow、Github 等都基于它来构建自己的搜索引擎。

其他

大数据,云计算,物联网

  1. 大数据技术维度:数据采集,分析处理,存储,隐私保护,可视化处理
  2. 云计算的关键技术:虚拟化、分布式存储、分布式计算、多租户(数据隔离、客户化配置、架构扩展、性能定制)等。
  3. 物联网的技术架构:感知层、网络层、处理层、应用层。物联网的关键技术:识别和感知技术、网络和通信技术、数据挖掘和融合技术。
  4. 区别,大数据侧重对海量数据的存储、处理、分析,发现价值,服务生活;云计算本质旨在整合和优化各种IT资源并通过网络以服务的方式,廉价地提供给用户;物联网的发展目标是实现物物相连,应用创新是物联网发展的核心

参考文档

Go!!!
原文地址:https://www.cnblogs.com/shliujing/p/2-da-shu-ju-ji-chu.html