想象一座城市的水务系统:河流把自然水带进水库,水库分出蓄水区,水厂将原水沉淀、过滤、消毒,最终干净的清水通过管网送到千家万户的厨房。AWS S3数据湖之于AI数据管道,就相当于这座“数字水库”:业务系统产生的原始数据像河水一样源源不断汇入,ETL流程像净水车间一样完成清洗加工,而AI模型训练就像厨房里的厨师,随时拧开水龙头,取用干净、标准、可追溯的数据来“烹饪”智能。这篇文章会带你从水库的选址、分池、净化、供水,一直到成本、安全与运维,完整看懂S3数据湖如何支撑大规模AI训练数据的存储与流转。

岗位关联

掌握S3数据湖架构,是AI基础设施工程师的必备技能。它能帮你为团队搭建可扩展、可治理、成本可控的数据底座,让AI训练从“到处找数据”变成“随取随用”。

目录
  1. 可视化演示
  2. S3对象存储基础
  3. 数据湖分层架构
  4. 数据管道设计
  5. ETL与数据管理
  6. AI训练数据流转
  7. 性能与成本优化
  8. 安全与权限治理
  9. 架构最佳实践
  10. AI 应用场景
  11. Python 演示
  12. 常见误区
  13. 面试题

可视化演示

展示S3数据湖Medallion分层存储、ETL数据管道流程与Lake Formation数据治理,直观理解AI训练数据的全链路架构。

本节配有交互动效(进入视口后自动加载,约 3KB)。

Medallion分层存储架构 Bronze层:原始数据直接落地S3,保留完整历史记录 Silver层:清洗去重后的标准化数据,可供分析使用 Raw → Clean → Curated Gold层为AI训练就绪数据

S3对象存储基础

水库不是一个大土坑,而是一套有闸门、水位尺和调度规则的设施。桶(Bucket)是水库的大坝,前缀(Prefix)是坝内分隔区域的闸门,每个对象就是一只贴着标签的储水罐。S3正是这样一个“云端水库”:它把数据当作对象来保存,每个对象都由唯一的键(Key)、数据本体和元数据组成。你不需要关心底层磁盘在哪,只需要向S3说“把这只储水罐放进3号库区”。

对象存储和平时用的硬盘文件系统很不一样。文件系统是层级目录树,而S3是扁平的键值空间,所谓“文件夹”其实是靠前缀和分隔符模拟出来的。对象存储天生适合海量、不可变、以读为主的数据,这恰恰是AI训练数据的典型特征。S3还提供版本控制,类似水库每一次蓄水都留下水位记录,误删后可以找回旧版本;生命周期规则则像水库调度员,按计划把冷水放掉、把热水转入保温库,自动降级存储类型。

理解这些基础概念,就像拿到水库的设计图纸。只有先弄清楚桶、对象、版本和生命周期,后续的数据湖分层和管道设计才有稳固地基。

C=P×V×R\displaystyle C = P \times V \times R
这是S3存储成本的基础估算:总成本等于每GB单价乘以存储量再乘以冗余系数。
  1. 总成本 C代表一段时期内S3存储费用的总和,单位可以是美元或人民币。
    CC
  2. 单价 P不同存储等级每GB每月价格不同,标准层最贵,归档层最便宜。
    PP
  3. 存储量 V实际占用的数据容量,包含对象数据和元数据开销。
    VV
  4. 冗余系数 R多AZ复制、版本控制保留的旧副本等都会放大实际计费容量。
    RR

数据湖分层架构

一座现代水库不会让所有水混在一起:上游来水进原水区,经过初步沉淀进沉砂池,再进清水池,最后通过泵站送出。数据湖同样需要分层,否则所有数据堆在一起,训练时根本不知道哪份是干净可用、哪份是原始垃圾。最常见的分层是四层:原始层、加工层、分析层、消费层。

