写在前面的话:不要被技术吓到哦 ,本文尽量写的白话,致力为从事大数据的运营、咨询规划、需求以及想学习大数据的入门者提供知识分享@……@
首先阐述两个事实,然后再针对事实来引出问题的解决方案,以更好的帮助我们来理解Hadoop处理架构:
1、数据现状:2000年以前,结构化数据占主流地位,数据大多标准的数字数据,而2000年以后,非结构化的数据异军突起,来自监控、网站的视频和图像数据,以及来自微博等网页的文本数据逐渐取代结构化数据的主流地位。
2、处理技术现状:传统关系型数据库无法处理几亿行长,几百万行宽的宽表,且面对视频、图像等非结构化数据无能为力。
传统架构存在的问题 一、大数据存储解决方案HDFS
如何解决传统数据库的存储问题?答案是文件存储。把网站的TB级以上数据量保存在一个文件里,通过对文件读操作,实现对大数据的分析,方案是不是很完美,NO,面临一个很实际的问题,读取效率低!
那如何解决文件存储慢的问题,答案是分而治之,采取分布式文件存储!!!
集中存储 分布式存储 读到这里,是不是理解起来毫不费力?重要的是,恭喜你,你已经掌握了Hadoop生态系统的核心之一-----分布式文件系统HDFS的原理就是这样的。
采用分布式文件系统HDFS已经解决了大数据的存储问题和读取效率问题,试问,如果存储文件的一个服务器出现了故障,文件被损坏,造成数据的丢失,该如何避免这种情况?答案是备份,至少做3个备份,如下图:
安全可靠 HDFS优点总结:
1、支持任意超大文件存储;硬件节点可不断扩展,低成本存储(真实案例为:4000节点,目前最大5000节点);
2 、对上层应用屏蔽分布式部署结构,提供统一的文件系统访问接口,感觉就是一个大硬盘;应用无需知道文件具体存放位置,使用简单;
3、文件分块存储(1块缺省64MB),不同块可分布在不同机器节点上,通过元数据记录文件块位置;应用顺序读取各个块;
4 、系统设计为高容错性,允许廉价PC故障;每块文件数据在不同机器节点上保存3份;这种备份的另一个好处是可方便不同应用就近读取,提高访问效率。
HDFS缺点总结:
1、适合大数据文件保存和分析,不适合小文件,由于分布存储需要从不同节点读取数据,效率反而没有集中存储高;一次写入多次读取,不支持文件修改;
2、是最基础的大数据技术,基于文件系统层面提供文件访问能力,不如数据库技术强大,但也是海量数据库技术的底层依托;
3、文件系统接口完全不同于传统文件系统,应用需要重新开发。
二、大数据运算解决方案MapReduce
Hadoop的分布式计算模型MapReduce,最早是Google提出的,主要用于搜索领域,解决海量数据的计算问题。MapReduce有两个阶段组成:Map和Reduce,用户只需实现map()和reduce()两个函数,即可实现分布式计算
准备好板凳,下面是干货!!!
以统计某个文件中Deer、Car和 Bear三个单词的数量为例,如下图,来说明MapReduce是如何实现快速高效的分布式存储计算的。
单词统计
计算过程如下: 1、文件准备;
2、文件切片:这里切分为三片(作业并行处理,效率加倍哦);
3、Map过程:接受一个键值对,产生一组键值对,比如(Deer,1),代表Deer为键,1为值,代表Deer单词的数量。
4、派发过程:Shuffle将键值对派发给Reduce;
5、Reduce过程:将相同键的值累加(计算靠近的数据);
6、输出计算结果。
MapReduce技术特征总结:
1、自动并行化:系统自动进行作业并行化处理;
2、自动可靠处理:系统自动处理节点/任务的故障检测和恢复;
3、灵活扩展:节点可以灵活加入和退出,系统自动感知节点状态并进行处理;
4、 高性能:计算任务将被调度至数据所在的节点,减少网络开销,提升执行性能。
三、HADOOP生态系统
大数据不仅仅是指大量复杂的数据,而且描绘了一个正在快速涌现的生态系统,从新技术,新技能,新实践到崭新的商业模式,使企业和组织有能力对大量的,不断增长的,多样的,多维的,结构化以及非结构化数据进行管理,分析并采取行动。在此需求的推动下,Hadoop分布式存储和计算架构运应而生
HADOOP系统的两大核心就是HDFS和MapReduce,上面均已介绍过,这里简单介绍一下HADOOP系统常用的其他组件。
Hadoop组件 Impala:用于数据汇聚处理;
Hive:可以认为是一个数据仓库,其建立在Hadoop其他组件之上,包括数据的存储(基于HDFS或HBase)以及查询(依赖于Map/Reduce);
Hbase:是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBase技术可在廉价PC Server上搭建起大规模结构化存储集群;
Pig:是一种数据流语言和运行环境,用于检索非常大的数据集。为大型数据集的处理提供了一个更高层次的抽象。Pig包括两部分:一是用于描述数据流的语言,称为Pig Latin;二是用于运行Pig Latin程序的执行环境。适合于使用 Hadoop 和 MapReduce 平台来查询大型半结构化数据集。通过允许对分布式数据集进行类似 SQL 的查询,Pig 可以简化 Hadoop 的使用。