51mee - AI智能招聘平台Logo
模拟面试题目大全招聘中心会员专区

在处理海量短视频数据时,如何设计存储和检索系统?请说明技术选型(如HDFS、S3、对象存储)、检索技术(如Elasticsearch、视频索引),以及如何优化检索性能(如倒排索引、分片)。

快手数据分析师 战略分析类难度:困难

答案

1) 【一句话结论】
针对海量短视频,采用“分层存储(对象存储+S3冷存储)+内容感知检索(Elasticsearch+OCR/人脸识别)”架构,通过倒排索引、分片优化及内容特征索引,实现高效存储与多维度(文本+内容)检索,平衡成本与性能。

2) 【原理/概念讲解】
老师口吻解释关键概念:

  • 分布式存储技术:
    • HDFS(Hadoop分布式文件系统):属于Hadoop生态,数据本地性高,适合本地集群计算(如视频处理、日志分析),但跨区域访问延迟较高(通常数百毫秒),数据最终一致性。
    • S3(对象存储):云服务,支持海量非结构化数据存储,跨区域访问灵活(延迟低于50毫秒),高可用,但读取延迟相对较高,写入成本(如对象存储的写入费用)。
  • 内容分析技术:
    • OCR(光学字符识别):提取视频画面文字(如标题、字幕),作为检索元数据。
    • 人脸识别:提取视频人物特征(如人脸编码),用于人物相关检索。
  • 检索技术(以Elasticsearch为例):
    基于Lucene的分布式搜索引擎,核心是倒排索引(将文本拆分为词,建立词-文档映射表,加速关键词匹配),通过分片将索引切分成多个独立部分,每个分片可独立处理查询,提高并发和容错能力;副本用于数据冗余,提升可用性。

3) 【对比与适用场景】

技术名称定义特性使用场景注意点
HDFSHadoop分布式文件系统数据本地性高,适合本地计算,高吞吐;跨区域访问延迟高(数百毫秒),最终一致性本地集群计算(视频处理、日志分析)跨区域业务访问慢,不适合云上跨地域访问
S3AWS对象存储服务海量非结构化数据存储,跨区域访问灵活(延迟<50ms),高可用;读取延迟较高,写入成本(如对象存储的写入费用)海量视频存储,跨地域业务适合存储原始视频,冷数据归档
Elasticsearch基于Lucene的分布式搜索引擎倒排索引,分片/副本,实时索引;支持多维度查询(文本+内容特征)海量文本检索(视频标题、标签),内容特征检索(OCR、人脸)查询复杂度,索引更新延迟(异步),需额外资源(如集群)
OCR/人脸识别视频内容分析技术提取文字/人脸特征,作为检索元数据视频内容(画面文字、人物特征)检索计算成本高,需GPU加速,需与存储分离部署

4) 【示例】
视频上传与检索流程:

  1. 存储:用户上传视频(如video_123.mp4),文件存储到S3(bucket: video-store,key: video_123.mp4)。
  2. 内容分析:调用OCR识别画面文字(如“搞笑段子”),调用人脸识别提取人物特征(如人脸编码facedata_abc)。
  3. 元数据索引:将视频ID、标题、标签、上传时间、OCR文字、人脸特征等写入ES索引(video-index),示例请求:
    PUT /video-index/_doc/{video_id}
    {
      "title": "搞笑段子视频",
      "tags": ["搞笑", "短视频"],
      "upload_time": "2023-10-01T12:00:00Z",
      "ocr_text": "搞笑段子",
      "face_features": "facedata_abc"
    }
    
  4. 检索:用户输入关键词“搞笑”,ES通过倒排索引匹配元数据(标题、标签、OCR文字),同时匹配人脸特征,返回视频ID列表。查询示例:
    GET /video-index/_search
    {
      "query": {
        "bool": {
          "must": [
            { "match": { "title": "搞笑" } },
            { "match": { "ocr_text": "搞笑段子" } }
          ]
        }
      }
    }
    

5) 【面试口播版答案】
面试官您好,针对海量短视频的存储和检索问题,我的核心方案是“分层存储+内容感知检索”架构。原始视频存入对象存储(如S3),元数据及内容特征(文字、人脸)通过OCR、人脸识别等工具提取后,索引到Elasticsearch。检索时,用户可通过文本(标题、标签)或内容特征(画面文字、人物)查询,ES的倒排索引加速匹配,分片机制平衡负载。冷数据访问频率低时(如<1次/天,时间超过30天),迁移到S3的Glacier(通过Kafka触发数据复制),热数据保留在S3,减少成本。分片数量根据数据量(如每个分片100万条)和QPS(如1000QPS)计算,副本设为3提升可用性。这样既能高效存储海量视频,又能实现多维度检索,满足用户需求。

6) 【追问清单】

  • 问:如何处理视频内容(如画面文字、人脸)的检索?
    回答要点:结合OCR、人脸识别技术,将识别结果作为元数据索引到Elasticsearch,实现内容检索。
  • 问:冷热数据迁移的具体步骤?
    回答要点:冷数据判断标准(访问频率<1次/天,时间超过30天),迁移流程(数据复制到Glacier,用户访问时触发预热,如通过缓存层或消息队列触发)。
  • 问:检索实时性如何保证?
    回答要点:通过Kafka异步更新ES索引(或调整刷新策略为每秒刷新),确保查询结果及时更新,延迟低于50毫秒。
  • 问:分片和副本的平衡?
    回答要点:分片数量根据数据量(如每个分片100万条)和并发量(如每个分片支持1000QPS)确定,副本数量根据可用性要求(如3副本)设置,避免过度分片导致查询延迟。
  • 问:数据一致性问题?
    回答要点:存储端(S3)采用最终一致性,检索端(ES)通过副本同步保证一致性,关键查询可设置高可用副本。

7) 【常见坑/雷区】

  • 坑1:忽略内容特征检索,导致用户无法通过视频内容(如画面文字)查找视频。
    雷区:仅索引元数据,检索结果不全面,影响用户体验。
  • 坑2:冷热数据未区分,所有视频都存入高成本存储。
    雷区:存储成本过高,资源浪费。
  • 坑3:分片过多导致查询负载高,分片过少导致容错能力不足。
    雷区:查询延迟增加,系统不稳定。
  • 坑4:未考虑实时性,索引更新延迟导致检索结果过时。
    雷区:用户查询到旧数据,影响业务。
  • 坑5:存储选择不当,跨区域业务使用HDFS导致访问延迟。
    雷区:用户体验差,业务扩展受限。
51mee.com致力于为招聘者提供最新、最全的招聘信息。AI智能解析岗位要求,聚合全网优质机会。
产品招聘中心面经会员专区简历解析Resume API
联系我们南京浅度求索科技有限公司admin@51mee.com
联系客服
51mee客服微信二维码 - 扫码添加客服获取帮助
© 2025 南京浅度求索科技有限公司. All rights reserved.
公安备案图标苏公网安备32010602012192号苏ICP备2025178433号-1