网易大数据平台HDFS性能优化实践
发布时间:2022-11-04 15:59:06 所属栏目:大数据 来源:
导读: 01 网易大数据平台
网易引入Hadoop十年有余。开源是大数据行业的发展趋势,网易也是本着开源开放的心态来做好大数据。
大数据培训机构大数据培训_大数据大数据培训班_网易大数据
近年来
网易引入Hadoop十年有余。开源是大数据行业的发展趋势,网易也是本着开源开放的心态来做好大数据。
大数据培训机构大数据培训_大数据大数据培训班_网易大数据
近年来
|
01 网易大数据平台 网易引入Hadoop十年有余。开源是大数据行业的发展趋势,网易也是本着开源开放的心态来做好大数据。 大数据培训机构大数据培训_大数据大数据培训班_网易大数据 近年来随着业务的发展,网易实现了大数据跨云部署,跨云生产,为业务在生产效益上带来了很多益处。上图是网易大数据平台的示意图,从逻辑上分为六大部分: 大数据应用开发层:提供了一些大数据开发套件给业务生产使用,通常是可视化产品。业务可以通过一个简单的SQL去查询某个表里的数据和自己写的Job任务。 应用场景层:与任务和数据相关的场景,提供了数据开发和数据管理相关的产品。业务在平台中的数据以及日常的辅助功能都在这一层实现。比如查看之前运行的一些作业,使用的哪些表等等。 数据计算层:大数据离不开计算,网易实现了多种计算类型,例如离线使用Hive,计算使用Flink,Spark和一些交互性的查询。上面两层提交的任务经过这层判断离线还是在线后进入到下一层。 数据管理层:各阶段有统一的资源调度,网易选择YARN来进行调度,并做了很多优化。 数据存储层:HDFS分布式存储。如果有业务需要高吞吐的性能,建议使用HBase。 数据源:大数据最开始是在传统的技术上发展而来的,所以有很多结构化的关系型数据。随着业务的发展,产生了很多音视频数据和JSON数据这样的半结构化数据,这些都是可以在大数据平台打通的。 通常大数据平台还包括一些辅助功能,作业调度使用Azkaban,身份认证使用Kerberos等等。另外整个平台的元数据是统一进行管理,运维监控上也做统一规划。 网易大数据_大数据大数据培训班_大数据培训机构大数据培训 当前网易大数平台已经实现亿级存储,拥有多个机房和多个集群保证务数据不会丢失。同时为了帮助业务以较小的资源实现较好的利益,网易实行存算分离,不再让业务受限数据和计算绑定。存储仍然是以HDFS为主。另外对业务比较关心的成本问题,网易大数据平台提到的业务上云方案使业务可以更加专注的发展。 目前网易大数据担任了集团内,如网易云音乐、网易严选、网易新闻,和集团ToB业务,如供应链、金融、电力传媒等等。上面列举的只是一部分,多个场景已经在使用我们的服务并且已经成功落地。 02 HDFS实践及挑战 接下来介绍HDFS的应用和优化。我们的HDFS几乎是和大数据平台同时引入,经过多年的技术发展在安全、高效、实践上都有自己的心得。 网易大数据_大数据培训机构大数据培训_大数据大数据培训班 众所周知HDFS有几个比较优秀的特点,这里回顾一下HDFS的基础架构。HDFS通常有两个主节点,active NamenNode和standby NameNode,并且还包含多个DataNode一起来对外提供服务。主节点主要是负责原数据管理和接收客户端请求。如果NameNode发生故障,有HA机制可以保证高可用。数据流进来后会分配副本放置于不同的数据节点,这些数据节点通常会有自己的策略存储在DataNode上,图上省略了JournalNode节点。 正是由于这种架构,我们实现了集群动态扩展,可以对某个集群不停止服务的情况下将其轻易扩展到数百个节点,甚至数千个节点。另外HDFS是一次写入任意读机制。随着大数据的发展,目前HDFS完全可以和多个组件进行融合,比如说Hive、Spark、Flink等等,很容易就能实现实时处理,批处理。此外,在部署上对硬件的要求也不是特别高。 和大多数厂家一样,网易在实践HDFS的过程中也经历了多个阶段。最开始时数百个节运行非常稳定,平时很少需要人工干预。后来随着业务发展慢慢扩容到千台规模。这个时候业务运行偶尔需要人工干预。在后来业务类型以及应用越来越广,集群规模发展到数千台节点。此时业务会出现在高峰时段响应较慢的情况,同时可能会出现数据节点在某个时刻坏盘的情况。随着数据越来越多,元数据也越来越多,重启时间也会相应变慢。网易在这个过程中踩过很多坑。目前我们的服务非常稳定,随着服务越来越稳定的情况下网易正在搭建万台节点的集群。 大数据大数据培训班_网易大数据_大数据培训机构大数据培训 目前网易在集群上有多个机房做保障,有多个自有集群和多个ToB集群业务,并且单个NameSpace也超过数千个节点,业务吞吐量每天达到了数十PB。在访问上单个NameSpace和单个NameNode客户端接受访问已经达到了亿级别,同时在冷热技术上也有建树。比如现在完全可以提供数百PB规模的冷备集群同时保证所有线上服务正常可用。这里还有一个挑战是保证服务24小时可用。我们对服务通常是做全实时监控,对硬件做全实时监控,对一些重要的业务做隔离。 大数据培训机构大数据培训_大数据大数据培训班_网易大数据 对于HDFS的挑战来说,有一些厂商专注于集群,还有一些厂商专注于硬件。我们根据自己的发展规划以及实际场景总结了网易遇到的两大挑战: 随着业务的不断拓展,每年重要的业务都会增加多个NameSpace来应对业务的拓展以及创新,并且在节点数上也会拓展,例如音乐、传媒每年都会增加很多新数据。我们也会不定期搭建一些专有集群和公有集群。执行规模增长的同时也需要服务的稳定运行,只有服务稳定运行,业务才可以收益更大。随着集群规模的增长,相应的数据也会有很多体现。集团内部有很多业务数据每个月都会增长数PB,甚至是10PB。在峰段时对于HDFS,管理数据也有很多挑战,在管理数据成本上也会相应的增加,比如硬件成本,元数据管理成本等等。 大数据培训机构大数据培训_大数据大数据培训班_网易大数据 这是当前网易的HDFS架构图,主要是分为四层,自上而下分别是: 用户层:这层主要判断用户访问的合理性以及安全认证,这块使用Kerberos进行认证。 代理层:主要借鉴RBF服务做代理,这块会搭建多个Router应对峰值的请求以及平时业务的增量请求,整个Router自身也有自己更新的增量数据,比如定期更新,定期感应NameNode,近期的状态数据等等。 元数据层:元数据用多个NameSpace组成,每个NameSpace通常有两个NameNode,同一时刻两个NameNode会设置一个主节点来接受客户端的请求。这块和代理层是一起的,因为客户端在访问时Router通常会有一个代理直接把请求下发到相应的NameNode上去。 数据层:数据层由多个DataNode组成,会定期向NameNode汇报心跳、增量数据、Block信息等等,这块主要负责和客户端的IO请求,当客户端在发起请求的时候,通常会让客户申请一个可用的账户。在请求时会优先经过用户层做安全校验,校验成功之后才会和相应的Router服务进行交互,由Router做代理,把客户端请求转发到相应的NameNode上。最后从Router这边拿到相应的请求地址和数据以及DataNode做IO通信,得到相应的数据。目前这个架构有很多好处,可以实现动态平移。NameNode有一个单点性能瓶颈,这一点可以对NameSpace做一个性能水平拓展。 对于集群规模增长主要有四个方向的优化。 服务快速响应:一个集群想要快速提升响应客户端请求首先要保证服务的快速启动,还有业务访问时主节点和DataNode节点都需要高性能。 NameNode性能拓展问题:当NameSpace管理的数据越来越多时NameNode存在性能瓶颈,所以要从NameNode性能瓶颈出发。集群管理也非常重要,有一些重要的业务不应该和其他重要业务放在一起,因为有时两个同等重要的业务放在一起可能会有相互干扰问题,这个时候需要做一些评估,把他们放在不同的NameSpace上,均衡提升NameSpace的性能。 集群监测能力:从集群来说,集群性能的好坏其实对他的监测能力也很重要,比如禁止异常流量可以提升集群性能。 业务评估:从业务角度进行出发的话我们需要和业务进行共建。对于任何一个业务来讲,是否接纳业务其实要根据当前集群运行的状态以及重要性来决定。所以说要做接入前的评估,还有接入后的判断等等。 大数据培训机构大数据培训_大数据大数据培训班_网易大数据 在介绍NameSpace快速启动优化前,先来回顾一下NameNode的启动流程。当一个NameNode启动时,先进入SafeMode阶段,该namenode实际上变成了standy NameNode,紧接着当前NameNode会加载本地元数据文件,就是FSImage文件。完成之后NameNode会回滚未加载完成的日志数据,NameNode接收他管理的一些DataNode注册,之后DataNode会进行全量上报,增量上报,当前的NameNode也会定期通知另一个active NameNode,生成Edit日志。这些Edit 日志也会并行保存在JournalNode 中,当前NameNode会定期去JournalNode上拉取EditLog,更新自己的内存数据。DataNode在这个过程中如果有一些新的数据变化也会快速向NameNode发送增量数据汇报。中途如果NameNode发现满足了接管动作,比如默认情况下发生了100万个事故,可能会触发切换。当所有的DataNode块汇报到99.999%整个启动才算完成。NameNode启动完之后就可以退出安全模式,这个过程是整个NameNode在启动中的主要步骤。 在这个过程中有几个地方比较耗时,一是在加载元数据的时候,也就是加载FSImage,二是NameNode在处理DataNode上报数据时,如果管理的数据非常多是比较慢的。 (编辑:航空爱好网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
站长推荐


