一淘搜索离线系统:Hadoop与HBase的集成应用

版权申诉
0 下载量 85 浏览量 更新于2024-07-20 收藏 1018KB PPTX 举报
"该资源是一份关于一淘搜索离线系统的PPT,主要涵盖了四个核心主题:一淘搜索系统的整体架构、基于HBase的分布式存储系统、基于Hadoop的分布式计算平台以及一淘全网商品的离线处理系统。这份资料详细介绍了从数据抓取、存储、业务处理到索引构建的全过程,并且涉及到HBase集群的运维优化和扩展开发,以及与Hadoop的协同工作。" 一、一淘搜索系统架构 一淘搜索系统是电商领域的一个重要组成部分,它整合了淘宝、天猫的商品信息以及全网的B2C商品和导购信息。系统架构包括数据抓取、存储、业务处理、索引构建和搜索引擎Web搜索前端等多个环节。数据抓取负责从各种来源获取商品数据,存储系统利用HBase进行大规模数据的分布式存储,业务处理涉及对数据的清洗、分析和转化,索引构建则用于提高搜索效率,最后通过搜索引擎Web搜索前端向用户提供友好的搜索体验。 二、基于HBase的分布式存储系统 HBase作为NoSQL数据库,被选为一淘搜索系统的核心存储组件,主要因为它能有效处理海量的非结构化数据。在HBase集群中,包含超过300台服务器,存储容量达到了300TB以上,每日更新量占比约为10%。集群通过Ganglia和JMX进行监控,确保稳定运行。数据类型包括电子商务网页库、全网B2C商品、导购信息和淘宝天猫商品等。 三、基于Hadoop的分布式计算平台 Hadoop是大数据处理的基石,一淘搜索系统利用Hadoop的分布式计算能力进行数据处理。Hadoop MapReduce框架在处理大规模数据时展现出高可扩展性和容错性,适合进行离线分析和计算。Hadoop与HBase的结合,使得数据处理和存储能够无缝衔接,形成一个完整的数据处理流水线。 四、一淘全网商品离线处理系统 全网商品的离线处理系统主要包括数据抓取、清洗、转换和加载等步骤。数据抓取从各个网站获取商品信息,然后通过清洗去除噪声和冗余数据。转换阶段将原始数据转化为适合存储和查询的格式,最后加载到HBase集群中。这个过程通常由Hadoop MapReduce作业完成,以实现并行化和分布式处理。 五、HBase扩展开发与优化 为了适应一淘搜索系统的特定需求,对HBase进行了定制化开发,包括开发LoadBalance插件以优化数据分布,定制RegionSplit/Merge插件和工具以动态调整Region大小,扩展ThriftServerAPI以支持更多接口,增强MapReduceLib以提升处理性能,以及开发多种Coprocessor插件以实现更细粒度的功能。 六、分布式消息队列 HBase集群中的分布式消息队列用于协调RegionServer之间的通信和数据同步,例如Queue中的Partition1和Partition2,每个分区接收并处理Message,确保数据处理的顺序和一致性。 总结: 这份PPT详细阐述了一淘搜索离线系统的技术架构,展示了Hadoop和HBase如何共同构建一个高效、可扩展的大数据处理和搜索平台。通过对HBase的深度定制和扩展,一淘成功地处理了海量的电商数据,实现了快速、准确的全网商品搜索服务。

org.apache.hadoop.hbase.DoNotRetryIOException: Unable to load configured region split policy 'org.apache.phoenix.schema.MetaDataSplitPolicy' for table 'SYSTEM.CATALOG' Set hbase.table.sanity.checks to false at conf or table descriptor if you want to bypass sanity checks at org.apache.hadoop.hbase.util.TableDescriptorChecker.warnOrThrowExceptionForFailure(TableDescriptorChecker.java:296) at org.apache.hadoop.hbase.util.TableDescriptorChecker.sanityCheck(TableDescriptorChecker.java:109) at org.apache.hadoop.hbase.master.HMaster.createTable(HMaster.java:2025) at org.apache.hadoop.hbase.master.MasterRpcServices.createTable(MasterRpcServices.java:657) at org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos$MasterService$2.callBlockingMethod(MasterProtos.java) at org.apache.hadoop.hbase.ipc.RpcServer.call(RpcServer.java:413) at org.apache.hadoop.hbase.ipc.CallRunner.run(CallRunner.java:133) at org.apache.hadoop.hbase.ipc.RpcExecutor$Handler.run(RpcExecutor.java:338) at org.apache.hadoop.hbase.ipc.RpcExecutor$Handler.run(RpcExecutor.java:318) org.apache.hadoop.hbase.DoNotRetryIOException: Unable to load configured region split policy 'org.apache.phoenix.schema.MetaDataSplitPolicy' for table 'SYSTEM.CATALOG' Set hbase.table.sanity.checks to false at conf or table descriptor if you want to bypass sanity checks at org.apache.hadoop.hbase.util.TableDescriptorChecker.warnOrThrowExceptionForFailure(TableDescriptorChecker.java:296) at org.apache.hadoop.hbase.util.TableDescriptorChecker.sanityCheck(TableDescriptorChecker.java:109) at org.apache.hadoop.hbase.master.HMaster.createTable(HMaster.java:2025) at org.apache.hadoop.hbase.master.MasterRpcServices.createTable(MasterRpcServices.java:657) at org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos$MasterService$2.callBlockingMethod(MasterProtos.java) at org.apache.hadoop.hbase.ipc.RpcServer.call(RpcServer.java:413) at org.apache.hadoop.hbase.ipc.CallRunner.run(CallRunner.java:133) at org.apache.hadoop.hbase.ipc.RpcExecutor$Handler.run(RpcExecutor.java:338) at org.apache.hadoop.hbase.ipc.RpcExecutor$Handler.run(RpcExecutor.java:318)

2023-07-14 上传