本文主要讨论这几个问题:
- 何谓大数据
- 大数据的特点
- 大数据应用场景
- 通用大数据处理流程
- 大数据开发职能分工
- 常用大数据技术栈概览
1. 何谓大数据(Big Data)
- 定义:大数据通常指
- 无法用常规软件工具或手段,在期望的时间范围内进行收集、管理和处理的数据集合。
- 是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。
- 主要解决:
- 海量数据的采集
- 海量数据的存储管理
- 海量数据的分析计算问题
- 数据的可视化交互和展现问题
- 大数据时代数据处理理念的改变:
- 要全体不要抽样
- 要效率不要绝对精确
- 要相关不要因果
2. 大数据的特点
- 4V:
- 1)Volume(大量)
- 人类截止目前的印刷资料的数据信息量大概在200PB,大的互联网企业(例如Google)数据量已经达到几个EB级别,个人电脑的磁盘容量已经达到TB级别。
- 1Byte = 8bit, 1K = 1024Byte, 1MB = 1024K, 1G = 1024M, 1T = 1024G, 1P = 1024T,1E = 1024P。
- 分布式存储就是为了解决海量数据存储和高效访问的问题。
- 2)Velocity(高速)
- 大数据区分于传统数据挖掘的最显著特征。
- 因为大部分数据,都具备实效性特征,处理数据的效率就是企业的生命。
- 分布式的离线和(近)实时计算框架就是为了解决海量数据的高速处理问题。
- 3)Variety(多样)
- 多样性主要包括:
- 数据格式和结构的多样性:
- 结构化数据
- 如存储在关系型数据库表中的数据。
- 结构化数据的模式(schema,包括属性,数据类型以及数据之间的联系)和数据内容是分开存储的。
- 模式(schema)需要事先定义好。
- 半结构化数据:
- 包括:网页HTML,XML,JSON等。
- 和结构化数据区别在于半结构化数据通常是自描述的,即模式和数据是混在一起的。
- 半结构化数据结构化的手段有:
- 正则表达式
- DOM(HTML,XML):CSS选择器,XPath,HTMLParser,Dom4j,XSoup
- JSON Path(JSON)
- 非结构化数据:
- 非结构化数据在企业数据中占据的比例很大,大概80%。
- 非结构化数据类型越来越多,包括:文本/文档信息、网络日志、音频、视频、图片、地理位置信息。
- 对非结构化处理的难点是:通常存储技术可以通用于非结构化数据之上,但是数据的分析和处理技术无法在各种类型的非结构化数据上通用,通常需要针对每一类非结构化数据结合后续应用目标制定和开发相关的处理手段。
- 对非结构化数据的分析通常需要基于将非结构化数据结构化后,或者其伴生的结构化数据(比如metadata)之上。
- 将非结构化数据结构化的手段包括:
- 正则表达式
- 分词
- NER
- 结构化数据
- 数据源的多样性:
- 数据源的种类很多:关系型数据库(sql),非关系型数据库(no-sql),各种文件系统,FTP,HTTP,消息队列等。
- 通常通过ETL工具对多源数据进行抽取,汇聚,转储,在过程中同时可能还会对其进行数据清洗,标准化等处理。
- 数据格式和结构的多样性:
- 多样性主要包括:
- 4)Value(低价值密度)
- 我们对大数据的分析计算,最终是为了得到有价值的数据,这部分数据通常很小。因此,大数据具有低价值密度的特点。
- 1)Volume(大量)
3. 大数据应用场景
- 大数据应用的目的主要是从海量数据中得到有价值的”小”数据,可分为两类:
- 对过去到现在的数据进行指标监控,多维度统计,挖掘分析,发现存在的规律和关键信息,为企业提供更精细化的运营支持。(例如日常报表,指标监控)
- 基于上述数据及分析结果,对现在或未来将发生的事情进行预测(例如推荐系统)
4. 通用大数据处理流程
- 1)数据采集、汇聚
- 主要手段包括:爬虫,ETL工具,web前端埋点采集,日志采集,各类传感器设备,社会工程等
- 2)数据预处理
- 主要对原始数据进行清洗,比如去重,过滤,转换,标准化等
- 3)数据存储
- 要进行实时计算的数据,通常放入消息队列(比如kafka)进行缓冲,供实时计算框架处理
- 全量数据比较大,通常以适当的结构划分目录或分区,存储在分布式文件系统或分布式数据库中,等待后续的离线分析计算使用
- 在第4)步后的计算分析结果也需要存储,这部分数据通常不是很大,且主要用于面向前端展示等的oltp操作,一般可以选择存储在关系型数据库中,或根据业务选择(比如搜索业务存储在es, solr等全文检索框架中)
- 4)数据分析挖掘
- 实时/近实时计算
- 离线分析
- 5)数据展现
- 数据可视化:对于普通用户或是数据分析专家,都是最基本的功能。
- 数据图像化:可以让数据自己说话,让用户直观的感受到结果
- 简易的交互
5. 大数据开发职能分工
- 数据采集组
- 爬虫开发,配置
- 平台组
- 大数据框架平台搭建,维护,监控,优化
- 数仓组
- ETL,数据清洗
- 数仓建模,数据分析
- 算法、数据挖掘组
- CV,NLP,推荐系统,用户画像等
- 应用开发组
- 报表开发
- 业务应用
6. 常用大数据技术栈概览
- 数据采集
- 爬虫
- Nutch
- 日志采集
- logstash
- filebeat
- flume
- 爬虫
- 数据同步、流转、ETL
- canal
- Sqoop
- NIFI
- Pentaho Kettle
- DataX
- Gobblin
- 数据存储
- 分布式文件系统
- HDFS
- 分布式数据库
- HBase
- Cassandra
- MongoDB
- 数据仓库
- Hive
- Greenplum
- 常见序列化协议
- Json
- XML
- Hession
- Thrift
- Protocol Buffers
- 数据存储格式
- TextFile
- SequenceFile
- RCFile
- Avro
- ORC
- Parquet
- CarbonData
- 分布式文件系统
- 数据计算分析
- 近实时/实时计算、流数据计算
- Spark Streamming
- Storm
- Flink
- 离线计算、批量计算
- MapReduce
- Tez
- Spark
- OLAP,多维数据统计分析,SQL数据分析
- Presto
- Druid
- Kylin
- Hive SQL
- Spark SQL
- Impala
- Drill
- HAWQ
- Phoenix
- 近实时/实时计算、流数据计算
- 资源管理、作业调度
- Yarn
- MapReduce
- 任务调度
- Oozie
- Azkaban
- 数据治理
- Apache Falcon
- Apache Ranger
- 大数据集群管理、监控
- Ambari
- 数据展现、可视化
- d3
- echarts
- g2
- 大数据集成平台
- Hadoop
- Cloudera
- HDP
/* 本文属于原创文章,转载请注明作者和出处 quarterback.cn,请勿用于任何商业用途 */