一、大数据发展历程
当大数据概念铺天盖地传入大家视野范围内,基本是在2010年前后,要讲大数据必定脱离不了第三次信息化浪潮。人类前后经历了三次信息化浪潮,分别是:
第一次信息化浪潮,1980年前后,标志是个人计算机出现与普及,代表企业是Intel、微软、苹果、IBM等;
第二次信息化浪潮,1995年前后,标志是互联网的迅速普及,代表企业是雅虎、谷歌等;
第三次信息化浪潮,2010年前后,标志是云计算、大数据、物联网的发展与应用,涌现了一批新技术、云原生企业;
大数据的发展历程:
上世纪90年代到上世纪末期,是大数据发展的萌芽期;
2000年到2010年,是大数据技术发展的成熟期;
2010年以后,是大数据技术大规模普及应用的阶段;
二、大数据基本概念
维基百科:“大数据是指无法在一定时间内用常规软件工具对其内容进行抓取、管理和处理的数据集合”
大数据典型特性,4V(volume、velocity、variety、value)
volume,数据量大;人类近两年生产的数据是历史所有数据量的总和;
velocity,快速化;数据的生成到消耗,时间窗口非常小,决策时间非常短;
variety,多样化;数据类型多,大量的数据由结构化数据和非结构化数据组成,90%数据都是非结构化数据;
value,价值密度低,商业价值高;
大数据的影响
在思维方式上,大数据颠覆了传统的思维方式。数据从抽样到全样,不存在误差被放大,不需要刻意最求精确,反而要提升效率。关注相关性,不关注因果性。
三、大数据关键技术
-大数据关键技术的两大核心:数据存储与管理、数据处理与分析;
对应两大技术,分布式存储、分布式处理;
分布式存储:解决海量数据存储的问题;
分布式处理:解决海量数据处理的问题;
-大数据技术以谷歌公司为技术代表:
分布式数据库BigTable;
分布式文件系统GFS;
分布式并行处理MapReduce;
-典型的计算模式
1、批处理:MapReduce、spark;不适合实时计算
2、流计算:流数据、实时计算,实时响应,否则分析结果就会失去商业价值。flume、storm、S4;
3、图计算:高效处理图结构数据,社交网络数据、地理信息系统数据等,Google pregel
4、交互式查询:做查询分析计算,实时性高。Dremel、hive、Cassandra、impala;
四、大数据处理架构Hadoop
Hadoop是Apache软件基金下的开源软件,是顶级项目,是Java语言开发的,支持多种编程语言;
Hadoop两大核心是HDFS+MapReduce;原生运行在linux上,也可以支持Windows;
HDFS是GFS的开源实现;
MapReduce也是谷歌提出;
HBase是BigTable的开源实现
Hadoop的特性:具备很高的可靠性,具备很高的效率,具备很好的扩展性,成本低(对比HPC);
-Hadoop1.0、2.0两大代;
Hadoop 1.0两大核心,HDFS、MapReduce;
其中MapReduce同时要做集群资源管理和数据处理;管的东西太多,集群效率低下;
因此,在Hadoop2.0中,单独用yarn来做资源管理,MapReduce只做数据的处理。MapReduce是架构在yarn之上第一个计算框架,后面还支持其他的计算框架,比如spark、storm等;
-Hadoop的项目结构
HDFS:分布式文件系统
YARN:做集群资源管理和调度框架;
MapReduce:基于磁盘计算,用于离线计算;
spark:基于内存计算,性能更好;
Tez:采用DAG有向无环图来组织MapReduce任务,将map任务和reduce任务进一步拆分,提升效率;
HBase:分布式数据库,用来处理非结构化数据和半结构化数据;
Hive:数据仓库,用户企业数据分析,可以兼容sql语句,把sql转换成MapReduce作业;
Pig:数据分析平台,把类SQL的数据分析请求转换为一系列经过优化处理的MapReduce运算;
zookeeper:做集群的监控和截图服务;
oozie:作业流调度系统
flume:做日志数据收集;
sqoop:做数据库导入导出;
-HDFS
HDFS:分为NameNode、DataNode、secondary NameNode;
MapReduce:job tracker、task tracker;
对于集群硬件配置:
DataNode/task tracker,2*4核CPU、16-24G内存、4个磁盘以上(支持jbod)、千兆网络;
NameNode由于将元数据存储在内存中,所以对内存要求比较高;2*4核CPU,16-72G内存,万兆或千兆网络;
secondary NameNode,作为NameNode的冷备份,对editlog做处理;
HDFS实现目标,兼容廉价的硬件设备,实现流数据读写,支持大数据集、支持简单的文件模型、兼容性;
HDFS的局限性:不适合低延时数据访问,无法高效存储大量小文件;
HDFS1.0时,只有一个NameNode,存在单点故障风险,集群性能也会受到影响。在HDFS2.0中,则有多个NameNode解决此问题;
HDFS的数据冗余,默认是3副本,可以自定义,配置1-4副本;
--------------------------未完待续