原始层(Raw)存放从业务系统、日志、数据库同步过来的原始数据,特点是不做任何修改、保留完整信息,对应水库的原水区。加工层(Processed)保存经过清洗、去重、格式统一后的中间数据,类似沉淀后的澄清池。分析层(Analysis)进一步做聚合、特征工程,生成模型可直接使用的宽表和特征集,对应检测合格的清水池。消费层(Consumption)则是按AI训练、BI报表等场景组织的出口数据,像送水到千家万户前的水龙头。

分层是数据湖的“库区规划”。它让AI团队既能追溯原始凭证,又能快速取用高质量特征数据,避免所有人都在垃圾堆里挖宝。

Vtotal=Vraw+Vprocessed+Vanalysis\displaystyle V_{total} = V_{raw} + V_{processed} + V_{analysis}
湖的总存储量约等于各层数据量之和,分层越多,冗余和中间数据也会越多,所以需要结合成本做取舍。
  1. 总存储量 Vtotal数据湖整体占用的S3空间。
    VtotalV_{total}
  2. 原始层数据 Vraw未经过任何处理的原始对象,通常体积最大。
    VrawV_{raw}
  3. 加工层数据 Vprocessed完成清洗转换后的数据,体积通常会缩小。
    VprocessedV_{processed}
  4. 分析层数据 Vanalysis经过聚合和特征工程的数据,质量最高、体积更紧凑。
    VanalysisV_{analysis}

数据管道设计

水库要发挥价值,必须有引水渠把河水送进来,还要有输水管把清水送出去。AI数据管道就是S3数据湖的“水系网络”,负责把分散在业务数据库、消息队列、日志文件里的数据,源源不断导入湖中,再按需供给下游训练任务。管道设计最先要解决的是数据摄入(Ingestion):用Kafka收集实时事件,用S3 Transfer Family接收文件传输,用Glue/EMR做批量同步。

设计管道时,要考虑批流一体:既支持每天定时跑批量任务,也支持近实时流式写入;还要做好目录规划,比如按 业务/日期/事件类型 建前缀,这样下游查询能快速裁剪数据范围。最后是管道监控:像自来水公司盯着水压和水质一样,用CloudWatch监控摄入延迟、失败重试和吞吐量,发现问题立即告警。

管道设计就像水利工程,路线、宽度、闸门位置都决定整个城市能不能顺畅用水。好的S3管道,能让数据从源头到训练环境像自来水一样稳定到达。

Tingest=VsrcBpipe\displaystyle T_{ingest} = \frac{V_{src}}{B_{pipe}}
摄入耗时等于源数据量除以管道带宽,带宽越高,数据进湖越快。
  1. 摄入耗时 Tingest从源系统抽取数据到写入S3所花费的时间。
    TingestT_{ingest}
  2. 源数据量 Vsrc需要搬迁的数据总体积,单位通常是GB或TB。
    VsrcV_{src}
  3. 管道带宽 Bpipe单位时间内能传输的数据量,受网络、并发任务数影响。
    BpipeB_{pipe}

ETL与数据管理

原水即使来自高山,也含泥沙和细菌,必须经过沉淀、过滤、消毒才能饮用。ETL(Extract, Transform, Load)就是数据湖的净水车间:先从源头抽取数据,再做清洗转换,最后加载到目标层。数据清洗通常包括剔除空值、去重、统一时间格式、修正异常编码;转换则是把半结构化JSON打平成表格,或将CSV转成Parquet列式存储。

ETL之后的质量直接影响AI模型效果。如果上游有大量脏数据漏进来,训练出的模型就会“喝坏肚子”。所以要在ETL中加入数据校验规则,比如空值率、唯一性、字段类型检查,不合格的数据进入死信队列等待人工处理。分区策略也至关重要:按天或按地区分区,查询时只扫描需要的分片,就像净水厂按蓄水池分批处理,而不是每次把整座水库烧开。

