大数据复习提纲
一、题型
1 单选题(20题,40分);2 多选题(10题,20分);3 简答题(4题,40分)
二、复习重点
第1章 理解大数据的基本概念;掌握大数据的主要持点;掌握大数据的关键技术和主要应用。
基本概念:大数据(big data),或称巨量资料,指的是所涉及的资料量规模巨大到无法透过主流软件工具,在合理时间内达到撷取、管理、处理、并整理成为帮助企业经营决策更积极目的的资讯。
主要特点:“4V”数据量大(volume)、数据类型繁多(variety)、处理速度快(velocity)、价值密度低(value)。
大数据的关键技术:数据采集与预处理、数据存储和管理、数据处理与分析、数据安全和隐私保护。
- 掌握Hadoop的发展历史,如创始人,发展历程等:掌挥Hadoop的几种运行模式,以及应用框架等。
Hadoop发展史:
Hadoop最初是由Apache Lucene项目的创始人Doug Cutting开发的文本搜索库。Hadoop源自始于2002年的Apache Nutch项目——一个开源的网络搜索引擎并且也是Lucene项目的一部分;
在2004年,Nutch项目也模仿GFS开发了自己的分布式文件系统NDFS(Nutch Distributed File System),也就是HDFS的前身;
2004年,谷歌公司又发表了另一篇具有深远影响的论文,阐述了MapReduce分布式编程思想;
2005年,Nutch开源实现了谷歌的MapReduce;
到了2006年2月,Nutch中的NDFS和MapReduce开始独立出来,成为Lucene项目的一个子项目,称为Hadoop,同时,Doug Cutting加盟雅虎;
2008年1月,Hadoop正式成为Apache顶级项目,Hadoop也逐渐开始被雅虎之外的其他公司使用;
2008年4月,Hadoop打破世界纪录,成为最快排序1TB数据的系统,它采用一个由910个节点构成的集群进行运算,排序时间只用了209秒;
在2009年5月,Hadoop更是把1TB数据排序时间缩短到62秒。Hadoop从此名声大震,迅速发展成为大数据时代最具影响力的开源分布式开发平台,并成为事实上的大数据处理标准;
Hadoop的几种运行模式:Hadoop的运行模式分为3种:本地运行模式、伪分布运行模式、集群运行模式。
Hadoop包括三种安装模式:
l单机模式:只在一台机器上运行,存储是采用本地文件系统,没有采用分布式文件系统HDFS;
l伪分布式模式:存储采用分布式文件系统HDFS,但是,HDFS的名称节点和数据节点都在同一台机器上;
l分布式模式:存储采用分布式文件系统HDFS,而且,HDFS的名称节点和数据节点位于不同机器上。
Hadoop应用框架:
| 组件 | 功能 |
| HDFS | 分布式文件系统 |
| MapReduce | 分布式并行编程模型 |
| YARN | 资源管理和调度器 |
| Tez | 运行在YARN之上的下一代Hadoop查询处理框架 |
| Hive | Hadoop上的数据仓库 |
| Hbase | Hadoop上的非关系型的分布式数据库 |
| Pig | 一个基于Hadoop的大规模数据分析平台,提供类似SQL的查询语言Pig Latin |
| Sqoop | 用于在Hadoop与传统数据库之间进行数据传递 |
| Oozie | Hadoop上的工作流管理系统 |
| Zookeeper | 提供分布式协调一致性服务 |
| Storm | 流计算框架 |
| Flume | 一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统 |
| Ambari | Hadoop快速部署工具,支持Apache Hadoop集群的供应、管理和监控 |
| Kafka | 一种高吞吐量的分布式发布订阅消息系统,可以处理消费者规模的网站中的所有动作流数据 |
| Spark | 类似于Hadoop MapReduce的通用并行框架 |
掌握 HDFS 的日常操作命令,如:创建文件夹,本地文件上传至HDFS,HDFS 文件下线至本地等;
hadoop fs -ls
hadoop fs -mkdir
hadoop fs -cat
hadoop fs -copyFromLocal
掌握Linux的日常操作命令,如:创建文件夹,进入某个文件夹,查看文件夹中的内容,复制文件,重命名文件,查看文件的部分内容,删除文件和文件夹,修改文件权限,Hadoop fs的命令操作对象等;
实验书P73
理解HDFS的文件存储策略,如:数据块(block size)大小,抽象的块带来的好处等;
策略:分布式文件系统把文件分布存储到多个计算机节点上,成千上万的计算机节点构成计算机集群;分布式文件系统所采用的计算机集群,都是由普通硬件构成的;
HDFS采用抽象的块概念可以带来以下几个明显的好处:
● 支持大规模文件存储:文件以块为单位进行存储,一个大规模文件可以被分拆成若干个文件块,不同的文件块可以被分发到不同的节点上,因此,一个文件的大小不会受到单个节点的存储容量的限制,可以远远大于网络中任意节点的存储容量
● 简化系统设计:首先,大大简化了存储管理,因为文件块大小是固定的,这样就可以很容易计算出一个节点可以存储多少文件块;其次,方便了元数据的管理,元数据不需要和文件块一起存储,可以由其他系统负责管理元数据
● 适合数据备份:每个文件块都可以冗余存储到多个节点上,大大提高了系统的容错性和可用性。
掌握NameNode, DataNode, SecondaryNameNode, TaskTracker, JobTracker 等相关组件的基本功能及其相互关联关系,如谁跟谁在同一个节点启动,相关信息以什么文件形式保存在硬盘上等;
Hadoop集群的整体性能取决于CPU、内存、网络以及存储之间的性能平衡。因此运营团队在选择机器配置时要针对不同的工作节点选择合适硬件类型
一个基本的Hadoop集群中的节点主要有:
NameNode:负责协调集群中的数据存储;
DataNode:存储被拆分的数据块;
JobTracker:协调数据计算任务
TaskTracker:负责执行由JobTracker指派的任务
SecondaryNameNode:帮助NameNode收集文件系统运行的状态信息。
了解集群通常来说最主要的瓶颈所在;
计算机集群中的节点可能发生故障;集群的最主要瓶颈是:磁盘
配置Hadoop时需要修改的文件及其具体内容,如在版本0.2中,修改Hadoop配置文件的特点:高容错性
hadoop API的相关概念:
上传文件 hadoop fs -put 文件 hdfs文件夹
hadoop fs -put test.txt /files #将test.txt文件上传到hdfs文件夹files下
删除文件hadoop fs -rm -r 文件/文件夹
hadoop fs -rm -rf /quanfeihu/test.txt
查看文件hadoop fs -ls [-R] 文件夹
hadoop fs -ls -R /quanfeihu #递归显示quanfiehu文件夹下的文件
创建文件夹hadoop fs -mkdir [-p] 文件夹
hadoop fs -mkdir -p /quanfeihu/test/01 #创建文件夹/quanfeihu/test/01
下载文件hadoop fs -get 远程文件 本地文件
hadoop fs -get /quanfeihu/test.txt c://
复制文件hadoop fs -cp 远程文件 远程文件夹
hadoop fs -cp /quanfeihu/test.txt /quanfeihu/test/
移动/重命名 hadoop fs -mv 远程文件 远程文件(夹)
hadoop fs -mv /quanfeihu/test.txt /quanfeihu/test/
tail查看文件hadoop fs -tail [-f] 远程文件
hadoop fs -tail -f /quanfeihu/test.txt
在文件后追加hadoop fs -appendToFile 本地文件 远程文件(将本地文件追加到远程文件下)
hadoop fs -appendToFile c://test.txt /quanfiehu/test.txt
修改文件组/用户hadoop fs -chown owner:group 文件
hadoop fs -chown root:root /quanfeihu/test.txt
HDFS 数据读写任务适合的场景及其具体过程:
读:客户端连续调用open()、read()、close()读取数据时,HDFS执行读数据的过程;
写:客户端连续调用create()、write()、close()时,HDFS执行写数据过程;
了解HDFS 均衡器的主要作用:
HDFS 磁盘均衡器 HDFS 提供了一个用于 Datanode 内多磁盘之间的数据均衡工具,即 Diskbalancer (磁盘均衡器),它把数据均衡的分发到一个 Datanode 下的多个磁盘。
- 掌握Hbase 的相关概念及其特点,Hbase与HDFS的关系,
Hbase是一个高可靠、高性能、面向列、可伸缩的分布式数据库,是谷歌BigTable的开源实现,主要用来存储非结构化和半结构化的松散数据。Hbase的目标是处理非常庞大的表,可以通过水平扩展的方式,利用廉价计算机集群处理由超过10亿行数据和数百万列元素组成的数据表;
特点:
· Hadoop可以很好地解决大规模数据的离线批量处理问题,但是,受限于HadoopMapReduce编程框架的高延迟数据处理机制,使得Hadoop无法满足大规模数据实时处理应用的需求。
· HDFS面向批量访问模式,不是随机访问模式。
· 传统的通用关系型数据库无法应对在数据规模剧增时导致的系统扩展性和性能问题(分库分表也不能很好解决)。
· 传统关系数据库在数据结构变化时一般需要停机维护;空列浪费存储空间。
Hbase与Google的三篇著名论文之间的关系,Hbase与Mapkeduce 之间的关系等;
掌握 Hbase 的日常操作命令,如:查询所有表的相关信息,修改表的结构,查询表中的记录,统计表中记录的行数,清空表中的所有记录,向表中插入记录等。
create:创建表
list:列出Hbase中所有的表信息
put:向表、行、列指定的单元格添加数据
一次只能为一个表的一行数据的一个列添加一个数据
scan:浏览表的相关信息
get:通过表名、行、列、时间戳、时间范围和版本号来获得相应单元格的值
enable/disable:使表有效或无效
drop:删除表
了解适合安装Hbase官方版本的操作系统:
Hbase的安装也有三种模式:单机模式、伪分布模式和完全分布式模式
掌握Hbase在实际应用中的性能优化方法,如行键(RowKey)设计的原则:InMenory,Max Version, Tine to Live 等;
行键是按照字典序存储,因此,设计行键时,要充分利用这个排序特点,将经常一起读取的数据存储到一块,将最近可能会被访问的数据放在一块。
举个例子:如果最近写入Hbase表中的数据是最可能被访问的,可以考虑将时间戳作为行键的一部分,由于是字典序排序,所以可以使用Long.MAX_VALUE - timestamp作为行键,这样能保证新写入的数据在读取时可以被快速命中。
InMemory:创建表的时候,可以通过HColumnDescriptor.setInMemory(true)将表放到Region服务器的缓存中,保证在读取的时候被cache命中。
Max Version:创建表的时候,可以通过HColumnDescriptor.setMaxVersions(int maxVersions)设置表中数据的最大版本,如果只需要保存最新版本的数据,那么可以设置setMaxVersions(1)。
Time To Live:创建表的时候,可以通过HColumnDescriptor.setTimeToLive(int timeToLive)设置表中数据的存储生命期,过期数据将自动被删除,例如如果只需要存储最近两天的数据,那么可以设置setTimeToLive(2 * 24 * 60 * 60)。
掌握 Hbase 的二级素引的特点:
Hindex 是华为公司开发的纯 Java 编写的Hbase二级索引,兼容 Apache Hbase 0.94.8。当前的特性如下:
多个表索引
多个列索引
基于部分列值的索引
- 掌握 NoSQL 的基本概念:
概念:NoSQL是对非关系数据库的统称,所采用的数据模型不是传统关系数据库的关系模型,而是类似键值、列族、文档等非关系模型。
通常,NoSQL数据库具有以下几个特点:
(1)灵活的可扩展性
(2)灵活的数据模型
(3)与云计算紧密融合
第6章 不考
第7章 掌握 MapReduce 的思想及其具体应用,如:利用MapReduce 实现关系的自然连接等的具体操作步骤,这个是重点!
MapReduce将复杂的、运行于大规模集群上的并行计算过程高度地抽象到了两个函数:Map和Reduce
编程容易,不需要掌握分布式并行编程细节,也可以很容易把自己的程序运行在分布式系统上,完成海量数据的计算
MapReduce采用“分而治之”策略,一个存储在分布式文件系统中的大规模数据集,会被切分成许多独立的分片(split),这些分片可以被多个Map任务并行处理
MapReduce设计的一个理念就是“计算向数据靠拢”,而不是“数据向计算靠拢”,因为,移动数据需要大量的网络传输开销
MapReduce框架采用了Master/Slave架构,包括一个Master和若干个Slave。Master上运行JobTracker,Slave上运行TaskTracker
Hadoop框架是用Java实现的,但是,MapReduce应用程序则不一定要用Java来写
具体应用:WordCount程序任务
| 程序 | WordCount |
| 输入 | 一个包含大量单词的文本文件 |
| 输出 | 文件中每个单词及其出现次数(频数),并按照单词字母顺序排序,每个单词和其频数占一行,单词和频数之间有间隔 |
- 了解Yarn的主要特点,掌握 Yarn默认的调度器及其相关特点等:
yarn的特点:
速度超快。
Yarn 缓存了每个下载过的包,所以再次使用时无需重复下载。 同时利用并行下载以最大化资源利用率,因此安装速度更快。
超级安全。
在执行代码之前,Yarn 会通过算法校验每个安装包的完整性。
超级可靠。
使用详细、简洁的锁文件格式和明确的安装算法,Yarn 能够保证在不同系统上无差异的工作。
ResourceManager:
处理客户端请求;
启动/监控ApplicationMaster;
监控NodeManager;
资源分配与调度;
ResourceManager(RM)是一个全局的资源管理器,负责整个系统的资源管理和分配,主要包括两个组件,即调度器(Scheduler)和应用程序管理器(Applications Manager);
调度器接收来自ApplicationMaster的应用程序资源请求,把集群中的资源以“容器”的形式分配给提出申请的应用程序,容器的选择通常会考虑应用程序所要处理的数据的位置,进行就近选择,从而实现“计算向数据靠拢”;
容器(Container)作为动态资源分配单位,每个容器中都封装了一定数量的CPU、内存、磁盘等资源,从而限定每个应用程序可以使用的资源量;
调度器被设计成是一个可插拔的组件,YARN不仅自身提供了许多种直接可用的调度器,也允许用户根据自己的需求重新设计调度器;
应用程序管理器(Applications Manager)负责系统中所有应用程序的管理工作,主要包括应用程序提交、与调度器协商资源以启动ApplicationMaster、监控ApplicationMaster运行状态并在失败时重新启动等;
NodeManager:
单个节点上的资源管理;
处理来自ResourceManger的命令;
处理来自ApplicationMaster的命令;
NodeManager是驻留在一个YARN集群中的每个节点上的代理,主要负责:
容器生命周期管理;
监控每个容器的资源(CPU、内存等)使用情况;
跟踪节点健康状况;
以“心跳”的方式与ResourceManager保持通信;
向ResourceManager汇报作业的资源使用情况和每个容器的运行状态;
接收来自ApplicationMaster的启动/停止容器的各种请求;
需要说明的是,NodeManager主要负责管理抽象的容器,只处理与容器相关的事情,而不具体负责每个任务(Map任务或Reduce任务)自身状态的管理,因为这些管理工作是由ApplicationMaster完成的,ApplicationMaster会通过不断与NodeManager通信来掌握各个任务的执行状态;
ApplicationMaster
为应用程序申请资源,并分配给内部任务
任务调度、监控与容错
ApplicationMaster的主要功能是:
(1)当用户作业提交时,ApplicationMaster与ResourceManager协商获取资源,ResourceManager会以容器的形式为ApplicationMaster分配资源;
(2)把获得的资源进一步分配给内部的各个任务(Map任务或Reduce任务),实现资源的“二次分配”;
(3)与NodeManager保持交互通信进行应用程序的启动、运行、监控和停止,监控申请到的资源的使用情况,对所有任务的执行进度和状态进行监控,并在任务发生失败时执行失败恢复(即重新申请资源重启任务);
(4)定时向ResourceManager发送“心跳”消息,报告资源的使用情况和应用的进度信息;
(5)当作业完成时,ApplicationMaster向ResourceManager注销容器,执行周期完成。
第9章 不考。



