大数据面试题总结

大数据为什么这么快
1、扩展性
传统的是纵向扩展(服务器数量不变,每个的配置越来越高)
大数据是横向扩展(每个的配置不变,但服务器数量越来越多)
2、分布式
传统的是集中式存储,集中式计算
大数据是分布式存储,分布式计算
3、可用性
传统的是单份数据(存储数据的磁盘少)
大数据是多份数据(存储数据的磁盘多)
4、模型
传统的是移动数据到程序端
大数据是移动程序到数据端(减少了大量的IO开销和网络开销,利用并行计算,并行存储)
大数据为什快
横向扩展
移动程序到数据端
多个数据副本
分布式存储(减小磁盘IO的瓶颈)
分布式计算(众人拾柴火焰高-人多力量大)
Hadoop
hadoop的组成
HDFS : 用于海量数据的存储
MapReduce :用于海量数据的计算
Yarn :集群(CPU 内存 硬盘 )资源调度
安装hadoop分准备阶段(每个节点上)
1、 JDK 1.8
2 、远程ssh无密码登录(主到从)
3、防火墙关闭
4、selinux关闭
5、修改主机名
6、主机名和IP对应
hadoop安装部署
1、上传解压
2、配置hadoop的环境变量
3、检查支持哪些库或包
进入hadoop安装目录的bin里面执行以下命令
./hadoop checknative
验证集群可用
jps 查看java进程的进行情况
1、到集群上创建一个文件夹或文件
只要能够创建文件夹或文件表示集群可用
2、查看HDFS的web界面
获取namenode所在节点的IP +50070
hadoop内的权限和LIMUX里面的权限是完全相同的
hadoop的HDFS 没有目录切换,所有的路径或文件的路径必须使用绝对路径
HDFS文件系统提供了方便使用的web浏览器。
jobHistory记录任务运行的详细日志
访问jobHistory记录的任务日志
获取JobHistoryServer服务所在节点的IP+19888查看任务的详细日志。
Hadoop的组成部分
HDFS
管理者:NameNode
作用:负责管理,管理集群内各个节点。负责管理整个文件系统的元数据(描述数据的索引),名字空间,目录树的维护
工作者:DataNode
作用:负责工作,进行读写数据。 周期向NameNode汇报。
负责管理用户的文件数据块.
辅助者:SecondaryNameNode
作用:责辅助NameNode管理工作。
辅助namenode管理元数据信息
MapReduce
Yarn
管理者:ResourceManager
工作者:NodeManager
HDFS使用场景:海量数据的存储
HDFS可用的总容量是集群中所有节点的综合,HDFS目录下的数据在任何一个节点都可以使用或访问
hdfs中默认的数据块切分大小是128M,128直至 一个数据切分的分界线,若上传数据超过128M,那么对数据进行切分。若小于128,有多大上传多大,数据块就是多大。
HDFS数据副本机制
1、第一份数据来源于用户的客户端
2、第二份数据存放在与第一份副本在同一个机架,不同的节点,按照一定的机制(cpu 内存 io 使用率和节点磁盘剩余容量)选取一个节点进行存放
3、第三份副本存放在,与第一第二副本不在同一机架,且逻辑距离最近的机架上,按照一定的机制(cpu 内存 io 使用率和节点磁盘剩余容量),选择一个节点进行存放
hadoop 视硬件设备经常损坏为常态,为了防止硬件损坏导致系统不可用,所以构建多副本机制。
NameNode的三大作用
1、维护、管理HDFS的目录数-元数据-名字空间。
2、确定指定的文件块到具体的Datanode结点的映射关系。
3、维护、管理工作者的心跳信息。
DataNode作用(重点)
1、负责数据的读写(响应的是客户端)
2、周期向NameNode做心跳报告 (节点是否可用、数据是否丢失、校验和)
10分钟没有心跳NameNode认为该节点宕机。
每三秒发送一次心跳报告
3、负责数据的流水线复制(一点一点复制)
机架感知(重点)
人为编写一个脚本,脚本中记录集群中节点与交换机的映射关系。机架感知依赖此脚本,数据副本机制也依赖于此脚本。
HDFS数据写入流程(重点)
在这里插入图片描述
1、 client发起文件上传请求,通过RPC与NameNode建立通讯,NameNode检查目标文件是否已存在,父目录是否存在,返回是否可以上传;
2、 client请求第一个block该传输到哪些DataNode服务器上;
3、 NameNode根据配置文件中指定的备份数量及机架感知原理进行文件分配,返回可用的DataNode的地址如:A,B,C;
4、 client请求3台DataNode中的一台A上传数据(本质上是一个RPC调用,建立pipeline),A收到请求会继续调用 B,然后B调用C,将整个pipeline建立完成,后逐级返回client;
5、 client开始往A上传第一个block(先从磁盘读取数据放到一个本地内存缓存),以packet为单位(默认64K),A 收到一个packet就会传给B,B传给C;A每传一个packet会放入一个应答队列等待应答。
6、 数据被分割成一个个packet数据包在pipeline上依次传输,在pipeline反方向上,逐个发送ack(命令正确应答),最终由pipeline中第一个DataNode节点A将pipelineack发送给client;
7、关闭写入流。
8、 当一个block传输完成之后,client再次请求NameNode上传第二个block到服务器。