ETL车间管得越好,AI模型喝到的水就越干净。一个稳定的数据湖,必须有标准化的清洗流程和分区策略,否则数据越多,负担越重。

Avalid=VcleanVsource×100%\displaystyle A_{valid} = \frac{V_{clean}}{V_{source}} \times 100\%
数据可用率 = 干净数据量 ÷ 源数据量 × 100%,它反映ETL清洗环节的有效性。
  1. 可用率 AvalidETL之后真正合格可用的数据占比。
    AvalidA_{valid}
  2. 干净数据 Vclean通过清洗规则、可供下游使用的数据量。
    VcleanV_{clean}
  3. 源数据 Vsource进入ETL前的原始数据总量。
    VsourceV_{source}
  4. 百分比换算乘上100%是为了用更直观的百分比表达质量。
    ×100%\times 100\%

AI训练数据流转

清水最终流向千家万户的厨房,而AI模型就是那个最挑剔的“大厨”。S3数据湖必须支持训练场景下的数据流转:首先是大规模样本采样,对原始层和加工层的数据按业务规则抽样,避免模型被数据分布带偏;然后是批量读取,训练框架通过S3 SDK或SageMaker内置接口,以高吞吐方式拉取特征数据,就像厨房同时打开多个水龙头备菜。

训练场景还特别强调数据版本。模型训练完要能复现,就必须记录这次训练用了哪个桶、哪个前缀、哪个时间点的数据。可以把S3的版本控制配合数据清单清单(Inventory)使用,每次训练前生成一个数据清单文件,作为本次实验的“菜谱”。训练完成后的评估指标、模型权重也可以回写到S3的 models/ 目录,形成从数据到模型的闭环。

AI训练和S3之间,本质上是一场“水流供需平衡”。管道够粗、数据够干净、版本够清晰,大厨才能心无旁骛地做菜。

Tepoch=NsampleBread×(1+Ooverhead)\displaystyle T_{epoch} = \frac{N_{sample}}{B_{read}} \times (1 + O_{overhead})
每个训练轮次的耗时 ≈ 样本总数 ÷ 读取带宽 ×(1 + 额外开销比例)。
  1. 单轮耗时 Tepoch模型完整遍历一遍训练集所需时间。
    TepochT_{epoch}
  2. 样本总数 Nsample参与训练的样本条数。
    NsampleN_{sample}
  3. 读取带宽 BreadS3向训练节点提供数据的速度。
    BreadB_{read}
  4. 额外开销 Ooverhead包括网络重试、数据解析、缓存未命中等损耗。
    OoverheadO_{overhead}

性能与成本优化

供水公司既要保证高峰时段水压,又不能为一年只下一场雨的地区铺设巨型管道。S3数据湖的性能与成本,也是一场精细化平衡。性能方面,S3标准存储适合频繁读取的热数据,而低频访问层和归档层则适合冷数据;文件格式上,把大量小CSV合并成Parquet列式存储,能大幅减少扫描量,就像把散装米统一装进大袋,搬运效率更高。

成本方面,首先要建立成本预算:用S3 Cost & Usage Report 分析各桶、各前缀的费用,给不同业务部门打标签(Tag)分摊成本;其次设置生命周期策略,让超过30天未访问的原始日志自动转到低频层,超过90天进入归档层;最后用S3 Intelligent-Tiering,让数据按访问频率自动在层间移动,类似智能水表自动调节用水方案。

数据湖不是越大越好,而是越聪明越好。合理分级、压缩和生命周期管理,能让每一分钱都花在AI训练真正需要的数据上。

