腾讯Hadoop大规模集群实践与挑战

5星 · 超过95%的资源 需积分: 13 6 下载量 148 浏览量 更新于2024-07-23 收藏 656KB PDF 举报
“腾讯大规模HADOOP集群实践.pdf”主要展示了腾讯在Hadoop技术上的大规模应用,包括集群架构、面临的问题及解决方案,以及对Hadoop组件的优化和改进。 正文: 腾讯作为中国领先的互联网公司,其数据平台部在处理海量数据方面有着丰富的经验。在Hadoop集群的实践中,腾讯构建了庞大的分布式计算环境,涵盖了众多业务部门,如SNG(社交网络事业群)、IEG(互动娱乐事业群)、MIG(移动互联网事业群)等。这些集群包括同乐微博集群、SNG/OMG/ECC主集群、TS4+TS5福永微博集群、宝安主集群等多个子集群,总计规模达到了数千台服务器,充分体现了Hadoop在大数据处理中的强大能力。 然而,随着集群规模的不断扩大,腾讯面临着一系列挑战。在存储层,NameNode的单点故障问题尤为突出,一旦NameNode出现故障,可能导致一小时的数据丢失,并且NameNode的重启过程漫长,不支持灰度变更,严重影响了系统的稳定性和可用性。在计算层,JobTracker的调度效率低下,集群扩展性不足,成为制约系统性能的关键因素。 为了应对这些挑战,腾讯选择了对Hadoop进行深度定制和优化。首先,他们引入了JobTracker的分散化,将原本集中式的JobTracker拆分为Cluster Manager和Task Tracker,以实现任务管理与资源管理的解耦,提高调度效率并实现平行扩展。这一改动不仅提升了系统的高可用性,也使得任务调度更为精细化。此外,腾讯还考虑了NameNode的高可用性,以消除单点故障的风险,确保数据的安全性。 在版本选择上,腾讯的TDW(Tencent Data Warehouse)基于CDH3u3,并对比了Yarn和Corona等方案。虽然Yarn是Facebook发布的较为先进的版本,但当时仍处于社区开发阶段,发布稳定版的时间未知,而Corona则是基于较早的0.20系列代码,可能相对简单,但腾讯最终选择了更适合自身需求的方案。 腾讯的大规模Hadoop集群实践为我们展示了如何在实际业务场景下解决Hadoop集群的扩展性、高可用性和效率问题。通过不断的技术迭代和优化,腾讯成功地构建了一个能够支撑其多元化业务的数据处理基础设施,这对于其他寻求大数据解决方案的企业具有重要的参考价值。

at org.apache.hadoop.ipc.Client.call(Client.java:1476) at org.apache.hadoop.ipc.Client.call(Client.java:1413) at org.apache.hadoop.ipc.ProtobufRpcEngine$Invoker.invoke(ProtobufRpcEngine.java:229) at com.sun.proxy.$Proxy29.mkdirs(Unknown Source) at org.apache.hadoop.hdfs.protocolPB.ClientNamenodeProtocolTranslatorPB.mkdirs(ClientNamenodeProtocolTranslatorPB.java:563) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.apache.hadoop.io.retry.RetryInvocationHandler.invokeMethod(RetryInvocationHandler.java:191) at org.apache.hadoop.io.retry.RetryInvocationHandler.invoke(RetryInvocationHandler.java:102) at com.sun.proxy.$Proxy30.mkdirs(Unknown Source) at org.apache.hadoop.hdfs.DFSClient.primitiveMkdir(DFSClient.java:3014) at org.apache.hadoop.hdfs.DFSClient.mkdirs(DFSClient.java:2984) at org.apache.hadoop.hdfs.DistributedFileSystem$21.doCall(DistributedFileSystem.java:1047) at org.apache.hadoop.hdfs.DistributedFileSystem$21.doCall(DistributedFileSystem.java:1043) at org.apache.hadoop.fs.FileSystemLinkResolver.resolve(FileSystemLinkResolver.java:81) at org.apache.hadoop.hdfs.DistributedFileSystem.mkdirsInternal(DistributedFileSystem.java:1043) at org.apache.hadoop.hdfs.DistributedFileSystem.mkdirs(DistributedFileSystem.java:1036) at org.apache.hadoop.hive.ql.session.SessionState.createPath(SessionState.java:751) at org.apache.hadoop.hive.ql.session.SessionState.createSessionDirs(SessionState.java:674) at org.apache.hadoop.hive.ql.session.SessionState.start(SessionState.java:586)

2023-07-16 上传