HDFS文件读取流程
在这里插入图片描述
1、客户端通过调用FileSystem对象的open()来读取希望打开的文件。
2、 Client向NameNode发起RPC请求,来确定请求文件block所在的位置;
3、 NameNode会视情况返回文件的部分或者全部block列表,对于每个block,NameNode 都会返回含有该 block副本的 DataNode 地址; 这些返回的 DN 地址,会按照集群拓扑结构得出 DataNode 与客户端的距离,然后进行排序,排序两个规则:网络拓扑结构中距离 Client 近的排靠前;心跳机制中超时汇报的 DN 状态为 STALE,这样的排靠后;
4、 Client 选取排序靠前的 DataNode 来读取 block,如果客户端本身就是DataNode,那么将从本地直接获取数据(短路读取特性);
5、 底层上本质是建立 Socket Stream(FSDataInputStream),重复的调用父类 DataInputStream 的 read 方法,直到这个块上的数据读取完毕;
6、并行读取,若失败重新读取
7、 当读完列表的 block 后,若文件读取还没有结束,客户端会继续向NameNode 获取下一批的 block 列表;
8、返回后续block列表
9、 最终关闭读流,并将读取来所有的 block 会合并成一个完整的最终文件。
HDFS数据完整性计算
在这里插入图片描述
数据写入之后进行数据首次校验,文件系统周期性进行校验,防止数据丢失。
读取数据之前进行数据校验,若两个校验相同,那么表示数据没有丢失,开始读取数据。
若两个校验不相同,那么表示数据有部分丢失,换到其他节点(相同副本的节点)读取数据。
HDFS 适用场景
一次写入,多次读出的场景,支持文件追加,但不支持在文
件中间修改。
HDFS 特性
1、 存储海量数据:HDFS可横向扩展,其存储的文件可以支持PB级数据
2、容错性高:数据保存多个副本,副本丢失后自动恢复。
可构建在廉价(与小型机大型机对比)的机器上,实现线性扩展。(随着节点数量的增加,集群的性能-计算性能和存储性能都会有所增加)当集群增加新节点之后,namenode也可以感知,进行负载均衡,将数据分发和备份数据均衡到新的节点上。(负载均衡:集群可将原本使用容量较高的节点上的数据自动写入新的节点上,达到所有节点容量均匀)每个节点磁盘使用容量百分比的差异可以人工设置。
3、大文件存储: 数据分块存储,将一个大块的数据切分成多个小块的数据。
HDFS缺点
1、不能做到低延迟数据访问:HDFS针对一次性获取大量的数据做了优化,牺牲了小数据量快速查询的性能。
2、多次写入,一次读取(擅长:HDFS适合一次写入,多次读取的场景。)
3、不支持多用户的并行写
4、不适合大量的小文件存储
A: 由于namenode将文件系统的元数据存储在内存中,因此该文件系统所能存储的文件总数受限于namenode的内存容量。
B: 元数据信息中每个文件、目录和数据块的存储信息大约占150字节。(1G 数据存储的元数据信息占用150字节 ,1M的数据元数据信息占用150字节)受限于内存,元数据信息的存储机制导致无论数据多大,元数据信息中描述这个数据的信息都是150字节。
HDFS高级命令
特定文件夹下的副本数可以设置、存储容量可以设置,存储的文件个数可以设置。
设置文件夹内数据的个数: hdfs dfsadmin -setQuota 50 lisi (lisi 本身算一个 最多可上传49个)
清除文件数量限制 hdfs dfsadmin -clrQuota /user/root/lisi
限制空间大小 hdfs dfsadmin -setSpaceQuota 100M /user/root/lisi (最多可以存储100M)
清除空间限额 hdfs dfsadmin -clrSpaceQuota /user/root/lisi
查看hdfs文件限额数量 hdfs dfs -count -q -h /user/root/lisi
HDFS 安全模式(safemode)
是HDFS一种特殊状态,该状态下 只允许数据读取,不允许数据的修改与添加等变更操作。
什么时候进入安全模式:集群重新启动的时候进入安全模式。
安全模式下多了什么:DataNode在启动的时候会向namenode汇报可用的block等状态。
如何查看集群当前的状态: hdfs dfsadmin -safemode get
如何进入安全模式:hdfs dfsadmin -safemode enter
如何退出安全模式:hdfs dfsadmin -safemode leave
Fsimage,Edits
NameNode在工作时生成Fsimage,Edits两个文件
Fsimage 文件系统的快照,这个文件相对较小
Edits 记录客户端对集群的所有添加、删除、修改等操作,这个文件相对较大。
作用:用于恢复集群到关闭前的状态。开机时系统会将这两个文件加载到内存,进行合并恢复。
合并:将Fsimage Edits两个文件合并成一个Fsimage.(恢复完后Edits失效)
HDFS配置选项
dfs.namenode.name.dir 设置fsimage 数据的存放路径
dfs.namenode.edits.dir 设置edits数据的存放路径
将edits文件转换成XML
hdfs oev -i edits_0000000000000000416-0000000000000000418 -p XML -o test002.xml
将Fsimage文件转换成XML
hdfs oiv -i fsimage_0000000000000000418 -p XML -o test001.xml

