第一章
1.试述信息技术发展史上的三次信息化浪潮及具体内容。
信息化浪潮 | 发生时间 | 标志 | 解决问题 | 代表企业 |
---|---|---|---|---|
第一次浪潮 | 1980年前后 | 个人计算机 | 信息处理 | Intel、AMD、IBM、苹果、微软、联想‘戴尔、惠普等 |
第二次浪潮 | 1955年前后 | 互联网 | 信息传输 | 雅虎、谷歌、阿里巴巴、百度、腾讯等 |
第三次浪潮 | 2010年前后 | 物联网、云计算和大数据 | 信息爆炸 | 将涌现出一批新的市场标杆企业 |
2.试述数据产生方式经历的几个阶段。
- 运营式系统阶段
- 数据往往伴随着一定的运营活动而产生并记录在数据库中,数据的产生方式是被动的。
- 用户内容原创阶段
- 数据爆发产生于Web2.0时代,而标志就是用户原创内容
- 智能手机等移动设备加速内容产生
- 数据产生方式是主动的
- 感知式系统阶段
- 感知式系统的广泛使用
- 人类社会的数据量第三次大的飞跃最终导致了大数据的产生
3.试述大数据的三个特征。
- 数据量大
- 数据类型繁多
- 处理速度快
- 价值密度低
4.试述大数据时代的“ 数据爆炸”特性。
人类社会正在经历第二次“数据爆炸”,各种数据的产生速度之快,产生数量之大,已远远超出人类可以控制的范围,“数据爆炸’成为大数据时代的鲜明特征。
5.科学研究经历了哪四个阶段?
-
实验科学
采用实验来解决一些科学问题。
-
理论科学
采用各种数学、几何、物理等理论,构建问题模型和解决方案。
-
计算科学
通过设计算法并编写乡音程序输入计算机运行,人类可以借助于计算机的高速运算能力去解决各种问题。
-
数据密集型科学
一般先提出可能的理论,在手机数据,然后通过计算来验证。
6.试述大数据对思维方式的重要影响。
-
全样而非抽样
科学分析完全可以针对全集数据而不是抽样数据,并且可以在短时间内迅速得到分析结果。
-
效率而非精确
全样分析结果不存在误差被放大的问题,海量数据的实时分析才是大数据时代的首要目标。
-
相关而非因果
大数据时代,因果关系不在那么重要,人们转而追求相关性。
7.大数据决策与传统的基于数据仓库的决策有什么区别?
传统的数据库以关系型数据库为基础,无论是数据类型还是数据量方面都存在较大的限制。而现在大数据决策可以面向类型繁多的、非结构化数据进行决策分析。
8.举例说明大数据的具体应用。
领域 | 大数据应用 |
---|---|
互联网 | 借助于大数据技术,可以分析客户行为,进行商品推荐和有针对性的广告投放 |
物流行业 | 利用大数据优化物流网络,提高物流效率,降低物流成本 |
···· |
9.举例说明大数据的关键技术。
技术层面 | 功能 |
---|---|
数据采集与预处理 | 利用ETL工具将分布的、异构数据源中的数据,如关系数据、平面数据文件等,抽取到临时中间层后进行清洗、转换、集成,最后加载到数据仓库或数据集市中,成为联机分析处理、数据挖掘的基础;也可以利用日志采集工具(如Flurme、Kafka 等)把实时采集的数据作为流计算系统的输人,进行实时处理分析 |
数据存储与管理 | 利用分布式文件系统、数据仓库、关系数据库、NoSQL数据库、云数据库等,实现对结构化、半结构化和非结构化海量数据的存储和管理 |
数据处理与分析 | 利用分布式并行编程模型和计算框架,结合机器学习和数据挖掘算法,实现对海量数据的处理和分析;对分析结果进行可视化呈现,帮助人们更好地理解数据、分析数据 |
数据安全和隐私保护 | 在从大数据中挖掘潜在的巨大商业价值和学术价值的同时,构建隐私数据保护体系和数据安全体系,有效保护个人隐私和数据安全 |
10.大数据产业包含哪些层面?
大数据产业包括IT基础设施层、数据源层、数据管理层、数据分析层、数据平台层、数据应用层
11.定义并解释以下术语:云计算、物联网。
- 云计算:实现了通过网络提供可伸缩性、廉价的分布式计算能力,用户只需要在具备网络接入条件的地方,就可随时随地获得所需要的IT资源。
- 物联网:利用局部网络或互联网等通信技术把传感器、控制器、机器、人员和物等通过新的方式连在一起,形成人与物、物与物项链,实现信息化和远程管理控制。
12.详细阐述大数据、云计算和物联网三者之间的区别与联系。
- 大数据、云计算和物联网的区别。大数据侧重于对海量数据的存储、处理与分析,从海量数据中发现价值,服务于生产和生活:云计算本质上旨在整合和优化各种IT资源,并通过网络以服务的方式廉价地提供给用户;物联网的发展目标是实现物物相连,应用创新是物联网发展的核心。
- 大数据、云计算和物联网的联系。从整体上看,大数据、云计算和物联网这三者是相辅相成的。大数据根植于云计算,大数据分析的很多技术都来自于云计算,云计算的分布式数据存储和管理系统(包括分布式文件系统和分布式数据库系统)提供了海量数据的存储和管理能力,分布式并行处理框架MapRecduce提供了海量数据分析能力,没有这些云计算技术作为支撑,大数据分析就无从谈起。反之,大数据为云计算提供了“用武之地”,没有大数据这个“练兵场”,云计算技术再先进,也不能发挥它的应用价值。物联网的传感器源源不断产生的大量数据,构成了大数据的重要数据来源,没有物联网的飞速发展,就不会带来数据产生方式的变革,即由人工产生阶段转向自动产生阶段,大数据时代也不会这么快就到来。同时,物联网需要借助于云计算和大数据技术,实现物联网大数据的存储、分析和处理。
可以说, 云计算、大数据和物联网三者已经彼此渗透、相互融合,在很多应用场合都可以同时看到三者的身影。在未来,三者会继续相互促进、相互影响,更好地服务于社会生产和生活的各个领城。
第二章
1.试述 hadoop 和谷歌的mapreduce、gfs等技术之间的关系
Hadoop 的核心是分布式文件系统 HDFS和 MapReduce,HDFS是谷歌文件系 统 GFS的开源实现, MapReduces是针对谷歌 MapReduce的开源实现。
2.试述 Hadoop具有哪些特性。
高可靠性,高效性,高可扩展性,高容错性,成本低,运行在 Linux 平台, 支持多种编程语言。
3.试述 Hadoop在各个领域的应用情况。
2007年,雅虎在 Sunnyvale 总部建立了 M45——一个包含了 4000 个处理器 和 1.5PB 容量的 Hadooop集群系统; Facebook主要将 Hadoop平台用于日志处理,推荐系统和数据仓库等方面; 百度主要使用 Hadoop于日志的存储和统计、 网页数据的分析和挖掘、 商业分析、 在线数据反馈、网页聚类等。
4.试述 Hadoop的项目结构以及每个部分的具体功能。
- Commeon是为 Hadoop其他子项目提供支持的常用工具,主要包括文件系统、 RPC 和串行化库
- Avro 是为 Hadoop的子项目,用于数据序列化的系统,提供了丰富的数据结构类 型、快速可压缩的二进制数据格式、 存储持续性数据的文件集、 远程调用的功能 和简单的动态语言集成功能。
- HDFS是 Hadoop项目的两个核心之一,它是针对谷歌文件系统的开源实现。
- HBase是一个提高可靠性、高性能、可伸缩、实时读写、分布式的列式数据库, 一般采用 HDFS作为其底层数据存储。
- MapReduce是针对谷歌 MapReduce的开源实现,用于大规模数据集的并行运算。
- Zoookepper 是针对谷歌 Chubby的一个开源实现,是高效和可靠的协同工作系统, 提供分布式锁之类的基本服务, 用于构建分布式应用,减轻分布式应用程序所承 担的协调任务。
- Hive 是一个基于 Hadoop的数据仓库工具,可以用于对 Hadoop文件中的数据集 进行数据整理、特殊查询和分布存储。
- Pig 是一种数据流语言和运行环境,适合于使用 Hadoop和 MapReducce平台上查 询大型半结构化数据集。
- Sqoop可以改进数据的互操作性,主要用来在 H大哦哦哦配合关系数据库之间交换数据。
- Chukwa是一个开源的、用于监控大型分布式系统的数据收集系统,可以将各种 类型的数据收集成适合 Hadoop处理的文件,并保存在 HDFS中供 Hadoop进行各 种 MapReduce操作。
5.配置Hadoop时,Java的路径JAVA_HOME是在哪一个配置文件中进行设置的?
Hadoop-env.sh
6.所有节点的HDFS路径是通过fs.default.name来设置的,请问它是在哪个配置文件中进行设置的?
core-site.xml
7.试列举单机模式和伪分布模式的异同点。
- 相同点
- 单机模式和伪分布模式都是在一台单机上运行
- 不同点
- 分布式文件系统不同
- 单机模式没有分布式文件系统,而是直接读写本地操作系统的文件系统
- 伪分布模式用不同的java进程模仿分布式运行中的各类节点
- 启动进程不同
- 单机模式下,Hadoop不会启动NameNode、datanode、jobtracker、tasktracker等守护进程,Map()和Reduce()任务作为同一个进程的不同部分来执行的。
- 伪分布模式下,hadoop启动NameNode、datanode、jobtracker、tasktracker等守护进程都在同一台机器上运行,是相互独立的Java进程。
- 配置文件处理方式不同
- 单机模式下,不对配置文件进行修改
- 伪分布模式下,需要修改配置文件:core-site.xml、hdfs-site.xml。
- 分布式文件系统不同
8.Hadoop伪分布式运行启动后所具有的进程都有哪些?
-
NodeManger
-
Jps
-
NameNode
-
SecondaryNameNode
-
DateNode
-
ResourceManger
第三章
1. 试述分布式文件系统设计的需求。
设计需求 | 含义 | HDFS的实现情况 |
---|---|---|
透明性 | 具备访问透明性、位置透明性、性能、和伸缩透明性 | 只能提供一定程度的访 问透明性,完全支持位置 透明性、性能和伸缩透明 性 |
并发控制 | 客户端对于文件的读写 不应该影响其他客户端 对同一个文件的读写 | 机制非常简单,任何时候 都只允许有一个程序写入某个文件 |
文件复制 | 一个文件可以拥有不同位置的多个副本 | HDFS采用了多副本机制 |
硬件和操作系统的异构 | 可以在不同的操作系统 和计算机上实现同样的 客户端和服务端程序 | 采用 Java 语言开发,具有很好的跨平台能力 |
可伸缩性 | 支持节点的动态加入或 退出 | 建立在大规模廉价机器 上的分布式文件系统集 群,具有很好的伸缩性 |
容错 | 保证文件服务在客户端 或者服务端出现问题的 时候能正常使用 | 具有多副本机制和故障 自动检测、恢复机制 |
安全 | 保证系统的安全性 | 安全性较弱 |
2. 分布式文件系统是如何实现较高水平的水平扩展?
分布式文件系统在物理结构上是由计算机集群中的多个节点构成的,这些节点分为俩类,一类叫“主节点”或者也被称为“名称节点”,另一类叫“从节点”或者也被称为“数据节点”。
3. 试述HDFS中的块和普通文件系统中的块的区别。
- 在传统的文件系统中,为了提高磁盘读写效率,比如是以数据块为单位,比如以字节为单位。
- HDFS中的块,默认一个块大小为 64MB,而 HDFS中的文件会被拆分成多个块, 每个块作为独立的单元进行存储。 HDFS在块的大小的设计上明显要大于普通文 件系统。
4. 试述 HDFS中的名称节点和数据节点的具体功能。
- 名称节点负责管理分布式文件系统的命名空间,记录分布式文件系统中的每个文件中各个块所在数据节点的位置信息。
- 数据节点是分布式文件系统 HDFS的工作节点,负责数据的存储和读取,会根据客户端或者是名称节点的调度来进行数据的存储和检索, 并向名称节点定期发送自己所存储的块的列表。
5. 在分布式文件系统中,中心节点的设计至关重要,请阐述HDFS是如何减轻中心节点的负担的。
名称节点不参与数据的传输。
6.HDFS只设置唯一一个名称节点,在简化系统设计的同时也带来了一些明显的局限性,阐述局限性具体表现在哪些方面。
- 命名空间的限制: 名称节点是保存在内存中,因此名称节点能够容纳对象(文件,块) 的个数受到内存空 间大小的限制
- 性能的瓶颈 :整个分布式文件系统的吞吐量受限于单个名称节点的吞吐量
- 隔离问题 :由于集群中只有一个名称节点,只有一个命名空间,因此无法为不同应用程序 进行隔离
- 集群的可用性 一旦唯一的名称节点发生故障,会导致整个集群不可用
7.试述HDFS的冗余数据保存策略。
HDFS 采用多副本方式对数据进行冗余存储,通常一个数据块的多个副本会被分不到不 同的数据节点上。
8.数据复制主要是数据写入和数据恢复的时候发生,HDFS是使用流水线复制策略,请阐述该策略的细节。
这个文件首先被写入本地,被切分成若干个块,每个块向 HDFS集群中名称节点发起写 请求,名称节点会将各个数据节点的使用情况,选择一个数据节点列表返回给客户端, 当第一个数据节点接收块的时候,写入本地,并且向第二数据节点发起连接请求,把自己的接收的块传给第二个数据节点,依次类推,列表中的对个数据节点形成一条数据复 制的流水线。最后数据写完后,数据复制同时完成。
9.试述HDFS是如何探测错误发生以及如何进行恢复的。
- 名称节点出错:
- 把名称节点的元数据信息同步存储到其他文件系统;
- 可以把第二名称节点作为补救措施 一般会把两者结合使用,其他文件系统的元数据信息放到第二名称节点进行恢复, 并把第二名称节点作为名称节点使用(这样做仍然会有一部分数据丢失)
- 数据节点出错: 数据节点定期向名称节点发送心跳信息,向名称节点报告状态,如果名称节点没有 收到某些数据节点时,这时名称节点将这些数据节点标记为宕机,由于这些数据节点不 可用导致一些数据块的副本数据量小于冗余因子时,就会启动数据冗余复制,生成新的副本
- 数据出错: 网络传输和磁盘错误等因数都会造成数据的错误, 客户端读取数据后,会采用 md5 对数据块进行校验,以正确读取到正确的数据。如果校验出错,客户端就会请求到另外 一个数据节点读取该文件块,并向名称节点报告这个文件错误,名称节点会定期检查并 重新复制这个块
10.请阐述HDFS在不发生故障的情况下读文件的过程。
- 使用 HDFS提供供的客户端 Client, 向远程的 Namenode 发起 RPC请求;
- Namenode 会视情况返回文件的部分或者全部 block 列表, 对于每个 block, Namenode 都会返回有该 block 拷贝的 DataNode 地址;
- 客户端 Client 会选取离客户端最近的 DataNode 来读取 block; 如果客户端本 身就是 DataNode,那么将从本地直接获取数据;
- 读取完当前 block 的数据后, 关闭当前的 DataNode 链接, 并为读取下一个 block 寻找最佳的 DataNode;
- 当读完列表 block 后, 且文件读取还没有结束, 客户端会继续向 Namenode 获 取下一批的 block 列表;
- 读取完一个 block 都会进行 checksum 验证, 如果读取 datanode 时出现错误, 客户端会通知 Namenode , 然后再从下一个拥有该 block 拷贝的 datanode 继续读。
11.请阐述HDFS在不发生故障的情况下写文件的过程。
- 使用 HDFS提供的客户端 Client, 向远程的 Namenode 发起 RPC请求
- Namenode 会检查要创建的文件是否已经存在, 创建者是否有权限进行操作, 成功则会为文件创建一个记录, 否则会让客户端抛出异常;
- 当客户端开始写入文件的时候, 客户端会将文件切分成多个 packets, 并在内 部以数据队列“ data queue( 数据队列) ”的形式管理这些 packets, 并向 Namenode 申请 blocks,获取用来存储 replicas 的合适的 datanode 列表, 列表的大小根据 Namenode 中 replication 的设定而定;
- 开始以 pipeline ( 管道) 的形式将 packet 写入所有的 replicas 中。 开发库把 packet 以流的方式写入第一个 datanode, 该 datanode 把该 packet 存储之后, 再将其 传递给在此 pipeline 中的下一个 datanode , 直到最后一个 datanode, 这种写数据的方 式呈流水线的形式。
- 最后一个 datanode 成功存储之后会返回一个 ack packet( 确认队列) , 在 pipeline 里传递至客户端, 在客户端的开发库内部维护着” ack queue”, 成功收到 datanode 返回的 ack packet 后会从” ack queue”移除相应的 packet。
- 如果传输过程中, 有某个 datanode 出现了故障, 那么当前的 pipeline 会被关 闭, 出现故障的 datanode 会从当前的 pipeline 中移除, 剩余的 block 会继续剩下的 datanode 中继续以 pipeline 的形式传输, 同时 Namenode 会分配一个新的 datanode, 保 持 replicas 设定的数量。
- 客户端完成数据的写入后, 会对数据流调用 close()方法, 关闭数据流;
- 只要写入了 dfs.replication.min 的复本数( 默认为 1),写操作就会成功, 并 且这个块可以在集群中异步复制, 直到达到其目标复本数 ( dfs. replication 的默认值 为 3),因为 namenode 已经知道文件由哪些块组成, 所以它在返回成功前只需要等待 数据块进行最小量的复制。
第四章
1. 试述在 Hadoop 体系架构中 HBase 与其他组成部分的相互关系。
HBase 利用 Hadoop MapReduce 来处理 HBase 中的海量数据,实现高 性能计算;利用 Zookeeper 作为协同服务,实现稳定服务和失败恢复;使用