针对一个Hadoop分布式存储解决方案,回答如下问题:
分析评价一个Hadoop分布式存储解决方案,需要哪些指标?
1.RpcProcessingTimeA vgTime(PRC处理的平均时间)
通常HDFS在异常任务突发大量访问时,这个参数会突然变得很大,导致其他用户访问HDFS时,会感觉到卡顿,从而影响任务的执行时间
2.CallQueueLength(RPC Call队列的长度)
如果callqueue队列数值一直处于较高的水平,例如对于NN来说CallQueue的长度等于handler*100,也就是说NN可能收到了大量的请求或者server在处理rpc请求时耗时很长,导致call堆积等
3.进程JVM监控MemHeapUsedM(堆内存使用监控)
通过监控参数可以查看进程的gc时间和gc发生之后释放多少内存和进程的内存使用情况
4.ThreadsBlocked(线程阻塞数量)
分析当问题发生时进程的线程阻塞状况
5.ThreadsWaiting(线程等待数量)
分析当问题发生时进程的线程等待状况
6.NameNode监控指标TotalFiles(总的文件数量)
监控和预警文件数的总量,可以通过其看出是否有任务突然大量写文件和删除大量文件
7.PercentUsed(集HDFS使用百分比)
监控集的HDFS的使用情况,使用率不宜太高,因为需要预留磁盘空间给任务计算使用
8.BlockPoolUsedSpace(该集namespace的HDFS使用容量大小)
可以监控不同namespace的HDFS的使用情况
9.Total(集HDFS总容量大小)
显示集整体容量情况
10.Used(集HDFS已使用的容量大小)
集HDFS使用情况,可以预警是否需要增加机器和删除无用数据hadoop分布式集搭建
11.NumLiveDataNodes(存活的DN数量)NumDeadDataNodes(丢失的DN数量)
丢失节点,如果过多可能会引起丢块
12.V olumeFailuresTotal(坏盘的数量)
应该设定阀值,达到一定数量时处理
13.MissingBlocks(丢失的block数量)
丢失重要的块会引起任务报错
14.DataNode监控指标ReadBlockOpA vgTime(读取block的平均时间)
可选的监控选项,如果该机器在某个时段平均时间突然升高,可能磁盘读取速度存在问题
15.ResouceManager监控指标NumActiveNMs(NM存活节点数量监控)
有时节点会因为磁盘空间不足等原因导致进程退出,虽然集具有容错机制,但当丢失节点达到一定数量之后,集计算资源相当于减少了,所以应当设置合理的阀值报警处理
16.NumUnhealthyNMs(NM不健康节点数量监控)
通常会因为磁盘问题导致节点不健康
17.集应用数量监控AppsSubmitted(app提交数量)
之前集有出现过app的id号生成很慢的情况,可以通过改数值和其他参数去判断提交减少的问题
18.AppsRunning(app的运行数量)
可以通过改值去对比历史同一时刻的app的运行数量是否差异很大,去判断集到底是否可能出现问题
19.AppsFailed(app失败数量)
如果AppsFailed数量升高,说明集的存在导致app批量失败的操作
20.集资源使用量情况监控AllocatedMB(已分配的内存大小)
如果集用户反应任务运行缓慢,应该及时检查队列资源的使用情况和HDFS的响应速度
Hadoop为保证数据的可靠性,副本备份数是3。是否可以降低这个数目,并且保证文件存储系统的可靠性和性能?副本备份数是否可以降低到 1.5或者更低?
可以降低副本数,通过修改l中的plication参数:
<property>
<name&plication</name>
<value>2</value>
</property>
可以应用Erasure Coding(纠删码)将副本备份数降低到1.5或者更低。
如果要将副本数目降低到 1.5,请给出量化分析的思路、技术指标和计算过程,详细描述副本备份数减少后的存储解决方案。
通过上网搜索得到的有关技术文档,可根据如下链接给出解决方案,将副本数目降低到1.5。
Hadoop 3.0引入了纠删码技术(Erasure Coding),它可以提高50%以上的存储利用率,并且保证数据的可靠性。纠删码技术(Erasure coding)简称EC,是一种编码容错技术。最早用于通信行业,数据传输中的数据恢复。它通过对数据进行分块,然后计算出校验数据,使得各个部分的数据产生关联性。当一部分数据块丢失时,可以通过剩余的数据块和校验块计算出丢失的数据块。
纠删码技术可以将n份原始数据,增加m份数据(用来存储erasure编码),并能通过n+m 份中的任意n份数据,还原为原始数据。定义中包含了encode和decode两个过程,将原始的n份数据变为n+m份是encode,之后这n+m份数据可存放在不同的device上,如果有任意小于m份的数据失效,仍然能通过剩下的数据还原出来。也就是说,通常n+m的erasure 编码,能容m块数据故障的场景,这时候的存储成本是1+m/n,通常m<n。因此,通过erasure 编码,我们能够把副本数降到1.5或者更低。下图简单的演示,首先有原始数据n个,然后加入m个校验数据块。
Parity部分是校验数据块,一行数据块称为Stripe条带,每行条带由n个数据块和m个校验块组成。原始数据块和校验数据块都可以通过现有的数据块进行恢复,原则如下:
①如果校验数据块发生错误,通过对原始数据块进行编码重新生成
②如果原始数据块发生错误,通过校验数据块的解码可以重新生成
Reed-Solomon(RS)码是存储系统较为常用的一种纠删码,它有两个参数k和m,记为RS(k,m)。k个数据块组成一个向量被乘上一个生成矩阵(Generator Matrix)GT从而得到一个码字(codeword)向量,该向量由k个数据块和m个校验块构成。如果一个数据块丢失,可以用(GT)-1乘以码字向量来恢复出丢失的数据块。RS(k,m)最多可容忍m个块(包括数据块和校验块)丢失。以n=5,m=3为例,即5个原始数据块,乘上一个(n+m)*n的矩阵,然后得出一个(n+m)*1的矩阵。根据矩阵特点可以得知结果矩阵中前面5个值与原来的5个数据块的值相等,而最后3个则是计算出来的校验块。
D是原始数据块,得到的C为校验块。假设丢失了m块数据。如下:
那我们从剩余的n个数据块(这里剩余的n块可能包含几个原始数据块和几个校验块)恢复出来原始的n个数据块的过程,就需要通过下面的decoding(解码)过程来实现。
第一步:从编码矩阵中删去丢失数据块和丢失编码块对应行。将删掉m个块的(n+m)*1个矩阵变形为n*1矩阵,同时B矩阵也需要删掉对应的m个行得出一个B’的变形矩阵,这个B’就是n*n矩阵。如下:假设D1、D4、C2丢失,我们得到如下B’矩阵及等式。
第二步:求出B’的逆矩阵。
第三步:等式两边分别乘上B’的逆矩阵。
B’和它的逆矩阵相乘得到单位矩阵I,如下:
左边只剩下原始数据矩阵D:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论