secondarynameNode工作原理(意义)
前提:未使用secondarynameNode时,NameNode工作中会产生fsimage 和edtes,edits日志过大,直接导致集群二次开机恢复原本状态过慢,引起开机时间过长。
secondarynameNode存在的意义就是加快集群二次启动的速度(减小集群二次启动的时间)secondarynameNode原理(如何帮助NameNode 周期性在NameNode节点拷贝fsimage 和edtes 到自己的节点上,进行合并,合并后生成全新的FSimage,最后将FSimage发送回NameNode.)
secondarynameNode最好是一个独立的节点, 此节点的配置最好与NameNode 相同。
触发secondarynameNode合并文件的条件
1、时间维度, 默认一小时合并一次 , 人为设置使用如下参数
dfs.namenode.checkpoint.period :3600
2、次数维度,默认100W次合并一次。人为设置使用如下参数
dfs.namenode.checkpoint.txns : 1000000
NameNode存储到元数据信息(fsimage 和edtes)可以多目录存储,防止元数据丢失。
集群再次启动时,两个文件以最新的为准。若删除了最新的两个日志,会导致部分数据丢失。
SNN不能做NN的热备份
1、SNN不能接替NN工作
2、SNN有可能会造成数据丢失。
SNN存储Fsimage 和Edits日志文件的路径
SNN存储Fsimage 的路径是以dfs.namenode.checkpoint.dir为key value 是 路径
SNN存储Edits的路径是以dfs.namenode.checkpoint.edits.dir为key value 是 路径。
HDSF集群扩容
A: 准备一个全新的节点
1、关闭防火墙
2、关闭selinux
3、修改主机名
4、主机名与IP的对应关系
5、SSH免密码登录
6、安装JDK
B: 添加到集群
1、创建HDFS的Datanode的白名单
touch dfs.hosts
2 、修改hdfs-site.xml,将白名单添加到配置文件中
dfs.hosts
/export/servers/hadoop-2.6.0-cdh5.14.0/etc/hadoop/dfs.hosts
3、刷新节点
HDFS 刷新 hdfs dfsa

  • 3
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值