目录
一、大数据是什么
大数据这三个字只是一门市场语言,不是一项专门的技术。大数据的背后是 硬件、数据库、操作系统、Hadoop
等一系列技术的综合应用。
1. 什么是 “大数据” ?
大数据就是从各种类型的数据中,快速获得有价值信息的能力。 这种能力超出了传统数据处理方式,为了应对大数据环境下新的业务需求,需要 分布式存储、分布式计算、分布式数据库等技术,Hadoop
通过 HDFS
实现了分布式存储,通过 MapReduce
实现了分布式计算。
总结:大数据是时代发展和技术进步的产物,Hadoop
只是一种处理大数据的技术手段。
2. 数据规模
缩写 | 英文全称 | 中文名称 |
---|---|---|
B | Byte | 字节 |
KB | KiloByte | 千字节 |
MB | MegaByte | 兆字节 |
GB | GigaByte | 吉字节 |
TB | TeraByte | 太字节 |
PB | PetaByte | 拍字节 |
EB | ExaByte | 艾字节 |
ZB | ZettaByte | 泽字节 |
YB | YottaByte | 尧字节 |
3. 现代大数据的应用
大数据技术在各个行业都有广泛的应用,以下是一些实际的应用案例,涵盖了不同的领域:
- 零售行业
- 库存管理:通过分析销售数据和供应链数据,优化库存水平,减少库存积压和缺货情况。
- 客户细分:电商平台如亚马逊和阿里巴巴利用用户的历史购买记录、浏览行为和搜索记录,通过推荐算法向用户推送个性化的产品推荐,提高转化率和用户满意度。
- 价格优化:结合市场数据和竞争者信息,动态调整商品价格,提高销售额和利润率。
- 医疗健康
- 疾病预测:通过分析患者的电子病历和基因数据,预测疾病风险,提前采取预防措施。
- 个性化治疗:通过分析患者的电子病历、基因组数据和生活习惯,医疗机构可以预测患者可能患上的疾病,提前进行干预。例如,
IBM Watson Health
利用大数据和人工智能技术,帮助医生制定个性化的治疗方案。 - 医疗资源优化:通过分析医院的运营数据,优化资源配置,提高医疗服务效率。
- 交通运输
- 物流优化:利用大数据分析优化物流路线和配送时间,降低运输成本。
- 智能交通系统:利用传感器和摄像头收集的实时交通数据,优化交通流量,减少拥堵。
- 车辆维护:通过分析车辆的运行数据,预测故障,提前进行维护,延长车辆寿命。
- 物流公司通过分析运输路线、车辆状态和货物信息,优化配送路径,减少运输时间和成本。例如,顺丰速运 利用大数据技术优化快递员的配送路线,提高配送效率。
- 媒体和娱乐
- 内容推荐:基于用户的观看历史和偏好,提供个性化的内容推荐。视频平台如
Netflix
和YouTube
通过分析用户的观看历史、评分和评论,向用户推荐感兴趣的视频内容,提高用户粘性和观看时长。 - 广告投放:广告公司通过分析用户的在线行为、兴趣偏好和地理位置,精准投放广告,提高广告效果。例如,
Facebook
和Google
利用大数据技术实现个性化广告推送。 - 社交媒体分析:分析社交媒体上的用户反馈和情绪,帮助企业了解市场趋势和用户需求。
- 内容推荐:基于用户的观看历史和偏好,提供个性化的内容推荐。视频平台如
- 制造业
- 生产优化:通过分析生产线数据,优化生产流程,提高生产效率。
- 质量控制:利用大数据技术实时监测产品质量,及时发现和解决问题。
- 供应链管理:通过分析供应链数据,优化供应商选择和库存管理,降低成本。
- 能源行业
- 可再生能源管理:通过分析天气数据和能源需求,优化可再生能源的生产和分配。
- 能源消耗优化:通过分析能源使用数据,优化能源分配,减少浪费。
- 设备维护:利用传感器数据预测设备故障,提前进行维护,避免停机损失。
- 电力公司通过分析电网运行数据、用户用电数据和气象数据,优化电力调度,提高能源利用效率。例如,国家电网利用大数据技术实现智能调度,减少电力浪费。
- 农业
- 精准农业:农民通过分析土壤湿度、温度、光照和作物生长数据,优化灌溉和施肥方案,提高农作物产量。例如,
John Deere
公司利用大数据技术提供精准农业解决方案,帮助农民提高生产效率。 - 病虫害预测:通过分析气象数据和历史病虫害数据,预测病虫害发生,提前采取防治措施。例如,中国农业大学利用大数据技术预测小麦赤霉病的发生,减少损失。
- 农产品市场分析:分析市场数据,优化农产品的种植和销售策略。
- 精准农业:农民通过分析土壤湿度、温度、光照和作物生长数据,优化灌溉和施肥方案,提高农作物产量。例如,
- 电信行业
- 网络优化:通过分析网络流量数据,优化网络结构,提高网络质量和用户体验。
- 客户流失预测:利用机器学习算法分析客户行为数据,预测客户流失风险,采取挽留措施。
- 服务质量监控:实时监控网络性能和服务质量,及时发现并解决故障。
- 金融行业
- 风险管理:通过分析历史交易数据和市场趋势,金融机构可以更准确地评估贷款风险和投资风险。
- 欺诈检测:利用机器学习算法分析大量交易数据,实时识别异常行为,防止信用卡欺诈和洗钱活动。
- 个性化推荐:基于用户的历史交易记录和行为数据,提供个性化的金融产品和服务。
- 政府和公共服务
- 智慧城市:通过分析城市数据,优化公共服务,提高居民生活质量。
- 公共安全:利用大数据技术分析犯罪数据,预测犯罪热点,提高公共安全。
- 政策制定:通过分析社会经济数据,为政策制定提供科学依据。
这些应用案例展示了大数据技术在不同领域的巨大潜力和实际价值。通过有效利用大数据,企业和社会可以实现更高的效率、更好的决策和更优质的服务。
4. 大数据的特征——5V(IBM 提出)
Volume
(大量)- 存储量大
- 增量大
Velocity
(高速)- 高速数据
I/O
(连接设备的增长)
- 高速数据
Variety
(多样)- 来源多
- 搜索引擎
- 传感器
- ...
- 格式多
- 结构化
- 非结构化
- 来源多
Value
(低价值密度):单位信息的价值低Veracity
(真实性):数据包含噪音
5. 大数据的问题 与 解决方案
1> 理论分析
2> 实际应用
解决方案:
- 降低成本。能用
PC
机,就不用大型机或高端存储设备 - 软件容错、硬件故障视为常态,通过软件来保障高可靠性。
- 简化分布式并行计算,无需控制节点同步和数据交换
二、什么是 Hadoop 和 Hadoop 生态系统?
1. Hadoop
Hadoop:The Apache™ Hadoop® project develops open-source software for reliable, scalable, distributed computing.
- 一个模仿
Google
大数据技术的开源实现 - 一个 分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力高速运算和存储。
Hadoop
是由一系列软件库组成的框架,这些软件库各自负责 Hadoop
的一部分功能,其中最主要的是:
HDFS
模块。负责大数据的分布式存储。MapReduce
模块。负责大数据的分布式计算。YARN
模块。负责大数据集群资源的管理与调度。
包含模块:
Hadoop Common
:The common utilities that support the other Hadoop modules.
Hadoop Distributed File System (HDFS™)
分布式文件系统:A distributed file system that provides high-throughput access to application data.
Hadoop YARN
资源管理系统:A framework for job scheduling and cluster resource management.
Hadoop MapReduce
分布式计算框架:A YARN-based system for parallel processing of large data sets.
Hadoop Ozone
:An object store for Hadoop.
Hadoop Submarine
:A machine learning engine for Hadoop.
2. Hadoop 的起源与发展历程
Hadoop
最早起源于 lucene
下的子项目 Nutch
。Nutch
的设计目标是构建一个大型的全网搜索引擎,包括网页抓取、索引、查询等功能,但随着抓取网页数量的增加,遇到了严重的可扩展性问题,即如何解决数十亿网页的存储和索引问题。
2003
年、2004
年谷歌发表的三篇论文为该问题提供了可行的解决方案:
- 分布式文件系统(
GFS
),可用于处理海量网页的存储 - 分布式计算框架
MapReduce
,可用于处理海量网页的索引计算问题。 - 分布式的结构化数据存储系统
Bigtable
,用来处理海量结构化数据。
Doug Cutting
基于这三篇论文完成了相应的开源实现 Hadoop
和 MapReduce
,并从 Nutch
中剥离成为独立项目 Hadoop
,到 2008
年 1
月,Hadoop
成为 Apache
顶级项目(同年,cloudera
公司成立),Hadoop
迎来了它的快速发展期。
2004
年 - 最初的版本(现在称为HDFS
和MapReduce
)由Doug Cutting
和Mike Cafarella
开始实施。2005
年12
月 -Nutch
移植到新的框架,Hadoop
在20
个节点上稳定运行。2006
年1
月 -Doug Cutting
加入雅虎。2008
年-淘宝开始投入研究基于Hadoop
的系统–云梯。2009
年3
月 -Cloudera
推出CDH
。2009
年7
月—MapReduce
和Hadoop Distributed File System (HDFS)
成为Hadoop
项目的独立子项目。
3. Hadoop 生态系统
优势:
- 源码开放
- 社区活动
- 生态系统囊括了分布式存储和计算等方方面面
- 已得到企业界的验证
三、大数据平台架构
结合大数据在企业的实际应用场景,可构建出大数据平台架构,如下图所示:
- 最上层是应用层,提供数据服务与可视化,解决企业实际问题。
- 第
2
层是大数据处理核心,包含数据离线处理和实时处理、数据交互式分析以及机器学习与数据挖掘。 - 第
3
层是资源管理,为了支撑数据的处理,需要统一的资源管理与调度。 - 第
4
层是数数据存储,存储是大数据的根基,大数据处理框架都构建在存储的基础之上。 - 第
5
层是数据获取,无论是数据存储还是数据处理,前提都是快速高效的获取数据。
除了数据服务与可视化外(与业务联系紧密,每个公司各不相同)。本课程会通过具体小节分别讲解大数据平台架构的各个层级。
1. 数据获取
数据是第一生产力。
—— 马云
大数据技术的核心就是从数据中挖掘价值,那么最重要的是要有所需要的数据,而第一步需要做的就是弄清楚有什么样的数据?如何获取数据?
数据类型总体上可以分为两种:
- 结构化数据。由二维表结构来逻辑表达和实现的数据。
- 非结构化数据。其他格式。
数据获取常见方式:
- 浏览器探针采集用户浏览数据
- 爬虫技术获取网页数据
Canal
采集MySQL
数据库binlog
日志Flume
采集日志服务器数据
2. 数据存储
存储是所有大数据技术组件的基础。
实验数据得出:
1TB
的硬盘,在数据传输速度约为 100MB/s
的情况下,读完整个磁盘中的数据至少得花 2.5
个小时。试想,如果将 1TB
数据分散存储在 100
个硬盘,并行读取数据,那么不到 2
分钟就可以读完所有数据。通过共享硬盘对数据并行读取,可以大大缩短数据分析时间。
对多个硬盘中的数据并行进行读写,首要解决的问题就是硬件故障问题。为了避免数据丢失,最常见的做法是复制(replication
),常见的数据冗余方式有两种:
- 使用冗余硬盘阵列(
RAID
)【硬件方式】 HDFS
分布式文件系统。【软硬结合】
3. 数据处理
大数据处理按照执行时间的跨度可以分为:
- 离线处理。离线处理也即批处理,基于复杂的批量数据处理,通常的数据处理时间跨度在几分钟到数小时之间。常见的离线处理框架包含
MapReduce
、Spark
和Flink
。 - 实时处理。实时处理也即是流处理,基于实时数据流的数据处理,通常的数据处理时间跨度在数百毫秒到数秒之间。常见的实时处理框架包含:
Storm
、Spark
和Flink
。
4. 交互式分析
交互式分析,基于历史数据的交互式查询,通常的时间跨度在数十秒到数分钟之间。在大数据领域中,交互式查询通常用于实时报表分析、实时大屏、在线话单查询等。
交互式查询通常具有以下特点:
- 低延时
- 查询条件复杂
- 查询范围大
- 返回结果数据量小
- 并发数要求高
- 需要支持
SQL
等接口
大数据领域交互式分析常用技术包含:Hive SQL
、Spark SQL
以及 Flink SQL
等。
5. 机器学习与数据挖掘
常规的数据分析可以使用离线分析、实时分析和交互式分析;复杂的数据分析就需要利用数据挖掘和机器学习方法。
机器学习是一门多领域交叉学科,涉及高等数学、概率论、线性代数等多门学科。专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。
数据挖掘是从海量数据中通过算法搜索隐藏于其中信息的过程。数据挖掘中用到了大量的机器学习中的数据分析技术和数据管理技术。
机器学习与数据挖掘区别与联系:
- 机器学习是数据挖掘中的一种重要的工具,数据挖掘不仅仅要研究、扩展、应用一些机器学习的方法,还要通过许多非机器学习技术解决 数据仓储、数据噪音 等实际问题。
- 机器学习不仅仅可以用在数据挖掘上,还可以应用在增强学习与自动控制等领域。
- 数据挖掘是强调结果,机器学习是强调使用方法,两个领域有相当大的交集,但不能画等号。
基于大数据平台进行数据挖掘常用的技术包含:Mahout
、Spark ML
和 Alink
6. 资源管理
资源管理的本质是集群、数据中心级别资源的统一管理和分配,以提高效率。其中 多租户、弹性伸缩、动态分配 是资源管理系统要解决的核心问题。
为了提高集群资源利用率、解决资源共享问题,YARN
在这种应用场景下应运而生。YARN
是一个通用的资源管理系统,对整个集群的资源进行统筹管理,其 目标是将短作业和长服务混合部署到一个集群中,并为他们提供统一的资源管理和调度功能。
在实际企业应用中,一般都会将各种大数据处理框架部署到 YARN
集群上,如:MapReduce On YARN
、Spark OnYARN
、Flink On YARN
等,方便资源的统一调度与管理。
四、大数据工程师的技能树
一般将从事大数据平台构建以及海量数据采集、存储、计算等工作的技术人员称为大数据工程师。工作中的典型应用包含:离线计算、实时计算、即席查询、数仓构建、用户画像、个性化推荐、反欺诈等。大数据领域方兴未艾,专业人才比较缺乏,高端人才更是抢手。到 2025
年,大数据人才缺口将达到 200
万,大数据当前正处于落地应用阶段。大数据工程师的未来发展空间比较大,薪资待遇较好,从事大数据工作是个不错的选择。
以下是一个大数据工程师需要掌握的必备技能。
1. 大数据主流开发语言
大数据开发跟传统的 Web
开发类似,都需要基于一种程序开发语言开发应用。
大数据生态圈的绝大多数技术组件的源代码都使用 Java
语言开发,比如:Zookeeper
、Hadoop
、Hive
、HBase
、Flume
、Sqoop
、Flink
等,而且在大数据开发过程中经常涉及到源代码的阅读与开发,所以 Java
语言是从事大数据项目开发的必备语言,也是大数据开发的主流语言。
当然除了 Java
语言,Python
语言也可以从事大数据开发工作,Python
主要侧重业务的数据分析和挖掘。
2. 大数据平台构建
无论大数据离线计算还是实时计算,都是基于大数据平台,所以大数据开发人员必须掌握大数据平台构建的技能。
大数据平台一般是指 Hadoop
集群,Hadoop
集群包含 HDFS
分布式文件系统和 YARN
资源管理系统。HDFS
解决了海量数据的分布式存储问题,YARN
解决了 MapReduce
分布式计算资源调度问题,除了 MapReduce
,还有 Spark
和 Flink
等流式计算框架都可以运行在 YARN
上面。
当然,在 Hadoop
集群搭建过程中,还需要搭建 Zookeeper
分布式协调服务,用来实现 HDFS
集群和 YARN
集群的高可用。所以,大数据工程师要掌握 Zookeeper
、HDFS
以及 YARN
分布式集群的构建。
3. 大数据采集
大数据项目开发的首要任务就是采集海量数据,这就需要我们具备海量数据采集的能力。在实际工作中,数据一般有两种来源:
- 一种来自日志文件
- 一种来自数据库
每种数据源的采集技术有很多种:
- 一般使用
Flume
、Logstash
、Filebeat
等工具采集日志文件数据 - 一般使用
Sqoop
、Canal
等工具采集数据库中的数据。
4. 大数据存储与交换
HBase
数据库构建在 HDFS
之上,既解决了海量数据存储又实现了数据实时的随机查询与更新,满足了线上用户服务需求。
在大数据离线或者实时计算项目中,经常需要使用 Kafka
消息队列作为实时的数据中转服务,对来自各个平台的数据(如:来自物联网的数据、数据库的数据、移动 App
的数据等)进行流转,达到分享和交换数据的目的。
5. 大数据离线计算
Hadoop
的出现一方面使用 HDFS
解决海量数据存储问题,另一方面使用 MapReduce
解决海量数据分布式计算问题,当然 MapReduce
是离线计算框架仅支持离线计算,但也解决了企业大部分的应用场景,在大数据项目开发过程中离不开离线计算。
当然除了 MapReduce
支持离线计算,还有 Hive
、Spark Core
、Spark SQL
、Flink DataSet
等技术都支持离线计算。
6. 大数据实时计算
离线计算解决了大数据批处理的应用场景,但随着社会的发展,企业和用户对服务的响应速度要求越来越高,离线计算难免存在数据反馈不及时的情况,很难保证越来越多的急需实时数据做决策的应用场景,所以实时计算就得到了快速的发展。
大数据发展至今出现了很多实时计算框架,比如当前比较流行、企业使用较为广泛的 Spark Streaming
和 Flink DataStream
等实时计算模型。所以,大数据工程师需要掌握 Spark Streaming
、Flink DataStream
等大数据实时计算技术。
五、大数据项目需求分析与设计
1. 项目需求分析
需求分析作为软件工程的第一阶段,是整个软件开发项目进行设计和实现的基础,决定了一个项目的成败。但是需求分析不能只看成一个独立的阶段,对需求的了解贯穿整个项目的始终,了解需求的过程是一个逐步细化、逐步深入的过程,整个项目自始至终都需要与客户或者用户进行交流。
大数据项目需求是以数据为中心,在需求分析阶段就强调数据的分析一点也不为过。围绕大数据项目的需求分析大体分为以下几个阶段:
- 场景需求分析
- 概念需求分析
- 细节需求分析
- 界面需求分析
1> 贯穿案例
本课程我们以 新闻项目大数据实时分析 案例来进行需求分析,具体需求如下:
- 采集搜狗新闻网站用户浏览日志信息。
- 统计分析搜狗排名最高的前
10
名新闻话题。 - 统计分析每天哪些时段用户浏览新闻量最高。
- 统计分析每天曝光搜狗新闻话题总量。
2> 场景需求分析
这个阶段体现了系统的总体构思与设计,任务是了解系统的组织形式和功能需求概貌,解决 "是什么" 的问题。结合该项目案例需求,满足实时计算场景,我们需要设计大数据实时分析系统,当然同时也可以设计离线分析系统。分析系统包含数据采集、数据存储、数据过滤清洗、数据统计分析以及数据可视化等结构,最终需要统计分析 新闻话题排行榜、不同时段用户浏览量以及每天新闻话题总量。
3> 概念需求分析
概念需求分析的任务是 对系统中涉及的概念、数据内容等进行分析,解决"有什么"问题。数据格式:
# 用户浏览日志
00:00:01 8761939261737872 [年轻人住房问题] 11 7 news.qq.com/a/20070810/002446.htm
我们需要利用用户浏览日志数据统计分析相应的需求结果,数据需要经过以下流程:
- 数据采集:新闻日志数据落盘到日志服务器之后,可以利用
Flume
采集工具完成数据采集; - 数据存储与交换:根据离线和实时应用场景,可以将采集的数据存储到
HBase
或者Kafka
; - 数据计算:利用离线和实时计算框架完成对数据的统计分析,最后将结果输出到数据库;
- 数据可视化:对数据库中的数据进行可视化,完成数据大屏展示。
4> 细节需求分析
细节需求分析就是具体实现用户需求,解决 “怎么做” 的问题。结合该项目案例,详细的需求分析包括:采用怎样的大数据技术架构、详细的数据流程架构设计以及数据库设计 等。
5> 界面需求分析
客户能否用好大数据系统最终决定项目的成败,良好的可视化界面也是不可忽视的。系统界面的好坏并不是追求界面的炫酷,而是根据可视化界面能否分析出有价值的信息,为决策者快速提供决策能力。
本项目中,最终的可视化界面要准确反映新闻话题排行榜,分析出不同时段用户浏览新闻量以及每天新闻话题总量。
2. 系统架构设计
总结
- 什么是大数据?
- 大数据的特征?
- 大数据要解决的问题?大数据的目标?大数据的手段?
- 什么是
Hadoop
生态系统? - 什么是大数据平台架构?
- 大数据工程师需要具备什么技能?
- 大数据项目细分需求有哪些?