使用大数据的动因
一是数据的挑战,互联网时代海量数据产生,特别其中包含的大量的非结构化数据,蕴含着巨大的价值分析
二是传统技术的局限
- 性能瓶颈,成本高:单服务器性能、数据库计算能力、存储垂直扩展存在性能瓶颈,一般支持复杂计算的数据库均为商用, 例如Oracle,升级成本高
- 异构数据库:可能存在多个类型的数据库共存的情况,例如Oracle,MySql(分库分表),SqlServer 业务上需要拉通这些数据库的数据汇总分析
- “跑不动”:如果涉及大量历史数据计算,可能会跑不出来数据,即 “跑不动”
三是数据驱动的智能化,早在2014年,阿里巴巴提出从IT时代走向DT时代
简单来讲就是由传统的信息技术系统转变为由数据驱动的智能系统。
Haoop-大数据存储+计算框架
Hadoop是Apache基金会下的一个开源分布式系统框架(存储+计算),以分布式文件系统(HDFS)、资源调度和任务(YARN)、分布式计算框架(MapReduce)为核心,为用户提供了底层细节透明的分布式基础架构
Hadoop主要由三部分组成:
- 分布式文件系统:HDFS —— 实现将文件分布式存储在很多的服务器上
- 分布式运算编程框架:MapReduce——实现多台机器的分布式并行运算
- 分布式资源调度平台:YARN —— 帮用户调度大量的mapreduce程序,并合理分配运算资源
分布式文件系统HDFS
HDFS主要包含三部分:
- Block(数据块):大文件的存储会切分成多个Block存储,默认128M。每个Block在多个DataNode上存储副本,默认3份
- DataNode:负责文件数据的存储和读写操作,数据以Block方式存储,执行复制操作
- NameNode:负责整个分布式文件系统的元数据(MetaData)管理,即文件路径名、数据块的 ID 以及存储位置等信息
通过漫画的方式形象的描述HDFS读入和写入数据的过程,如下图所示:
读数据:
写数据:
高可用性:
漫画容错性:
分布式运算编程框架MapReduce
MapReduce 提供了一个高度抽象化的编程模型,利用“分而治之”(应用分布式集群是分开处理,没有聚合的过程)的思想实现大规模数据集的并行运算。
它的核心包括Map(映射)和Reduce(归集)组成,用户只需要继承 Mapper 和 Reducer 类就可以完成分布式编程,它极大地方便了编程人员在不会分布式并行编程的情况下,将程序运行在分布式系统上。
- Mapper 负责切分,即把复杂的任务分解为若干个可以并行计算的子任务来处理
- Reducer 负责对 Map 阶段的结果进行汇总
使用MapReduce实现WordCount
代码实现如图:
分布式资源调度平台YARN
- 资源管理器(Resource Manager 简称RM):负责整个集群的资源调度管理
- 节点管理器(Node Manager):负责具体服务器上的资源和任务管理,监控节点上容器的运行状况并向ResourceManger进程汇报
- 容器(Container):Yarn进行资源分配的单位,包含了一定量的内存、CPU 等计算资源,由NodeManager进程启动和管理
数仓工具Hive
HipHop for PHP 的故事:Facebook早期由PHP编写,随着访问量的增加,性能遇到瓶颈,解决方案是使用C语言改写,改写方案有两套:
- 组织所有研发将所有代码平移改成C语言
- 开发一套编译转换器,源码依旧是PHP,编译转换成C语言
由此Facebook开发了HipHop for PHP,将PHP代码转换为高度优化的C++代码。
同样的Hive的诞生和HipHop for PHP类似,它是基于 Hadoop 的一个数据仓库工具,最大的特点是将 Hive SQL语句转换为MapReduce任务执行,可以使BI分析人员能快速上手,并将传统的数仓平滑切换到大数据平台
大数据生态圈
要学习的还有很多!!