目录
大数据概述
大数据的4V:大量化、快速化、多样化、价值密度低。
大数据对思维方式的影响:颠覆了传统的思维方式——全样而非抽样、效率而非精确、相关而非因果
大数据对科学研究的影响:实验、理论、计算、数据
三次信息化浪潮
第一次——1980——个人计算机为标志——解决信息处理——Intel、AMD、IBM
第二次——1995——互联网——信息传输——雅虎、谷歌
第三次——2010——物联网、云计算和大数据——信息爆炸——亚马逊、美团
信息科技为大数据提供的技术
- 存储设备容量增加、成本降低
- CPU性能提升
- 网络带宽增加、终端数目增加
数据变革阶段
运营式系统阶段、用户原创内容阶段、感知式系统阶段。
大数据发展三个阶段
萌芽期(第一):20世纪90年代至21世纪初——随着数据挖掘理论和数据库技术的逐步成熟,一批商业智能工具和知识管理技术开始被应用。如数据仓库、专家系统、知识管理系统等。
成熟期(第二):21世纪第一个十年——Web2.0应用迅速发展,非结构化数据大量产生,传统处理方法难以应对,带动了大数据技术的快速突破,大数据解决方案逐渐走向成熟,GFS和MapReduce等大数据技术受到追捧,Hadoop平台开始崭露头角。
大规模应用期(第三):2010年以后——大数据应用渗透各行各业,数据驱动决策,信息社会智能化程度大幅提高。
Hadoop大数据开发平台
谷歌2004年“三驾马车”处理海量数据问题:GFS分布式文件系统、MapReduce大数据分布式计算框架、NoSQL数据库系统BigTable
大数据两个核心技术:分布式存储、分布式处理
分布式存储
- 文件系统:HDFS
- NoSQL:HBase、MongoDB
- 消息系统:Kafka
分布式处理
- 批处理计算:MapReduce、Spark
- 流计算:Storm,Flink
- 图计算:Pregel
- 查询分析计算:Hive、Impala
Hadoop:是一个能够对大量数据进行分布式处理的软件框架,并且是以一种可靠、高效、可伸缩的方式进行处理的,
Hadoop****特性:高扩展、高效性、高可靠、高容错、成本低。
Hadoop****生态:
- Zookeeper:分布式协调服务
- Hbase:分布式数据库
- Ambari:安装部署工具
- Oozie:作业流调度系统
- MapReduce:离线计算
- Tez:DAG计算
- Spark:内存计算
- yean:资源调度管理
- HDFS:分布式存储系统
- Sqoop:数据库TEL工具
- Flume:日志收集
Hadoop****三种安装模式
单机模式:一台机器上运行。(真正单机)
伪分布式模式:一台机器上模拟一个小集群,依赖SSH,需要初始化文件系统,本地的input文件夹和HDFS的input文件夹都在同一台机器上,并不需要通过网络传输数据。(单机装多机)
完全分布式模式:存储采用分布式文件系统HDFS,而且HDFS的名称结点和数据结点位于不同机器上。(真正多机)
伪分布式安装
- Hadoop进程可以分离的多个Java进程来运行
- 单结点,既作为NameNode也作为DataNode
- Hadoop配置文件位于/uhadoop/etc/hadoop/中,伪分布式需要修改配置文件core-site.xml和hdfs-site.xml
- Hadoop的配置文件是xml格式,每个配置以声明property的name和value来实现
伪分布式安装是在一个单机上模拟一个分布式的环境,启动Hadoop时,HDFS和yarn都将启动。其中HDFS包括Namenode、Datanode、SecondaryNamenode。Yarn包括Resourcemanager、Nodemanager。伪分布式具备Hadoop的主要功能。
伪分布式用途:常用于调试程序
Hadoop****的版本
Hadoop2.0****三大主要部分:HDFS、MapReduce、yarn。其中HDFS包括NN Federation和HA;MapReduce运行于Yean之上。
1.0****到2.0版本差异:
资源管理YARN
yarn——2.0的资源调度框架
MapReduce1.0既是一个计算框架,也是一个资源管理调度框架。到了Hadoop2.0后,其资源调度功能被分离形成Yarn,而被剥离了资源调度功能的MapReduce1.0变为2.0,只拥有计算功能。
总结:Yarn是纯粹的资源调度框架,MR2.0是纯粹的计算框架。
yarn的调度策略
- 先进先出——队列
- 容器——多队列——资源使用量小、优先级高的先执行;最大化吞吐量和利用率
- 公平——多队列——公平调度算法,支持资源抢占,确保平均而言所有作业获得等量的资源
yarn的目标就是实现一个集群多个框架。即在一个集群上部署一个统一的资源调度框架yean,在yean之上可以部署其他各种计算框架。
yarn好处
- yarn为这些计算框架提供统一的资源调度管理服务,并且能够根据各种计算框架的负载需求,调整各自占用的资源,实现集群资源共享和资源弹性收缩。
- 其可以实现一个集群上的不同应用负载混搭,有效提高了集群的利用率
- 不同计算框架可以共享底层存储,避免了数据集跨集群移动
分布式文件系统HDFS
分布式文件系统
分布式文件系统指通过网络实现文件在多台主机上进行分布式存储的文件系统,一般采用“客户机/服务器”(CS)模式,客户端以特定的通信协议通过网络与服务器建立连接,提出文件访问请求,如GFS和HDFS。
注:分布式文件系统是大集合,HDFS是子集。
HDFS目标
- 兼容廉价的硬件设备
- 流数据读写
- 大数据集
- 简单的文件模型
- 强大的跨平台兼容性
HDFS局限性
- 不适合低延迟数据访问
- 无法高效存储大量小文件
- 不支持多用户写入及任意修改文件
HDFS存储的好处
- 加快数据传输速度
- 很容易检查数据错误
- 保证数据可靠性
HDFS构造
块(HDFS的核心概念):HDFS默认一个块64MB,一个文件被分成多个块,以块作为存储单位。
名称结点(NameNode):负责管理分布式文件系统的命名空间,用两个文件保存了两个核心的数据结构(FSImage和EditLog)。
数据结点(DataNode):负责数据的存储和读取,会根据客户端或者是名称结点的调度来进行数据的存储和检索,并且向名称结点定期发送自己所存储的块的列表
第二名称结点(****SecondaryNamenode):用来保存名称结点对HDFS元数据信息的备份,并减少名称结点重启的时间。
注:一个机架上可以放一个名称节点、多个数据节点。
拓展:
块的默认大小是64MB,但是也可以128MB。HDFS中的块比一般普通文件系统的块大很多。之所以设计成一块一块是因为HDFS是面向大规模数据存储,且降低分布式节点的寻址开销。但是块不是越大越好,如果块过大会导致MapReduce才执行一两个任务,这样牺牲了其并行度,发挥不了分布式并行处理的效果。
名称节点也叫主节点。它是整个HDFS集群的管家,可以理解为是数据库中的数据目录。而数据节点才是存储真实数据即元数据。
FSImage用于保存系统文件树(如文件的复制等级、修改和访问时间、访问权限、块大小以及组成文件的块等)。EditLog用于记录对数据进行的操作。
名称节点若出错则根据第二名称结点备份。
名称节点管家会定期检查数据节点是否坏掉,如坏掉则标志位宕机,然后将坏掉的数据节点中的数据迁移到另外一个数据节点上。这种做法有时也可以解决负载均衡问题。
总结:HDFS用块存文件内容,名称结点做管家只有通知功能不具备亲自上手功能,数据节点相当于工人真正在干活,管家中的FSImage用于存储信息在块的位置,EditLog记录操作,EditLog做记录肯定不断变大,第二名称结点则作为备份工人和垃圾回收工人,定期处理不断变大的EditLog。