大数据复习
- 信息技术发展史上的3次信息化浪潮及其具体内容。
信息化浪潮 | 发生时间 | 标志 | 解决问题 | 代表公司 |
第一次浪潮 | 1980年前后 | 个人计算机 | 信息处理 | Intel 、AMD、IBM、苹果、微软、联想、戴尔、惠普等 |
第二次浪潮 | 1995年前后 | 互联网 | 信息传输 | 雅虎、谷歌·阿里巴 巴、百度、腾讯等 |
第三次浪潮 | 2010年前后 | 物理网、云计算 和大数据 | 信息爆炸 | 将涌现出一批新的 市场 标杆企业 |
- 大数据对思维方式的重要影响。
答:三种思维的转变:全样而非抽样,效率而非精确,相关而非因果。
- 举例说明大数据的具体应用
领域 | 大数据的应用 |
金融行业 | 大数据在高频交易、社区情绪分析和信贷风险分析三大金融创新领域发挥作用。 |
汽车行业 | 利用大数据和物联网技术的五人驾驶汽车,在不远的未来将走进我们的日常生活 |
互联网行业 | 借助于大数据技术,可以分析客户行为·进行商品推荐和有针对性广告投放 |
个人生活 | 大数据还可以应用于个人生活,利用与每个人相关联的“个人大数据”,分析个人生活行为习惯,为其提供更加周全的个性化服务。 |
- 举例说明大数据的关键技术。
批处理计算,流计算,图计算,查询分析计算
- 详细阐述大数据、云计算和物联网三者之间的区别与联系。
- Hadoop和谷歌的MapReduce、GFS等技术之间的关系。
答: Hadoop的核心是分布式文件系统 HDFS和MapReduce,
HDFS是谷歌文件系统GFS的开源实现,
MapReduces 是针对谷歌 MapReduce的开源实现。
- Hadoop具有哪些特性。
答: (4高) 高可靠性,高效性,高可扩展性,高容错性。
成本低, 运行在 Linux平台, 支持多种编程语言。
- Hadoop生态系统以及每个部分的具体功能。
HDFS分布式文件系统:HDFS是Hadoop的主要数据存储系统,用于存储海量数据。它通过将大文件分块分布存储在不同节点上来实现数据的可靠存储和高吞吐量访问。
YARN:YARN是Hadoop集群资源管理器,负责管理计算资源,并将这些资源分配给各种应用程序。它允许Hadoop集群运行多种数据处理引擎,如MapReduce、Spark等。
MapReduce:MapReduce是Hadoop的原生计算引擎,用于处理和分析存储在HDFS中的大数据。它将复杂的计算任务分解为许多简单的任务,这些任务可以在集群中的不同节点上并行执行。
Hive:Hive是一个数据仓库基础设施,用于简化数据的汇总、查询和分析。它提供了一个类似于SQL的查询语言(HiveQL),使得用户可以轻松地执行复杂的查询操作。
Pig:Pig是一个在Hadoop上执行MapReduce任务的高级平台,它提供了一种简化编程模型的语言Pig Latin。Pig旨在简化复杂的数据转换操作。
HBase:HBase是一个分布式、可扩展、面向列的存储系统,用于存储大量的稀疏数据集。它提供了对大数据进行随机实时读/写访问的能力。
Zookeeper:Zookeeper是一个分布式服务框架,用于维护配置信息、命名服务、分布式同步和组服务等。它确保了Hadoop集群的协调和一致性。
- 分布式文件系统设计的需求。
透明性 :HDFS提供一定程度的访问透明性,完全支持位置透明性、性能和伸缩透明性。
并发控制:其并发控制机制简单,只允许一个程序写入某个文件,确保并发写入的安全。
文件复制:HDFS通过多副本机制确保数据的可靠性和可用性。
硬件和操作系统的异构性:使用Java开发,保证了良好的跨平台能力。
可伸缩性:HDFS设计支持节点的动态加入或退出,能够在大规模廉价机器上构建分布式文件系统集群,具有良好的伸缩性。
- 分布式文件系统是如何实现较高水平扩展的?
分布式文件系统在物理结构上是由计算机集群中的多个节点构成的,这些节点分为两类:
一类叫“主节点”(Master Node)或者也被称为“名称结点”(NameNode)
一类叫“从节点”(Slave Node )或者也被称为“数据节点”(DataNode)
- HDFS中的名称节点和数据节点的具体功能。
名称节点:负责管理分布式文件系统系统的命名空间,的每个文件中各个块所在的数据节点的位置信息;
数据节点:HDFS的工作节点,负责数据的存储和读取,数据的存储和检索。
- HDFS的冗余数据保存策略。
- 副本数量:保存三个副本,可配置。
- 放置策略:一本地节点,二同机架不同节点,三不同机架节点。
- 副本复制:自动复制副本以恢复损坏或丢失的数据块。
- 数据完整性:使用校验和来保证数据完整性。
- 安全模式:启动时进入安全模式,确保最小副本数后再进行数据块复制。
- HDFS是如何探测错误发生以及如何进行恢复的。
- 心跳机制:DataNode定期向NameNode发送心跳,NameNode通过心跳来监控DataNode的状态。
- 数据冗余:文件被分成数据块并在多个DataNode上存储多个副本,默认为三个。
- 校验和 :数据块写入时生成校验和,读取时验证,以确保数据完整性。
- 故障转移:在高可用配置中,备用NameNode可快速接管活跃NameNode的工作。
- 数据重建:当检测到数据块副本数不足时,HDFS会在其他DataNode上重建副本。
- 在Hadoop体系架构中HBase与其他组成部分的相互关系。
MapReduce来处理 HBase中的海量数据,实现高性能计算;
Zookeeper作为协同服务,实现稳定服务和失败恢复;
HDFS作为高可靠的底层存储,利用廉价集群提供海量数据存储能力;
Sqoop为HBase的底层数据导入功能,
Pig和Hive为HBase提供了高层语言支持
HBase是 BigTable的开源实现
- 请阐述HBase和BigTable的底层技术的对应关系。
- 请阐述HBase和传统关系数据库的区别。
- HBase支持哪些类型的访问接口?
答:HBase提供了NativeJava API,HBase Shell,Thrift Gateway,REST GateWay,Pig,Hive 等访问接口
- 请以实例说明HBase数据模型。
- 分别解释HBase中行键、列键和时间戳的概念。
- 行键:唯一标识一行数据,决定了数据的存储和访问顺序。
- 列键:由列族和列限定符组成,用于定位表中的特定列。
- 时间戳:标识数据的不同版本,每个单元格存储的数据可以有多个时间戳版本
- 请列举实例来阐述HBase的概念视图和物理视图的区别。
- HBase各功能组件及其作用。
- 库函数: 链接到每个客户端
- Master 主服务器: 主服务器 Master 主要负责表和 Region 的管理工作
- Region 服务器: 许多个 Region 服务器是 HBase 中最核心的模块,负责维护分配给自己的 Region ,并响应用户的读写请求
- 请阐述HBase的数据分区机制。
HBase采用分区存储,一个大的表会被分拆许多个 Region,这些 Region会被分发到不同的服务器上实现分布式存储。
- HBase中的分区是如何定位的?
通过构建的映射表的每个条目包含两项内容, Regionde 标识符与Region 服务器标识,这个条目就标识 Region 和 Region 服务器之间的对应关系,从而就可以知道某个 Region 被保存在哪个 Region 服务器中。
- ase的三层结构中各层次的名称和作用。
- 请阐述在HBase三层结构下,客户端是如何访问到数据的。
首先访问 Zookeeper ,获取-ROOT 表的位置信息,然后访问-Root-表获得.MATA.表的信息,接着访问.MATA.表,找到所需的 Region 具体位于哪个Region 服务器,最后才会到该 Region 服务器读取数据.
- HBase系统基本架构及其每个组成部分的作用。
客户端:提供API进行数据操作,并缓存Region位置信息以加速访问。
ZooKeeper:管理集群状态,确保Master的唯一性,并监控Region服务器。
Master:管理表(增删改查)和Region,执行负载均衡,处理Region的分裂和合并。
Region服务器:管理和服务Region,处理客户端的读写请求。
- 请阐述Region服务器向HDFS中读写数据的基本原理。
Region服务器内部管理一系列Region对象和一个HLog文件,其中,HLog是磁盘上面的记录文件,它记录着所有的更新操作。每个Region对象又是由多个Store组成的,每个Store 对象了表中的一个列族的存储。每个Store又包含了MemStore和若千个StoreFile,其中,MemStore是在内存中的缓存。
- HStore的工作原理。
每个 Store 对应了表中的一个列族的存储。每个 Store 包括一个 MenStore 缓 存和若千个StoreFile 文件 。 MenStore 是排序的内存缓冲区,当用户写人数据 时,系统首先把数据放入MenStore 缓存,当 MemStore 缓存满时,就会刷新 到磁盘中的一个 StoreFile 文件中,当单个StoreFile 文件大小超过一定阈值时, 就会触发文件分裂操作。
- HLog的工作原理。
答:HBase 系统为每个 Region 服务器配置了一个 HLog文件,它是一种预写式日志,用户更新数据必须首先写人日志后,才能写人 MemStore 缓存,直到MemStore 缓存内容对应的日志已经写人磁盘,该缓存内容才能被刷写到磁盘
- 在HBase中,每个Region服务器维护一个HLog,而不是每个Region都单独维护一个HLog。请说明这种做法的优点和缺点。
优点:多个 Region 对象的更新操作所发生的日志修改,只需要不断把日 志记录追加到单个日志文件中,不需要同时打开、写人到多个日志文件中。
缺点:如果一个 Region 服务器发生故障, 为了恢复其上次的 Region 对象, 需要将 Region服务器上的对象, 需要将 Region 服务器上的 HLog 按照其所属 的 Region 对象进行拆分,然后分发到其他 Region 服务器上执行恢复操作。
- 请比较NoSQL数据库和关系数据库的优缺点。
- NoSQL数据库的四大类型。
- 键值数据库
- 列族数据库
- 文档数据库
- 图数据库
- 键值数据库、列族数据库、文档数据库和图数据库的适用场合和优缺点。
数据库原理 数据规模 数据库模式 查询效率 一致性 数据完整性
扩展性 可用性 标准化 技术支持 可维护性
- MapReduce是处理大数据的有力工具,但不是每个任务都可以使用MapReduce来进行处理的。适合用MapReduce来处理的任务或者数据集需满足怎样的要求。
答:待处理的数据集可以分 解成许多小的数据集,而且每一个小数据集都可以完全并行地进行处理。
- MapReduce的工作流程(需包括提交任务、Map、Shuffle、Reduce的过程)。
提交任务:用户提交MapReduce任务到JobTracker(在Hadoop 1.x中)或者Application Master(在YARN中)。
Map阶段: Map任务将输入的数据集划分成多个片段,然后对每个片段进行处理,生成键值对(key-value pairs)作为中间结果。
Shuffle阶段:这个阶段会对Map阶段产生的中间结果进行排序和分组。相同键的数据会被集中在一起,然后被发送到同一个Reduce任务。
Reduce阶段:Reduce任务接收shuffle阶段传来的数据,对数据进行处理输出最终结果
- 分别描述Map端和Reduce端的Shuffle过程(需包括溢写、排序、归并、“领取”的过程)。
Map端:输入数据和执行map任务、写入缓存、溢写(分区、排序和合并)、文件归并
Map的输出结果首先被写入缓存,当缓存满时就启动溢写操作,把缓存中的数据写入磁盘文件,并清空缓存。当启动溢写操作时,首先需要把缓存中的数据进行分区,然后对每个分区的数据进行排序和合并,之后再写入磁盘文件。每次溢写操作会生成一个新的磁盘文件,随着Map任务的执行,磁盘中就会生成多个溢写文件。在Map任务全部结束之前,这些溢写文件会被归并成一个大的磁盘文件,然后通知相应的Reduce任务来领取自己处理的数据。
Reduce端:领取数据、归并数据、把数据输入给Reduce任务
Reduce任务从Map端的不同Map机器领会属于自己处理的那部分数据,然后对数据进行归并后交给Reduce处理。
- 试说明一个MapReduce程序在运行期间所启动的Map任务数量和Reduce任务数量各是
由什么因素决定的。
Map任务的数量通常由输入数据的大小和分片策略决定。输入数据被划分成多个分片,每个分片对应一个Map任务,Map任务的数量还受到文件格式和压缩的影响。Reduce任务的数量还受到业务逻辑需求、系统资源的限制以及数据倾斜的影响。
- 早期的HDFS,其默认块(Block)大小为64MB,而较新的版本默认为128MB,采用较大的块具有什么影响和优缺点?
采用较大的块说明分片的数量较小,那么map任务也较少,导致任务的并行化程度不高,不能充分利用集群资源,拖慢作业运行速度。采用较小的块,说明map任务较多,而创建多个map任务进程需要耗费大量时间。块的大小设置主要从以下考虑:减少磁盘寻道时间、减少Namenode内存消耗、Nap崩溃问题、监管时间问题、问题分解问题、约束Map输出。
- 试画出使用MapReduce来对英语句子“Whatever is worth doing is worth doing well”进行单词统计的过程。
- 在基于MapReduce的单词统计中,MapReduce如何保证相同的单词数据会划分到同一个Reducer上进行处理以保证结果的正确性?
通过将相同的单词数据作为key值,相同单词出现的次数作为value值,由于Reduce任务是按key值进行划分的,因此保证了相同的单词数据会划分到同一个Reducer上进行处理。
- MapReduce可用于对数据进行排序,一种想法是利用MapReduce的自动排序功能,即默
认情况下,Reduce任务的输出结果是有序的,如果只使用一个Reducer来对数据进行处理、输出,则结果就是有序的了。但这样的排序过程无法充分利用MapReduce的分布式优点。试设计一个基于MapReduce的排序算法,假设数据均位于[1,100],Reducer数量为4,正序输出结果或逆序输出结果均可。试简要描述该算法(可使用分区、合并过程)。
在Map过程中,将数据等量分给n个Map过程进行快速排序,使用Combiner进行一定归并后输出;然后使用4个Reducer分别处理区间为[1,25][25,50],[50,75],[75,100]的数据,最后归并成一个大文本数据。
- 试设计一个基于MapReduce的算法,求出数据集中的最大值。假设Reducer大于1,试
简要描述该算法(可使用分区、合并过程)。
首先对输入数据要进行一定的处理,将代找的数据设置为key。如果reducer大于1,可以设置partitioner将数据分多个桶,最后只需要在多个job完成的part中找到最后一个元素(正序。最后一个即最大值)即可。
- Spark是基于内存计算的大数据计算平台,Spark的主要特点。
- 运行速度快
- 容易使用
- 通用性
- 运行模式多样
- Spark的出现是为了解决HadoopMapReduce的不足,试列举HadoopMapReduce的几个缺陷,并说明Spark具备哪些优点
- Spark的几个主要概念:RDD、DAG、阶段、分区、窄依赖、宽依赖。
- Spark对RDD的操作主要分为行动和转换两种类型,两种操作的区别是什么?
行动( Action):在数据集上进行运算,返回计算值。
转换( Transformation):基于现有的数据集创建一个新的数据集