CperGB=Cstorage+CaccessVtotal\displaystyle C_{perGB} = \frac{C_{storage} + C_{access}}{V_{total}}
每GB综合成本 = (存储费用 + 访问请求费用) ÷ 总数据量,是衡量湖成本效率的核心指标。
  1. 每GB成本 CperGB把存储费用和请求费用摊到每一GB上的平均成本。
    CperGBC_{perGB}
  2. 存储费用 Cstorage数据占用的S3容量费用。
    CstorageC_{storage}
  3. 访问费用 CaccessGET/LIST等请求、数据取回和传输产生的费用。
    CaccessC_{access}
  4. 总数据量 Vtotal参与计算的全部数据体积。
    VtotalV_{total}

安全与权限治理

水库周边的门禁、围栏、消毒站和水质监测仪,决定了整座城市能否安心用水。S3数据湖的安全治理同样不能事后弥补,而要在设计之初就嵌入。第一道防线是加密:开启S3服务端加密(SSE-S3或KMS),并启用HTTPS保证传输加密;第二道防线是权限:用IAM策略做最小权限授权,比如训练任务只能读取 data-lake-processed/dataset_v1/,不能删除原始层。

除了防止外部攻击,还要防内部误操作。开启S3访问日志记录每次读写行为,配合CloudTrail做审计;对关键数据启用Object Lock,在指定期限内任何人不能删除或覆盖,满足合规留存要求。可以把安全治理想象成“多层防护网”:每加一层策略,风险就降一截。

安全不是加一把锁,而是建立一套让人放心的供水秩序。S3数据湖只有做到权限最小化、行为可审计、数据不可篡改,AI团队才敢把核心数据放心交给它。

Rexpose=1Nlayer\displaystyle R_{expose} = \frac{1}{N_{layer}}
数据暴露风险与安全层数成反比,层数越多,单点失守被利用的概率越低。
  1. 暴露风险 Rexpose数据被未授权访问或泄露的相对概率。
    RexposeR_{expose}
  2. 安全层级 Nlayer加密、IAM、审计、锁定等防护机制的数量。
    NlayerN_{layer}
  3. 反比关系分母越大,整体风险越小;但如果某一层配置错误,风险会集中爆发。
    1Nlayer\frac{1}{N_{layer}}

架构最佳实践

一座好的自来水厂,不会只有一个水源、一条供水管,它会有备用泵站、应急预案和自动调度系统。S3数据湖的架构最佳实践,同样围绕“稳定、自动、可恢复”展开。首先是可扩展性:用分区表替代单一大目录,用对象键设计避免热点分区,保证数据量增长时性能不崩塌;其次是自动化运维:用EventBridge监听S3新对象事件,自动触发Glue作业或Step Functions状态机,完成从进湖到清洗的流水线。

故障恢复方面,S3跨区域复制(CRR)可以搭建灾备,配合版本控制能快速回滚误删除;要建立备份与恢复演练,定期验证“水库溃坝”后能否快速重建。最后是持续演进:数据湖不是一次性工程,要定期review分区策略、成本报告和访问模式,像水务公司根据城市发展不断升级管网一样,让架构始终匹配AI业务的成长节奏。

最佳实践不是一套固定答案,而是一套持续优化的经营理念。让S3数据湖像一座不断扩建、自我修复的城市水库,才能真正支撑AI业务走得更远。

Aavail=TupTup+Tdown×100%\displaystyle A_{avail} = \frac{T_{up}}{T_{up} + T_{down}} \times 100\%
可用性 = 正常运行时间 ÷(正常运行时间 + 故障时间),衡量数据湖整体服务稳定性。
  1. 可用性 Aavail数据湖对外提供正常服务的时间占比。
    AavailA_{avail}
  2. 正常运行时间 Tup系统无故障、可正常读写的时间。
    TupT_{up}
  3. 故障时间 Tdown系统不可用、正在恢复的时间。
    TdownT_{down}
  4. 百分比换算把比例转化为更直观的可用性等级。
    ×100%\times 100\%

AI 应用场景

多团队共享AI训练数据平台

阶段:数据准备与特征工程

