大数据解决方案-存算分离方案类FAQ(进阶问题)
- 存算分离方案为什么要用OBS的并行文件桶?相比普通对象桶有什么好处?
答:并行文件桶是OBS专门为大数据场景所推出的针对性方案,它的好处是提供了标准Posix文件语义,并且能够实现hdfs rename等语义的原子操作,确保大数据的计算性能。
- 使用obs存算分离方案为什么能做到避免namenode压力的问题?
答:1.首先,因为使用OBS方案之后,数据存储在OBS,元数据也保存在OBS,hdfs集群上的namenode已经不再使用,因此namenode当然不再存在压力。
2.其次在OBS内部,其元数据管理采用了可扩展的分布式机制,不再像hdfs的namenode一样是一个单点架构,因此即使文件个数持续增长,OBS元数据集群也可以通过分裂、扩容避免单点瓶颈,从而达到管理更多文件的目的。
- 存算分离方案下,元数据的性能如何保证?
答:元数据采用RangePartition分布式管理,保证性能;元数据集群节点,负载达到阈值,自动分裂,保证节点的负载性能。
- OBS的细粒度条带化和TB级带宽怎么理解?如何做到的?
答:我们可以对比hdfs来理解OBS的条带化存储:hdfs的一个IO单元是一个Block,Block太小会导致namenode压力巨大,太大则导致存储浪费,因此最常见的配置通常来说都是64MB或128MB,这就是hdfs的条带化粒度。而OBS因为不存在namenode的单点压力问题,因此其数据存储的是以512KB甚至256KB来划分的,这就是细粒度条带化。
而细粒度条带化带来的最直接的好处就是大带宽能力。还以hdfs来对比,如果Block大小是64MB,那么1GB的文件可以很容易算出来最理想情况下也只能调动16块磁盘提供IO。而同样1GB文件放在OBS上,因为条带化粒度更细,它可以分散在几十块磁盘上,这样也就可以为用户提供更大的带宽能力。在实际案例中,我们已经有很多个大数据客户的OBS桶的带宽达到了TB级。
- 存算分离方案数据存储可靠性如何?
答:数据的持久性和可靠性正是存算分离方案的优势之一,OBS提供五级数据可靠性保证,可以避免磁盘故障、服务器故障、机柜故障、数据中心灾难,甚至区域性灾难带来的数据损失风险。
更多参考:https://support.huaweicloud.com/productdesc-obs/obs_03_0201.html
- 具体如何配置和使用OBS存算分离?
答:使用OBSA插件,参见官方指导:https://bbs.huaweicloud.com/forum/thread-12142-1-1.html
- 有哪些HDFS生态的常见组件不适合使用存算分离方案?为什么?
答:1.HBase、ClickHouse、ES等,这些引擎更强调单次IO的时延,因此并不是特别适合OBS方案
2.HBase可能有读写放大问题,会有过多的OBS访问请求,会导致超过OBS免费访问次数,进而导致过高的访问成本。
- 开源Hadoop HDFS也支持EC,也有客户使用,我们存算分离的EC与开源相比有什么好处?
答:EC有计算代价,它会带来计算和网络的开销。如果客户自建hadoop自己使用EC的HDFS,那么会直接消耗Hadoop集群的计算、网络资源,因此在当前业界自建hadoop的话,一般热数据集群还是用三副本,冷数据集群才会考虑使用EC。
使用OBS存算分离方案的话,EC的计算代价全部在OBS内部搞定,客户不感知,也不需要为此浪费自己hadoop集群的宝贵资源。
- 存储层使用EC方案的话,如果出现异常时,读取数据会不会导致时延增加?会增加多少?
答:几乎无影响,只是会在OBS内部多一次IO的时延,0.0xms以内。EC算法本身是由OBS内部专有的CPU进行计算,耗时几乎可以忽略。
- OBS的三AZ方案是如何确保数据可靠性的?有没有使用多副本?
答:OBS的可靠性由介质、服务器、机柜、数据中心、区域等多个level分层进行保证,可达99.995%高可用性,99.9999999999%高持久性。三AZ属于数据中心级的可靠性保障。采用的跨AZ的EC纠删码技术,存储利用率远高于多副本。
- OBS的跨region复制是否支持目录级配置?
答:OBS对象桶支持跨region复制,并行文件系统暂时不支持跨region复制。
- OBS的跨区复制的实时性是怎样的,能保证怎样的RPO能力?
答:跨区域复制走的是region间的专线,但没有QoS机制,因此无法承诺RPO。同时是异步复制,无法保证实时性。大数据场景不推此功能。
- OBS可以实现hdfs的哪些语义?哪些还不能支持?
答:支持Append、hFlush/hSync、Rename等语义;不支持ACL、Snapshot等语义。
- 使用OBS存算分离方案,小文件的性能、元数据的性能能保证吗?
答:大数据场景要尽量引导客户将小文件合并为大文件。针对大文件的访问,能够发挥OBS高并发高带宽的优势,性能显著优于HDFS。而对于小文件(K级),无论是OBS和HDFS性能都会明显低于大文件。这是存储系统本身的特点所决定的。OBS有专门的元数据集群节点,性能满足大数据场景。同时,不同于HDFS NameNode单节点(HA主备)管理元数据,不会出现海量文件的元数据管理瓶颈。
- 转存算分离方案之后,namenode压力不存在了,但是客户原本是会利用namenode节点的压力来识别是否产生了大量小文件,然后再去进行文件的合并。现在没有小文件压力之后,该怎么达到同样效果?
答:OBS是有桶对象数的监控的。客户可以通过CES配置OBS的桶监控来获取对象数的信息。(此监控信息是近实时的,OBS运维模块是每1分钟查询一次桶信息,并写到日志里。)
- OBS能否保证元数据最终一致性
答:OBS具备 “强一致性”特点。在计算过程中写入数据,读取或rename无一致性问题,无须特殊配置。
更多参考:
OBS上还有另外一层“一致性”概念:即源端数据与上传到OBS上的数据的一致性。
这是因为在进行大数据量的批量并行上传时,有可能会因为网络劫持、数据缓存等原因,存在写入到OBS的数据与数据源的数据不一致的问题。这本质上不是OBS的一致性问题。
对于这种应用层面的数据一致性,可以通过如下官网说明的方法进行校验:https://support.huaweicloud.com/bestpractice-obs/obs_05_0800.html
- 数据拆条后元数据怎么管理
答:OBS会对小至几K的小文件进行异步管理合并,并且元数据管理是在OBS内完成的,客户不用担心这个问题
- 基于存算分离方案,是否可以实现用户的存储配额限制?
答:在OBS存算分离方案上,暂时无法为大数据用户指定不同的存储配额。在本地盘HDFS方案上是可以支持的,但实际上该功能使用率并不高,原因是你很难明确一个业务究竟产生多少数据是合理的,也很难识别哪些数据是垃圾数据哪些是正常应该生成的业务数据,设的小了可能频频影响正常业务,设的大了也就无法实现避免浪费的想法。
通常合理的做法应该是所有的上线任务都在开发测试环境调试过,确认任务的运行正常,生成的数据合理,然后才会上线到生产环境。
- OBS的分层分级存储是怎么做的,业务上是否需要做什么适配?
答:OBS的分层分级存储是一种数据生命周期管理机制,也就是OBS上支持针对桶、路径进行生命周期规则配置,比如配置某个目录半年前的数据即为冷数据,自动转为归档存储。
通常来说这不需要业务做适配修改,只需要在OBS上定义相应的规则即可。而且转为归档的冷数据依然可以用原有的路径进行访问,只是访问会根据次数和取回数据量进行收费。
- 使用存算分离方案会不会导致产生大量的OBS读写费用?
答:不会。
离线大数据的数据读写模型不是高频次,而是高带宽,因此像hive、spark、presto等基于hdfs的hadoop分析引擎,都不会有太海量的obs请求次数。根据前面的项目经验,OBS读写次数收费一般不会高于整个大数据系统费用的百分之一。
更多参考:
1、hbase组件不建议用存算分离方案的原因之一就是obs请求次数收费,因为hbase会有读写放大现象,会导致海量的请求次数,从而导致obs请求次数收费变高。
2、OBS还有存储包售卖模式,如果能够评估清楚存储容量,购买包月的存储包,那么还会赠送300w次/TB/月的请求次数(240读,60写),基本上就不会再产生收费了。
- 如果我想做冷热数据分离,是不是把热数据留在HDFS,冷数据从HDFS转到OBS就可以了?
答:对于不用存算分离而是传统本地盘HDFS的方案,是可以这么做的,实际上很多客户在上存算分离方案之前也是这么做的。但这样做的坏处是数据转冷的时候很麻烦,需要自己将数据转储到对象存储;想要访问冷数据的时候也很麻烦,要么要把obs上的冷数据拉回到hdfs上再计算,要么就要做两套开发一套访问热数据,一套访问obs的冷数据。
如果已经做了MRS存算分离方案,通常冷热数据的分离推荐直接用OBS的分层存储能力:热数据放在OBS标准存储中,冷数据放在OBS的低频或归档存储中,数据转冷可以配置规则自动处理,冷数据也支持直读不需要额外开发。
- 在OBS存算分离方案上做rename的性能如何?对于大目录和超大目录的进行move操作性能会不会随目录大小而恶化?
答:1.在华为云存算分离大数据方案上,OBS不是使用普通的标准对象桶,而是使用并行文件桶。这是华为云在对象存储上实现了一个模拟文件系统的协议机制。因此在这种机制下,华为云存算分离方案可以支持毫秒级的rename操作(根据region、AZ的不同,时长在50-100ms之间)。
2.并行文件系统机制实现了文件目录树结构,因此对于目录的rename/move操作,也是对一个节点的rename,因此也是毫秒级的操作,不会随目录内部文件的多少产生性能劣化。
- OBS存算分离方案下,对文件的List能力如何,是否会存在大量文件list的性能恶化问题?
答:OBS上的list操作相对于hdfs确实会有一定性能差距,对于单层列举,OBS的list性能比hdfs差20%-30%;对于多层递归列举,OBS的list性能比hdfs差距较大,可能在2-3倍。
但在离线大数据的ETL场景下,大量文件的list,特别是级联递归list操作并不太多,更多是出现在一些运维操作中。因此在过往所有PoC测试中,可以看到list的耗时在整体ETL任务的耗时占比很小,因此影响不大。
对于性能差距较大的递归list,还可以通过并发度的调整来优化list的耗时,从而避免随着递归目录结构的规模增长性能不断线性恶化。
- 在OBS存算分离方案上,进行count/du操作的性能如何,可能会有数量级的下降,该如何处理?
答:count、du都是调用了FileSystem的getContentSummary接口。对于对象存储,其是通过“list列举+内存累加统计”实现的,和HDFS相比确实存在性能下降问题,具体可参见上一个问题。
目前obs并行文件系统正在进行这方面的优化,提升getContentSummary接口的性能。设计规格是在5级级联目录,结构,第五级包含10个子目录,每个目录100000个文件,共1000000个文件的情况下,count性能在5s左右。
- 是否可以提供类似 HDFS fsimage 之类的镜像文件,以及对应的分析工具(类似 HDFS oiv),很多情况下我们需要根据这些东西做具体的分析,进行业务优化。
答:可以通过桶日志和桶清单特性作为分析的输入,目前并没有自动化的分析工具。
(1)桶日志:记录了请求OBS的访问日志,例如记录了请求的时间,请求类型
https://support.huaweicloud.com/ugobs-obs/obs_41_0046.html
(2)桶清单:记录了桶内当前对象的元数据相关信息,例如对象的大小,创建时间
https://support.huaweicloud.com/ugobs-obs/obs_41_0044.html
- OBS多AZ部署有哪些优劣势?我该怎么选择?
答: 多AZ OBS的好处主要在数据可靠性上,这种方式下,数据会分散在3个AZ进行存储,可以做到一个AZ故障,数据依然可以访问。但它的劣势也非常明显,第一是成本高,多AZ的OBS的成本比单AZ高40%;第二是性能会有一定下降,因为数据分布在多个不同的AZ,当大数据计算时,东西向流量必然会跨AZ,而典型的两个AZ之间的距离是大于25公里的(补充:为了满足金融等行业对多数据中心多活的可靠性要求),因此每一次交互可能都会多2-5ms的时延,导致性能会有比较明显的下降。
因此多AZ OBS通常只会用在某些对数据可靠性、可用性要求都特别高的行业客户场景上;否则我们更建议使用单AZ加上关键数据备份(比如用跨region复制的能力将数据备份到另一个region),来保证数据可靠性。
- 对冷热数据分级存储有哪些方案和支撑
答:主要是服务对接OBS,通过OBS生命周期管理来实现。参考:https://support.huaweicloud.com/ugobs-obs/obs_41_0033.html+A33:C33
服务伙伴相关技术问题可至☞服务伙伴知识库论坛问题求助专区提问
- 点赞
- 收藏
- 关注作者
评论(0)