大数据复习
大数据复习
优雅的修勾下载项目资源:
官方参考答案 (PDF, 2.4MB)
1.大数据的四个特点
P7
查看内容
- 数据量大 Volume
- 数据类型繁多 Variety
总体分成三类:结构化、半结构化、非结构化,细分类型更加丰富 - 处理速度快 Velocity
- 价值密度低 Value
很多情况,虽数据量很大,但是有价值的信息很少
2.大数据、云计算、物联网的关系
P28-29
查看内容
- 三者的区别:
①大数据侧重数据的存储、处理和分析,从海量数据中发现价值
②云计算旨在整合优化资源,并通过网络以服务的方式廉价地提供给用户
③物联网的发展目标是实现“物物相连”,应用创新是物联网发展的核心 - 三者的联系:
整体上看,三者相辅相成
具体联系如上图
3.Hadoop的特性
P32
查看内容
- 高可靠性
- 高效性
- 高扩展性
- 高容错性
- 成本低
- 支持运行在Linux操作系统上
- 支持多种编程语言
4.数据块
P49
查看内容
- 磁盘块:磁盘空间中每512B空间为一组,这一组就是一个磁盘块,是系统进行读写的最小单位
- 数据块:磁盘块大小(512B)的整数倍的块
考点:
1.HDFS中的数据块与普通文件系统的数据快有什么区别(最可能考)
- HDFS中的数据块要比普通文件系统中的数据块大得多
- 在HDFS中,若文件大小小于数据块大小,该文件并不占用整个数据块存储空间
2.什么是分布式系统
- 采用数据块的概念
- 文件被分成若干个数据块进行存储
- 分布式文件系统的数据块要比普通文件系统中的数据块大得多
- HDFS默认的数据块大小是128MB
- 若文件大小小于数据块大小,该文件并不占用整个数据块的存储空间
3.分布式文件系统的结构
- 由主节点(名称节点)和从节点(数据节点)构成
- 名称节点负责文件和目录的创建、删除和重命名,管理数据节点和数据块的映射关系
- 数据节点负责数据的存储和读取
- 用户先访问名称节点然后获得数据节点和数据块的映射关系
5.第二名称节点的工作过程(如何工作)
P53
查看内容
- 名称节点的核心文件:FsImage文件和EditLog文件
- FsImage文件:用于管理文件和文件夹中的元数据
- EditLog文件:用于记录所有对于文件的操作
- 核心文件的工作过程:当名称节点启动时,根据EditLog文件中记录的操作,用FsImage文件进行逐步执行,使得元数据保持最新,全部执行后,FsImage文件进行同步更新,然后创建一个空的EditLog文件记录后续操作。(HFDS中的操作都会先写进EditLog文件,而不直接写进FsImage文件)
第二名称节点
- 作用:减小EditLog文件的大小,对名称节点进行定期备份
- 工作流程:
①第二名称节点定期与名称节点通信,令名称节点停止使用EditLog文件(t1时刻)
②后续HDFS中新的操作记录在EditLog.new文件中
③第二名称节点将FsImage和EditLog拉回本地(备份t1时刻文件),加载到内存进行合并,逐条执行EditLog的操作,得到最新的FsImage文件(FsImage.ckpt),将其发送给名称节点
④名称节点接受后,用新的FsImage.ckpt替换旧的FsImage,同时用EditLog.new替换EditLog(t2时刻) - 缺点:无法处理t1到t2之间发生的故障
6.数据冗余的解决方法多副本方式的优点
P56
查看内容
- 加快数据传输速度
- 容易检查数据错误
- 保证数据的可靠性
7.数据模型的相关概念
P73
查看内容
- 行键:HBase表由若干行组成,每行由行键标识。行键可以是任意字符串(一般10-100B),在HBase内部,行键保存为字节数组。存储时数据按照行键的字典序存储
- 列族:HBase表被分为很多列族的集合,一般只能有几十个列族,需要在表创建时就定义好且不能频繁修改。存储在一个列族中的数据通常是同一种数据类型
- 列限定符:列族里的数据通过列限定符来定位,没有数据类型,总被视为字节数组byte[]
- 时间戳:每个单元格中保存着同一个数据的不同版本,不同版本采用时间戳索引。每次操作,HBase会自动生成并存储一个时间戳(一般是64位整形数据)。用户可自定义赋值时间戳。
8.NoSQL数据库的三大基石(二考一)
P109
第一大基石
第一大基石:CAP
具体内容
C:一致性,各节点数据是一致的
A:可用性,快速获取数据并在确定时间内返回操作结果
P:分区容忍性,系统中部分节点无法通信时,分离的系统也能正常运行
CAP理论:分布式系统不能同时满足C、A、P三种特性,最多同时满足两个
- CA:放弃分区容忍性(P)。把所有与事务相关的内容放到同一台机器上,但可扩展性差
- CP:放弃可用性(A)。节点无法通信时,受影响的服务需要等待数据一致,等待期间不可用
- AP:放弃一致性(C)。允许系统返回不一样的数据,一般对于Web2.0可行,首先确保服务可用,数据更新的时间不会过于影响用户体验
第三大基石
第三大基石:最终一致性
具体内容
- 最终一致性:只要经过一段时间后能够访问到更新后的数据即可。
- 不一致性窗口:更新操作完成 到 后续可以访问更新的值 的时间间隔
- 最终一致性的分类:
①因果一致性:进程A通知进程B它更新了一个数据项,进程B后续访问可以立刻获得A的最新值,而无因果关系的进程C,无法立刻获得,而是最终获得。
②读己之所写一致性:是因果一致性的特例。进程A更新后,它自己总是可以访问到更新过后的值
③会话一致性:把访问存储系统的进程放到会话的上下文中(会话:一段有始有终的交互期),只要会话存在,系统就要保证读己之所写一致性
④单调读一致性:若进程B已经看到进程A的某个值,则后续任何访问都不会返回以前的值
⑤单调写一致性:系统保证同一个各进程的多个写操作要按顺序进行(必须保证)
注:一个进程A在会话S中成功写入一个v值到k键,后续在当前会话中读取k键时,必须访问到v值或者是v值更新之后的值(并发其他会话写入的)
9.云数据库的特点(简单阐述)
P121
查看内容
- 动态可扩展性
- 高可用性
- 较低的使用代价
- 易用
- 高性能
- 免维护
- 安全
10.Shuffle详细过程(大题,关键点)
P138
了解即可,可以不看
MapReduce 并行编程模型
- 核心:Map和Reduce函数
- Map对分布式系统的数据块中的元素进行处理,转换成
的形式 - Reduce把Map处理后的数据中具有相同键的键值对以某种方式组合起来,然后输入对应的Reduce任务进行处理
- Map对分布式系统的数据块中的元素进行处理,转换成
- 工作流程
①对要处理的数据进行逻辑上的切分,没有对文件进行实际切分,只是记录处理数据的位置和长度
②处理数据,将其转化成适合Map任务的键值对,然后输入给Map任务
③根据映射规则,输出一系列为中间结果
④Map端的shuffle:对中间结果进行分区、排序、归并(和合并),得到,然后交给Reduce
⑤Reduce以作为输入,执行用户定义的逻辑,输入结果交给输出模块
⑥输出模块验证输出目录,然后输出Reduce的结果到分布式文件系统
Shuffle过程详解
Shuffle过程(大题,要写出关键点)
Map端
Map端的Shuffle过程(4步)
- ①输入数据和执行Map任务
输入的数据是数据块中的元素,数据块格式任意;通过RR将数据块中的数据转成Map任务可以处理的< key1,value1 >,然后Map任务按一定规则将其转成多个< key2i,value2i > ②写入缓存
每个Map任务处理后的数据会写入缓存,累计一定数量后再一次性写入磁盘,减少对磁盘I/O的影响,数据写入缓存之前,键值会被序列化成字节数组
③溢写(分区、排序、合并)
- 缓存容量一般是100MB,一般设置比例如0.8,当缓存80%空间被填入数据就启动溢写(把缓存中的内容一次性写入磁盘并清空这80%的缓存),剩余的20%空间供Map任务不断写入数据
- 溢写到磁盘之前,缓存中的数据首先被分区,采用哈希函数对键进行映射,然后均匀的分配给n个Reduce任务
- 根据每个分区内的键值对进行内存排序,排序后有个可选的合并操作
- 合并是指将具有相同键的键值加起来,< xmu,1 >和< xmu,1 >合并成< xmu,2 >,与Reduce的功能相似,一般只有累加和求最大值可以使用合并
- 每次溢写后会生成一个新的溢写文件,写入溢写文件的所有键值对都是经过分区和排序的
- ④文件归并
溢写文件会越来越多,Map任务全部结束之前,系统会对所有溢写文件中的数据进行归并
Reduce端
Reduce端的Shuffle过程(3步)
- ①“领取”数据
Reduce从Map端领取自己需要处理的分区数据 - ②归并数据
- 领取的数据存放在缓存中,如缓存占满需要把数据溢写到磁盘。
- 缓存中的数据来着不同Map机器,一般存在很多可以合并的键值对,启动溢写时,具有相同键的键值归并
- 溢写产生溢写文件,一般每10个归并成一个大文件
- ③把数据输入到Reduce任务
- 已经归并后的大文件不会继续合并成新的大文件,而是直接输入Reduce任务
11.HDFS联邦相对于HDFS1.0的优势
P161
查看内容
- 使HDFS集群具有更好的可扩展性
- 系统整体性能更高
- 良好的隔离性
12.湖仓一体架构的特性
P174
查看内容
- 事务支持
- 数据治理
- BI支持
- 存算分离
- 开放性
- 支持多种数据类型
13.Spark的主要特点
P194
查看内容
- 运行速度快
- 容易使用
- 通用
- 运行模式多样
Linux系统常用命令
点击展开
1.熟悉常用的Linux操作
1)cd命令:切换目录
2)ls命令:查看文件与目录
3)mkdir命令:新建目录
4)rmdir命令:删除空的目录
5)cp命令:复制文件或目录
6)mv命令:移动文件与目录,或更名
7)rm命令:移除文件或目录
8)cat命令:查看文件内容
9)tac命令:反向查看文件内容
10)more命令:一页一页翻动查看
11)head命令:取出前面几行
12)tail命令:取出后面几行
13)touch命令:修改文件时间或创建新文件
14)chown命令:修改文件所有者权限
15)find命令:文件查找
16)tar命令:压缩命令
17)grep命令:查找字符串
评论
匿名评论隐私政策
✅ 你无需删除空行,直接评论以获取最佳展示效果