解决的问题:传统方式下,每个算法团队各自从业务库拉数,格式混乱、口径不一,重复清洗还容易造成数据口径冲突。通过S3数据湖分层,原始数据集中进湖,统一ETL后形成标准特征层,各团队按权限读取同一份可信数据。

具体案例:某电商公司用S3作为中心数据湖,订单、日志、用户行为先进入原始层,每日ETL生成用户特征宽表;搜索推荐团队和风控团队直接从加工层读数据,分别训练召回模型和反欺诈模型,训练数据版本统一,复现实验只需找到对应数据集清单。

实时推荐系统的流式数据管道

阶段:实时数据摄入与训练/推理数据供给

解决的问题:实时推荐需要秒级感知用户行为,又需要历史数据做模型训练。Kafka实时流写入S3原始层,再通过批流一体化管道生成近实时特征,兼顾低延迟和高吞吐。

具体案例:某视频平台用Kafka接收用户点击流,实时写入S3的 raw/events/ 目录;Spark Structured Streaming每5分钟做微批ETL,产出用户实时特征;训练任务定时从S3读取累积特征数据,每天凌晨更新排序模型,推理服务再读取最新模型权重。

模型训练数据版本回溯

阶段:MLOps与模型生命周期管理

解决的问题:模型效果下降时,无法确定是代码、数据还是特征导致,需要精确定位训练数据版本。S3版本控制+数据清单可以提供数据集的“快照指针”。

具体案例:某金融风控团队每次训练前,用Athena生成训练数据清单并写入 datasets/manifest/metadata.json,记录数据源桶、时间范围、特征列版本;模型上线后若指标异常,可直接回溯到历史清单,重放当时的训练数据定位漂移源。

Python 演示

python69 行
class MiniS3:    def __init__(self):        self.buckets = {}     def ensure_bucket(self, name):        if name not in self.buckets:            self.buckets[name] = {}     def put_object(self, bucket, key, body):        self.ensure_bucket(bucket)        self.buckets[bucket][key] = body     def get_object(self, bucket, key):        return self.buckets[bucket][key]     def list_objects(self, bucket):        return list(self.buckets.get(bucket, {}).keys())  def build_raw_data(s3, prefix="logs/2026/01/07"):    records = [        "user=alice,event=click,item=100",        "",        "user=bob,event=purchase,item=42",        "user=alice,event=click,item=100",        None    ]    for i, rec in enumerate(records):        if rec is not None:            s3.put_object("data-lake-raw", prefix + "/log-%d" % i, rec.encode())  def clean_record(line):    if not line:        return None    parts = dict(pair.split("=") for pair in line.split(",") if "=" in pair)    if "user" not in parts or "item" not in parts:        return None    return parts  def run_etl(s3):    raw_keys = s3.list_objects("data-lake-raw")    total = 0    valid = 0    for key in raw_keys:        body = s3.get_object("data-lake-raw", key).decode()        total += 1        record = clean_record(body)        if record is None:            continue        valid += 1        processed_key = "processed/" + key.replace("logs/", "").replace("log-", "record-")        s3.put_object("data-lake-processed", processed_key, str(record).encode())    return total, valid  def main():    s3 = MiniS3()    build_raw_data(s3)    total, valid = run_etl(s3)    rate = 100.0 * valid / total if total else 0    print("总记录数 %d,有效记录 %d,可用率 %.1f%%" % (total, valid, rate))    for key in s3.list_objects("data-lake-processed"):        print("已入加工层:", key)  if __name__ == "__main__":    main()
目的:用Python模拟S3数据湖的分层存储与ETL清洗流程,直观展示原始层到加工层的数据流转。
  1. self.buckets = {}用字典模拟S3的桶空间,不同桶对应不同数据层。
  2. def ensure_bucket(self, name)模拟首次使用时自动创建S3桶。
  3. s3.put_object("data-lake-raw", prefix + "/log-%d" % i, rec.encode())把原始日志以对象形式写入原始层。
  4. clean_record(line)模拟ETL清洗:空行和缺失关键字段的记录会被过滤。
  5. run_etl(s3)ETL主流程:遍历原始层对象、清洗、转换、写入加工层。
  6. processed_key = "processed/" + key.replace(...)通过键前缀设计模拟数据湖目录规划。
  7. rate = 100.0 * valid / total if total else 0计算数据可用率,对应真实ETL质量监控中的核心指标。

常见误区

误区S3有桶和前缀,看起来像文件夹,所以我可以用文件系统的习惯随意嵌套、频繁修改文件、创建海量小文件。

正解S3本质是扁平键值存储,前缀只是命名的“假目录”,没有真正的父子层级;每个对象都是完整的、不可原地修改的实体,更新等于整体覆盖。频繁创建小文件还会让请求费用和读取延迟飙升。正确做法是用分区前缀组织数据,用Parquet等列式格式合并小文件。

为何常见:因为我们从小接触Windows/Mac目录树,很容易把S3界面中的“文件夹”视图当成真实文件系统。

误区S3容量近乎无限,干脆把原始日志、清洗后数据、特征表全部放在同一个桶下,反正都能访问。

正解没有分层的数据湖会变成数据沼泽。原始数据、加工数据、特征数据混在一起,下游无法判断数据质量和使用范围。正确做法是划分原始层、加工层、分析层、消费层,并用命名规范强制隔离环境。

为何常见:搭建初期数据量小,分层看起来“多此一举”,等到数据爆炸式增长后才追悔莫及。

误区ETL作业每天按时把CSV文件从原始层搬到加工层就算完事,分区和格式优化可以以后再说。

正解AI训练和数据分析经常要扫描海量S3对象。如果不做时间分区,每次查询都扫描全量数据;如果不用列式压缩格式,IO开销成倍增长。正确的ETL应输出Parquet/ORC并按日期分区,让下游通过分区裁剪大幅减少扫描量。

为何常见:ETL跑通容易,性能优化需要理解底层存储访问模式,初学者很难一开始就具备这种全局视角。

误区数据是不断更新的,直接读当前加工层最新数据训练就行,旧数据没用了。

正解AI实验要求可复现,模型效果波动时需要能回溯到当时的训练数据。只保留最新数据会导致历史实验无法对照,也很难发现数据漂移。应结合S3版本控制、数据清单和数据集元数据,为每次训练生成一个版本指针。

为何常见:训练完模型只关心指标好坏,很少关注数据快照,导致问题排查时无从下手。

误区AWS S3有安全加密选项,创建桶后默认别人访问不到,所以不用太花精力治理权限。

正解S3默认私有,但实际项目中极易出现桶策略写错、IAM权限过大、回收站未开、日志未开等问题。安全治理是持续过程:启用加密、最小权限IAM、访问日志审计、Object Lock合规锁定,并定期用工具扫描公开桶。

为何常见:默认私有给了人“安全幻觉”,但任何一条错误策略都可能把整个数据湖暴露在公网。

面试题

Q1. 关于S3对象存储,下列说法正确的是?

单选题 · easy

  • A.对象存储适合频繁修改文件内容
  • B.对象由键、数据与元数据组成← 正确答案
  • C.S3本质上是一种块存储服务
  • D.桶名称在区域内可以重复使用

答案:B。S3对象的核心结构是键(Key)、数据(Body)和元数据(Metadata),选B。对象存储不支持原地修改,块存储才适合频繁修改;S3是对象存储而非块存储;桶名称是全局唯一,不能重复。

Q2. 在S3中模拟“文件夹”功能主要依靠什么?

单选题 · easy

  • A.对象存储中的目录树
  • B.数据库中的外键关系
  • C.前缀与分隔符的组合← 正确答案
  • D.操作系统文件系统挂载

答案:C。S3是扁平命名空间,所谓文件夹是依靠对象键里的前缀和分隔符(如 /)在控制台中展示出来的,选C。S3没有真实目录树,也不依赖数据库或文件系统挂载。

Q3. ETL流程中字母"T"代表的含义是?

单选题 · easy

  • A.传输 Transfer
  • B.转换 Transform← 正确答案
  • C.测试 Test
  • D.触发 Trigger

答案:B。ETL是Extract(抽取)、Transform(转换)、Load(加载)的缩写,T代表Transform,选B。传输和触发是常见混淆项,但不在ETL缩写中。

Q4. 数据湖分层架构中,原始层的核心特点是?

单选题 · mid

  • A.数据经过清洗和聚合
  • B.数据为不可变原始记录← 正确答案
  • C.只保存Parquet格式数据
  • D.只允许BI报表读取

答案:B。原始层保存从源系统采集来的原始数据,强调不修改、不丢失、可追溯,选B。清洗聚合发生在加工层和分析层;原始层支持任何格式;消费层才对接BI和AI训练等下游。

Q5. AI训练管道中,推荐使用Parquet等列式格式存储特征数据,主要原因是?

单选题 · mid

  • A.列式格式能存储更多字符串
  • B.读取时能减少无关列IO← 正确答案
  • C.列式格式会自动加密数据
  • D.列式格式无需进行分区

答案:B。Parquet按列存储,训练任务只读取需要的特征列,从而大幅减少S3读取量,选B。列式格式与存储字符串多少无关,不会自动加密,也不能替代分区策略。

Q6. S3版本控制的主要价值是?

单选题 · mid

  • A.自动清除所有历史版本
  • B.防止误删并追溯历史对象← 正确答案
  • C.等同数据库事务回滚
  • D.提升S3读写吞吐性能

答案:B。开启版本控制后,每次覆盖或删除对象都会保留一个历史版本,可以恢复误删数据并追溯变更,选B。它不会自动清历史,不是数据库事务,也不直接提升性能。

Q7. 训练数据出现漂移时,最合理的应对方式是?

单选题 · hard

  • A.只保留新数据删除旧数据
  • B.对比历史数据版本并评估影响← 正确答案
  • C.无限增加模型训练轮次
  • D.提升S3存储类型等级

答案:B。数据漂移意味着训练分布与线上分布不一致,应先通过数据清单和版本机制定位训练时使用的数据版本,再与最新真实数据做分布对比,选B。删除旧数据会导致无法复盘,增加训练轮次不解决分布差异,升级存储等级只改善访问性能。

Q8. 数据湖分层架构中,常见的层级包括?

多选题 · easy

  • A.原始层← 正确答案
  • B.加工层← 正确答案
  • C.分析层← 正确答案
  • D.缓存层

答案:ABC。标准数据湖分层一般包括原始层、加工层、分析层和消费层,选A/B/C。缓存层是性能优化手段,不是数据湖的必备分层。

Q9. S3生命周期规则可以用来完成哪些工作?

多选题 · mid

  • A.自动将冷数据转到低频存储← 正确答案
  • B.定期删除过期临时文件← 正确答案
  • C.提升数据写入并发能力
  • D.对旧版本执行归档清理← 正确答案

答案:ABD。生命周期规则能根据时间条件把数据转入低频或归档层、删除过期对象、清理历史版本,选A/B/D。它只管理存储生命周期,不能提升并发写入能力。

Q10. 构建AI数据管道时,S3承担的典型职责包括?

多选题 · hard

  • A.统一存放训练原始数据← 正确答案
  • B.存放清洗后的特征数据← 正确答案
  • C.直接执行模型反向传播
  • D.为训练任务提供批量读取← 正确答案

答案:ABD。S3作为数据湖底座,负责存储原始数据、特征数据和模型产物,并为训练框架提供高吞吐批量读取,选A/B/D。模型反向传播由GPU计算引擎执行,S3不参与数值计算。