腾讯云国际版 Cloud HDFS(CHDFS)实战:0.03375/0.0484 USD/GB/月存储双价区、0.0766/0.116 USD/Mbps 带宽计费、5% 截尾规则与 EMR/DistCp 迁移全解析(2026)

📅 · 腾讯云国际版实战教程 - ChengziCloud

一句话结论

Meta Description: 腾讯云国际版 CHDFS:存储 0.

本文要点
  • 先定位:CHDFS 在腾讯云存储版图里站哪一格
  • 两笔钱:CHDFS 的账单只有两个科目
  • 三个规模实算:带宽费到底占多少
  • 两个能真省钱的计费细节
  • 从本地 HDFS 搬上云:DistCp 全流程
  • 能跑什么、不能跑什么:兼容性与四条硬限制
  • 和 COS、CFS 三方对比:同一份 100 TiB 数据,三条路的账单
  • 选型清单:什么情况下才该上 CHDFS

Meta Description: 腾讯云国际版 CHDFS:存储 0.03375/0.0484 USD/GB/月,境外贵 43.4%;带宽 0.0766/0.116 USD/Mbps,按有效天数折算;含 1 TiB–100 TiB 实算、同 VPC 限制与 DistCp 迁移配置。

关键词:腾讯云国际版CHDFS、Cloud HDFS 价格、CHDFS 计费、HDFS 迁移上云、腾讯云对象存储对比、EMR 存算分离、大数据文件系统

做大数据的人从自建机房搬到云上,最难受的一步不是换服务器,而是那套跑了好几年的 HDFS。Hive 表、Spark 任务、历史分区、权限脚本,全都默认 hdfs:// 开头。换成对象存储,代码要改、依赖要换、连 rename 这种原子操作都变成非原子;继续在云主机上自建 HDFS,又得自己养 NameNode 高可用、自己扩 DataNode 磁盘,运维成本一分没省。

腾讯云国际版给出的答案是 Cloud HDFS(CHDFS):一套兼容标准 HDFS 访问协议、带层级命名空间的分布式文件系统,挂载后用法和本地 HDFS 几乎一致,官方口径是"无需修改现有代码即可迁移"。

它的价格结构在腾讯云存储家族里相当特殊——同时收存储费和带宽费。存储 0.03375 USD/GB/月(中国大陆)与 0.0484 USD/GB/月(中国大陆以外),带宽 0.0766 USD/Mbps 与 0.116 USD/Mbps(2026 年 10 月复核官方定价页)。绝大多数存储产品只收容量,CHDFS 多出来的这一笔带宽费,能让一个 1 TiB 的小集群月账单从 34.56 美元变成 113 美元。

这篇把 CHDFS 的价目、两个价区的真实价差、带宽费的"5% 截尾 + 有效天数折算"两个省钱细节、与 COS / CFS 的三方成本边界,以及从本地 HDFS 用 DistCp 搬上云的完整配置,一次讲清楚。所有单价取自官方 Pricing 与 Purchase Guide 页面,算例均按官方公式自行复算。

一、先定位:CHDFS 在腾讯云存储版图里站哪一格

腾讯云国际版有三套"文件/对象"存储,长得像、用起来完全不同:

产品接口协议数据语义访问方式典型延迟量级计费项
COS 对象存储HTTP REST / S3 兼容对象(扁平 Key,无真实目录)SDK、API、CDN十毫秒级起存储 + 请求 + 流量 + 取回
CFS 文件存储NFS / SMB(Turbo 支持 POSIX/MPI)文件(POSIX 语义)挂载到目录毫秒级(Standard 约 3 ms)存储(按小时峰值)+ 可选带宽
CHDFS 云 HDFSHDFS 协议(ofs://)文件 + 层级命名空间Hadoop 插件挂载面向高吞吐顺序读写存储 + 带宽

三者的分界线不是"谁更便宜",而是谁能让现有代码不改:

  • 你的程序用 s3:// 或 HTTP SDK 读写 → 用 COS,最便宜,扩展性最好。
  • 你的程序要 open()/write()/read() 那种 POSIX 文件语义,或者要给一堆 Web 服务器共享上传目录 → 用 CFS。
  • 你的程序是 Hadoop 生态(Hive、Spark、MapReduce、Presto、Flink),路径写死 hdfs://,靠 rename 做原子提交、靠目录做分区 → 只有 CHDFS 能不改编排逻辑。

官方对 CHDFS 的定位写得很直白:面向大数据分析与机器学习这类高数据吞吐场景,通过存算分离把计算资源的弹性最大化,数据永久保存,从而降低整体资源成本。它支持的访问来源是 CVM、CPM 2.0(裸金属)和 TKE,全部走 VPC 内网。

一句话记住它跟 CFS 的区别:CFS 是"共享目录",CHDFS 是"数据湖底座"。CFS 卖给需要随机小 IO 的通用业务,CHDFS 卖给需要顺序大吞吐的批处理作业,所以它才敢把带宽单独拿出来卖钱。

二、两笔钱:CHDFS 的账单只有两个科目

官方计费说明很短,但信息密度很高——CHDFS 只有两个计费项,都是月结、按量付费(pay-as-you-go),没有包年包月、没有资源包、没有最低消费。

官方价目表(2026 年 10 月复核)

计费项计费周期计费方式中国大陆中国大陆以外境外溢价
存储用量(STANDARD)月按量付费0.03375 USD/GB/月0.0484 USD/GB/月+43.4%
带宽月按量付费0.0766 USD/Mbps0.116 USD/Mbps+51.4%

两个价区不是"贵一点点":存储贵 43.4%,带宽贵 51.4%。这个差距比大多数腾讯云产品的地域价差都大,原因不难猜——CHDFS 是重资产的高吞吐存储,境外机房的光模块、带宽采购和电力成本都按当地结算,而中国香港、新加坡、法兰克福这些节点又没有中国大陆那种规模效应。如果你的数据可以放在中国大陆地域,一定要放在那里,同样的容量直接省下三成。

存储费用怎么算:288 个采样点的平均

官方给的公式是三层嵌套,拆开看其实很朴素:


// 每天:把 288 个 5 分钟采样点取平均,得到"当日存储用量"
当日存储用量 = 当日 288 个 5 分钟存储用量之和 ÷ 288

// 每月:把当月每天的用量取平均,得到"月存储用量"
月存储用量 = 当月每日存储用量之和 ÷ 当月天数

// 存储费 = 单价 × 月存储用量
存储费 = 0.03375(或 0.0484)× 月存储用量(GB)

两个推论在实战里很有用:

  1. 删除数据要在月初而不是月末做。计费看的是"日均",不是"月末快照"。你 30 号删掉 100 TiB,当月账单里这 100 TiB 依然按 29 天计了费。反过来,如果这批数据只用了 3 天就清掉,账单里也只记 3 天——临时跑一次全量回溯,成本比想象中低。
  2. 不存在"最小购买单位"。不像 CFS Turbo 要按 40 TiB 买断,CHDFS 完全按实际占用计价,几百 GB 也照收,扩容不迁移、缩容不退费但会立刻反映在次日用量里。

带宽费用怎么算:峰值 × 有效天数 / 当月天数

带宽是 CHDFS 相对 COS / CFS 最"反直觉"的一笔。官方公式:


// 峰值取当月所有 5 分钟带宽点,降序排列后丢掉最高的 5%,取剩下最高的那个
月峰值带宽 = Top5% 截尾后的最高 5 分钟带宽点

// 再按"有效天数"折算成整月
月带宽 = 月峰值带宽(Mbps)× 有效天数 ÷ 当月天数
带宽费 = 0.0766(或 0.116)× 月带宽

注意这里的口径:带宽费按 Mbps 收,不是按流量(GB)收。这跟 COS 完全不同——COS 是"下载了多少 GB 收多少钱",CHDFS 是"你这个月最高跑到了多少 Mbps 收多少钱"。所以 CHDFS 的账单对访问强度敏感,而不是对访问总量敏感:同样搬 10 TB 数据,慢慢搬一整个月几乎不要带宽钱,一小时猛搬完反而可能踩到高峰值。

一个必须说清的价格空白

产品文档里,存储项写的是"按 STANDARD 存储用量计算",而 API 文档已经提供了生命周期规则(LifeCycleRules)和恢复任务(RestoreTasks)两组接口——这两组接口的存在,说明底层具备冷热分层与取回能力(低频/归档 + 恢复)。但国际站公开的 Purchase Guide 只列了 STANDARD 一档的单价,其余档位没有公开报价。

这意味着两件事:第一,不要假设"CHDFS 有便宜的归档层可以省钱",公开渠道查不到单价;第二,如果确实要用分层,得先跟商务确认报价与可用地域再看是否能落地。写这篇文章时我反复查了 /pricing/chdfs、/pricing/chdfs/overview 与购买页,能拿到的确定数字只有上表这四个——这也是本文算例只基于 STANDARD 的原因。

顺带记一条容灾条款:欠费后 24 小时停服,数据保留 120 天,120 天内未补缴则销毁。对数据湖这种"重建成本极高"的场景,建议在 Billing Center 打开余额告警。

三、三个规模实算:带宽费到底占多少

把两个科目合起来算,才能看出 CHDFS 的成本重心随规模怎么漂移。下面三档按"月峰值 200 Mbps"和"月峰值 1 Gbps"两种强度,分别按中国大陆与境外单价复算(1 TiB 按 1024 GB 计):

场景存储用量存储费(大陆)存储费(境外)带宽费 200 Mbps(大陆/境外)带宽费 1 Gbps(大陆/境外)月合计 1 Gbps(大陆/境外)
小型数据湖 / POC1 TiB34.5649.5615.32 / 23.2078.44 / 118.78113.00 / 168.34
中型离线数仓10 TiB345.60495.6215.32 / 23.2078.44 / 118.78424.04 / 614.40
大型历史分区库100 TiB3,456.004,956.1615.32 / 23.2078.44 / 118.783,534.44 / 5,074.94

(单位:USD/月。带宽费按满月 30 天有效计算,即不打"有效天数"折扣的最坏情况。)

同一张表换个角度看"带宽占比",结论立刻变了:

规模带宽占月账单比例(1 Gbps 峰值,大陆)说明
1 TiB69.4%带宽是大头,存储只是零头
10 TiB18.5%存储开始主导
100 TiB2.2%带宽几乎可以忽略

再算一个更有用的数:存储费与带宽费持平的临界容量。


临界容量 = 月带宽费 ÷ 存储单价

大陆、1 Gbps 峰值:78.4384 ÷ 0.03375 = 2,324 GB ≈ 2.27 TiB
大陆、200 Mbps 峰值:15.32 ÷ 0.03375 = 454 GB ≈ 0.44 TiB
境外、1 Gbps 峰值:118.784 ÷ 0.0484 = 2,454 GB ≈ 2.40 TiB

也就是说:容量在 2.27 TiB 以下、带宽跑到 1 Gbps 时,你为带宽付的钱比存数据本身还多。 这正是 CHDFS 不适合"小数据量 + 高并发随机读"的原因——这个区间应该用 CFS 或 COS。反过来说,超过 100 TiB 之后带宽费占比掉到 2% 附近,CHDFS 的单位成本才开始接近"纯存储"产品,它的大数据定位才成立。

四、两个能真省钱的计费细节

细节一:5% 截尾让"偶发突发"几乎免费

官方对峰值的定义不是"当月最高点",而是:把当月所有 5 分钟带宽采样点降序排列,丢掉最高的 5%,取剩下的最高值。

一个月 30 天、每天 288 个采样点,全月共 8,640 个点,5% 就是 432 个点,折合约 36 小时。换句话说:

  • 月末一次性 distcp 全量搬迁,跑了 2 小时峰值 1.5 Gbps → 这 24 个采样点落在被丢弃的 5% 里,计费峰值根本不看它。
  • 但如果每天都有 2 小时的高峰备份,一个月累计 60 小时 > 36 小时 → 高峰就会被计入,峰值直接按 1.5 Gbps 收。

这是个很实用的判据:周期性高峰每月累计超过 36 小时,才会真正影响账单。日常 ETL 高峰如果只是每天一两个小时,基本被截尾吸收;而"每天三次全量同步"这种作业编排,就会实打实抬高计费峰值。

细节二:有效天数折算,让"集中跑批"合法省钱

月带宽 = 峰值 × 有效天数 ÷ 当月天数。有效天数指当月实际产生带宽的天数,不是自然月天数。

同样 1 Gbps 峰值:


// 全月每天都有流量(30 天有效)
78.4384 × 30 ÷ 30 = 78.44 USD

// 只有 5 天跑批(5 天有效)
78.4384 × 5 ÷ 30 = 13.07 USD

// 只有 1 天做迁移
78.4384 × 1 ÷ 30 = 2.61 USD

差别 6 倍。 这意味着一个常见的架构决策被价格强化了:与其让 ETL 每天细水长流跑 30 天,不如把全量重算集中到月末 3–5 天跑完——存储费按实际存放天数计、带宽费按有效天数折算,两头都省。当然,前提是业务能接受这个数据新鲜度;实时性要求高的场景没法这么玩,这也是 CHDFS 与流计算搭配时要额外算账的地方。

反过来也要警惕一个陷阱:"有效天数"是按天算的,不是按小时。哪怕某天只跑了 10 分钟,这一天也算一个有效天。所以"分散到 30 天每天跑 10 分钟"是最贵的编排方式——既摊满了有效天数,又可能把峰值抬上去。

五、从本地 HDFS 搬上云:DistCp 全流程

5.1 先建四个对象,顺序不能反

CHDFS 的权限模型是"文件系统 → 权限组 → 权限规则 → 挂载点"四层,缺一层就挂不上。这个顺序初看繁琐,但它解决了 HDFS 时代最头疼的问题:谁能从哪个网段、以只读还是读写方式访问哪套数据,全在控制台里配,不需要碰 hdfs-site.xml 和 Kerberos。


// 第 1 步:文件系统(File Systems → Create)
//   名称 4–64 位,字母/数字/连字符/下划线
//   地域在这里锁定,之后不能跨地域改

// 第 2 步:权限组(Permission Groups → Create)
//   一个权限组 = 一组规则的集合,挂在挂载点上生效

// 第 3 步:权限规则(Add Rule,可多条)
//   授权地址:IP 或网段,如 10.10.1.2 / 10.10.1.2/20
//   访问模式:Read-write 或 Read-only
//   优先级:1–100,数字越小优先级越高;匹配到多条时高优先级覆盖低优先级
//   建议:默认给整个 VPC 网段只读,只给 ETL 节点段读写

// 第 4 步:挂载点(Configure → Mount Points → Add Mount Point)
//   选 VPC + 权限组,生成一个域名,形如
//   f4xxxxxxxx-xxxx.chdfs.ap-beijing.myqcloud.com

挂载点是 CHDFS 在 VPC 里的"入口域名",也是计费与权限的实际作用点。一个文件系统可以挂多套 VPC(多挂载点),但跨地域不行——官方 FAQ 明确写着"Currently, you can only access CHDFS from the same region in a VPC",这条限制直接决定了多地域数据湖必须拆成多个文件系统,再靠上层任务调度去分发。

5.2 客户端侧:一个 JAR + 四行配置

CHDFS 的 Hadoop 插件是个纯 Java 实现,官方文档里叫 chdfs_hadoop_plugin_network-<version>.jar(DataX 那篇给的是 1.7 版)。把它丢进 Hadoop 的公共库目录即可,EMR 集群的路径是:


// 三个前置条件,缺一个都会失败
// 1) 目标机器/容器有 Java 1.8
// 2) 目标机器与挂载点在同一个 VPC
// 3) 目标机器的 VPC IP 命中权限规则里的授权地址

// EMR 集群:把 JAR 同步到所有节点
scp chdfs_hadoop_plugin_network-*.jar \
  /usr/local/service/hadoop/share/hadoop/common/lib/

// 自建 Hadoop:放进 $HADOOP_HOME/share/hadoop/common/lib/
cp chdfs_hadoop_plugin_network-*.jar \
  $HADOOP_HOME/share/hadoop/common/lib/

然后在 core-site.xml 里加四个 property,这是唯一必须手工改的文件:


<configuration>
  <!-- CHDFS 的实现类,官方指定,不要改 -->
  <property>
    <name>fs.AbstractFileSystem.ofs.impl</name>
    <value>com.qcloud.chdfs.fs.CHDFSDelegateFSAdapter</value>
  </property>
  <property>
    <name>fs.ofs.impl</name>
    <value>com.qcloud.chdfs.fs.CHDFSHadoopFileSystemAdapter</value>
  </property>

  <!-- 本地磁盘缓存目录:内存缓存不够时落到这里,不存在会自动创建 -->
  <property>
    <name>fs.ofs.tmp.cache.dir</name>
    <value>/data/chdfs_tmp_cache</value>
  </property>

  <!-- 你的腾讯云 APPID,注意是 APPID 不是 SecretId -->
  <property>
    <name>fs.ofs.user.appid</name>
    <value>1250000000</value>
  </property>
</configuration>

改完同步到所有节点。EMR 集群不用改文件——在 EMR 控制台的"组件管理 → HDFS 配置"里贴同样的内容即可,官方文档专门标注了这一点。

验证只需要一条命令:


// 能列出文件就说明挂载成功
hadoop fs -ls ofs://f4xxxxxxxx-xxxx.chdfs.ap-beijing.myqcloud.com/

// MapReduce 任务直接把默认文件系统指向 CHDFS
hadoop jar my-job.jar com.example.Job \
  -Dfs.defaultFS=ofs://f4xxxxxxxx-xxxx.chdfs.ap-beijing.myqcloud.com/ \
  /input /output

5.3 五个调优参数:读写性能的实际旋钮

除了必填四项,插件还有一组可选参数,它们决定了吞吐能跑到什么水平(官方文档的默认值如下):

配置项作用默认值建议
fs.ofs.tmp.cache.dir本地临时目录无(必填)放在本地 NVMe / 高 IOPS 云盘上
fs.ofs.map.block.sizeMap 切分块大小(字节),只影响 split,不影响底层存储块134217728(128 MB)大文件顺序扫描可调到 256 MB,减少 task 数
fs.ofs.data.transfer.thread.count数据传输并发线程数32高带宽实例可提到 64;小实例维持 32 避免打满带宽抬高峰值
fs.ofs.block.max.memory.cache.mb内存缓冲大小(读写都加速)16与堆内存权衡,32–64 常见
fs.ofs.block.max.file.cache.mb磁盘缓冲大小(只加速写)256写多读少的批处理可加大
fs.ofs.prev.read.block.count预读块数(底层块一般 4 MB)4顺序扫描敏感型作业调到 8
fs.ofs.plugin.info.log是否打印插件 info 日志false排障时临时开 true,别长期开

注意 fs.ofs.data.transfer.thread.count 那个建议——它跟第二节的带宽计费是联动的:把并发线程数拉满,吞吐上去了,5 分钟采样点里容易出现高峰,峰值一高,带宽费就上去了。这不是"配得越高越好"的参数。

5.4 迁移数据:DistCp 能用,但这几个参数会失效

官方推荐的迁移工具就是 Hadoop 社区原生的 DistCp,全量或增量都支持:


// 从本地/自建 HDFS 全量搬到 CHDFS
hadoop distcp \
  hdfs://10.0.1.11:4007/testcp \
  ofs://f4xxxxxxxx-xxxx.chdfs.ap-beijing.myqcloud.com/

// 增量(按时间戳过滤,示例:只搬最近 7 天变更的文件)
hadoop distcp -update -delete \
  hdfs://10.0.1.11:4007/warehouse \
  ofs://f4xxxxxxxx-xxxx.chdfs.ap-beijing.myqcloud.com/warehouse

必须知道的一个坑:DistCp 的 -p[rbax] 参数族在 CHDFS 上不生效。官方明确列出——r(replication 副本数)、b(block-size 块大小)、a(ACL)、x(XATTR)这四项即使指定了也会被忽略。原因是 CHDFS 的副本与块大小由服务端统一管理,用户不可见也不可调。

实践影响:迁移后不要指望沿用源端的副本数或 ACL。如果原集群靠 HDFS ACL 做的细粒度授权,迁完之后要在 CHDFS 的权限规则(IP + 读写模式)里重建,或者按官方那篇 Ranger 方案文档接 Ranger。这是很多团队迁完才发现"数据在、权限没了"的根因。

除 DistCp 外,官方还给了两条路:

  • DataX 3.0:把 CHDFS 的 JAR 复制到 plugin/reader/hdfsreader/libs/ 和 plugin/writer/hdfswriter/libs/,改 bin/datax.py 里的 CLASS_PATH 让它包含这两个目录,再在 JSON 的 hadoopConfig 里填那四行配置。适合跨异构源(MySQL → CHDFS、COS → CHDFS)的离线同步。
  • Druid 深度存储:把 CHDFS 当 Druid 的 deep storage,适合时序分析场景,官方有独立的实践文档。

5.5 CDH 用户的特殊配置位置

如果你用的是 CDH(官方验证组合是 CDH 5.16.1 + Hadoop 2.6.0),配置文件不在节点上,而在 Cloudera Manager 里:


// Cloudera Manager → Configuration → Service-Wide → Advanced
// 找到:Cluster-wide Advanced Configuration Snippet (Safety Valve) for core-site.xml
// 把 5.2 里的四个 property 贴进这个文本框,然后重启相关服务

CDH 上还要注意组件重启范围:YARN、Spark、Sqoop 改动需要重启 NodeManager,Hive、Presto 需要重启 HiveServer 与 HiveMetastore,而 Flink、Impala、EMR 不需要重启。这个差别直接决定了变更窗口怎么排。

六、能跑什么、不能跑什么:兼容性与四条硬限制

组件兼容表(官方口径)

组件是否支持需要重启的服务
YARN✅ 支持NodeManager
Hive✅ 支持HiveServer、HiveMetastore
Spark✅ 支持NodeManager
Sqoop✅ 支持NodeManager
Presto✅ 支持HiveServer、HiveMetastore、Presto
Flink✅ 支持不需要重启
Impala✅ 支持不需要重启
EMR✅ 支持不需要重启
HBase⚠️ 不推荐—
自建组件🕐 官方称"future support"—

HBase 不推荐这条值得单独说。HBase 的 WAL 与 HFile 是典型的随机写 + 低延迟追加 + 频繁 rename/truncate 语义,而 CHDFS 的设计目标是大块顺序吞吐。硬上不是不能跑,是 RegionServer 的写放大和恢复路径会把你拖进性能地狱——HBase 要上云,用专门的 HBase 产品或自建本地盘集群。

四条硬限制,选购前先自查


// 限制 1:不能跨地域访问
//   CHDFS 只能从同地域的 VPC 内访问,多地域 = 多套文件系统
//   上层要靠调度或数据同步打通,别指望一个挂载点全球可用

// 限制 2:必须 Java 1.8
//   目标服务器/容器得有 JDK 1.8,纯 Python/Go 环境要先装 JVM

// 限制 3:Hadoop 2.x 及以上
//   Apache Hadoop 2.x 全系可用,EMR 原生支持;Hadoop 1.x 不支持

// 限制 4:同一个文件"多读单写"
//   并发读同一文件:支持
//   并发写同一文件:不支持,同一时刻只能有一个客户端写
//   → 多写入端场景要靠上层加锁或用不同文件(时间分区命名)

第四条对迁移方案的影响最大:如果你的老系统里有多个进程同时 append 同一个日志文件(比如 Flume 多 agent 写同一 sink 文件),这套逻辑必须改成"每 agent 一个文件 + 下游合并",否则会出现写入冲突。

权限:三层结构,CAM 到底管什么

CHDFS 的授权是三层叠加:

  1. VPC 网络层:挂载点绑定 VPC,物理上不跨 VPC(跨 VPC 要靠云联网打通路由)。
  2. 权限规则层:IP/网段 + 只读/读写 + 优先级(1–100)。
  3. CAM 账号层:控制台/API 操作权限,官方列了 20 多个 action,比如 chdfs:CreateFileSystem、chdfs:DescribeFileSystems、chdfs:CreateAccessRules、chdfs:CreateLifeCycleRules、chdfs:CreateRestoreTasks。

CAM 的资源粒度写法值得抄下来:


// 文件系统级
qcs::chdfs:${region}:uin/${account-uin}:filesystem/${file-system-id}

// 挂载点级
qcs::chdfs:${region}:uin/${account-uin}:mountpoint/${mount-point-id}

// 权限组级(注意还带 VPC 维度)
qcs::chdfs:${region}:uin/${account-uin}:vpc/${vpc-id}

实际意义:可以给"数据平台组"授予整个 filesystem 的读写,给"分析师组"只授 DescribeFileSystems + 只读挂载点的规则,做到"能看不能改"。这比 HDFS 的 chmod/chown + Kerberos 组合要轻得多,但也意味着它管不到文件级权限——ACL 是网段级的,不是文件级的。需要文件级权限的,官方给的路子是接 Ranger(有专门的配置方案文档)。

生命周期规则与恢复任务的 API 同在 CAM 体系内(chdfs:CreateLifeCycleRules / chdfs:CreateRestoreTasks),这也侧面印证了第二节说的"底层具备分层与取回能力,只是国际站没公开非 STANDARD 档的单价"。

七、和 COS、CFS 三方对比:同一份 100 TiB 数据,三条路的账单

把站内已经写过的 COS 与 CFS 单价拉进来,同一个 100 TiB 存量的月度账单差异非常直观(均为存储侧费用,流量/请求另计):

方案单价(USD/GB/月)100 TiB 存储费带宽/额外费用100 TiB 月合计数据语义
COS 标准存储0.0232,355.20请求费 + 公网取回流量另计≈ 2,355 + 请求/流量对象,非 POSIX
COS 低频存储0.01251,280.00取回费另计(有最低存储期)≈ 1,280 + 取回对象,非 POSIX
COS 归档存储0.0036368.64取回需解冻,按天计取回费≈ 369 + 解冻对象,分钟级取回
CHDFS(中国大陆)0.033753,456.00带宽 1 Gbps 峰值 = 78.443,534.44HDFS 协议 + 层级命名空间
CHDFS(境外)0.04844,956.16带宽 1 Gbps 峰值 = 118.785,074.94同上
CFS Standard(NFS)0.055,120.00带宽含在规格内5,120.00POSIX 文件,3 ms 延迟
CFS Standard Turbo0.0857(最小 20 TiB 买断)8,775.68带宽含在规格内8,775.68POSIX/MPI,0.2 ms

从这张表能读出一组很明确的结论:

  1. 纯存储单价:COS 全场最便宜。标准存储比 CHDFS 大陆价便宜 32%(0.023 vs 0.03375),100 TiB 一年差约 1.3 万美元。任何"只是想把数据放着"的场景,选 COS 而不是 CHDFS 都是对的。
  2. CHDFS 比 CFS 便宜 31%(3,534 vs 5,120)。这个价差在 100 TiB 规模是每月 1,586 美元、每年 1.9 万美元,足以覆盖迁移改造的人力成本。
  3. 算上带宽后 CHDFS 比 COS 标准贵 50%(3,534 vs 2,355),这 50% 买的是"hdfs:// 协议 + 目录语义 + 原子 rename + 不改代码"。如果迁移到 COS 需要重写 20 个 Spark 作业的写入逻辑、还要处理 rename 非原子导致的数据重复,那 50% 的溢价往往比改造成本便宜。
  4. CFS Turbo 是最贵的(8,775 vs CHDFS 5,074 境外),它卖的是 0.2 ms 延迟和 POSIX 完整性,适合渲染、AI 推理这类随机小 IO;拿它跑 Spark 批处理属于花钱买用不上的性能。

还有一个常被忽略的隐性成本:COS 的取回与请求费。归档存储 100 TiB 一次全量解冻,取回费可能比存储费本身高一个数量级(解冻按天、按 GB 计),而 CHDFS 的带宽费只跟峰值有关,反复读取同一份数据不再额外付费——这才是"数据湖底座"与"归档仓"最本质的计费差异。

八、选型清单:什么情况下才该上 CHDFS

该上 CHDFS 的五个信号:


// 1. 现有作业跑在 Hadoop 生态(Hive/Spark/MapReduce/Presto/Flink),路径写死 hdfs://
// 2. 数据量已过 10 TiB,且峰值吞吐经常打到几百 Mbps 以上
// 3. 需要目录语义做分区裁剪、原子 rename 做 task 提交(_SUCCESS 机制)
// 4. 计算资源要弹性(TKE/CVM 随时扩缩),存储必须独立于计算生命周期
// 5. 能接受"数据与计算必须同地域同 VPC"的部署约束

不该上 CHDFS 的三种情况:


// 1. 数据量 < 1 TiB:带宽费是存储费的 2 倍以上,不如 CFS 省心
// 2. 全是随机小 IO(HBase、OLTP、海量小文件):CHDFS 的设计目标是大块顺序吞吐
// 3. 需要全球多地域读写同一份数据:CHDFS 不支持跨地域,只能多套文件系统 + 上层同步

推荐方案

如果你手上是一套正在自建 HDFS 上的离线数仓,迁移路径建议按这个顺序走:

  1. 先算清楚目标规模落在哪个价区——数据能放中国大陆就放中国大陆,同样的 100 TiB 存量,月账单从 5,074.94 降到 3,534.44,每月省 1,540.50 美元,一年省 1.8 万美元。
  2. 评估带宽画像:把历史监控里的日峰值拉出来,看"每月超过 P95 的小时数"有多少。超过 36 小时的部分才会真正影响计费峰值,据此决定是否要错峰。
  3. 先迁一个非核心分区做 POC:用 DistCp 搬 1–2 TiB,跑通权限规则、挂载点、插件配置和 Hive 元数据切换,再批量迁。
  4. 迁移顺序按"冷分区 → 温分区 → 热分区",冷分区先落地能立刻验证成本模型,也最容易回滚。
  5. 把 ETL 编排改成"集中跑批",利用有效天数折算把带宽费压到最低。

🚀 需要腾讯云国际版 CHDFS 的选型与迁移支持? 无论是给一套自建 HDFS 算清"迁到 CHDFS 还是 COS 更划算"、按你的历史峰值画出带宽成本曲线、设计多地域数据湖的拆分方案,还是处理 DistCp 迁移后权限丢失、插件加载失败、Hive 元数据切换这类现场问题——我们都能按你的存量规模、吞吐画像与合规要求给出方案与成本模型。需要海外云服务器或云产品折扣,也可以通过 chengzicloud.cloud 采购。

总结

CHDFS 的定价模型用一句话概括:存储按 GB·月计价(大陆 0.03375 / 境外 0.0484),带宽按 Mbps·月计价(0.0766 / 0.116),两个科目都是月结按量,没有资源包也没有包年包月。

真正决定账单的不是"存了多少",而是三个隐性选择:数据落在哪个价区(境外存储贵 43.4%、带宽贵 51.4%)、月度峰值跑多高(1 TiB 规模下带宽占账单 69%,100 TiB 规模下只剩 2%)、作业分散在多少天(有效天数折算,差 6 倍)。

记住四个数字就够了:0.03375(大陆每 GB 每月)、2.27 TiB(1 Gbps 峰值下存储费与带宽持平的容量拐点)、36 小时(每月可被截尾吸收的高峰时长)、-31%(同等容量下 CHDFS 相对 CFS Standard 的便宜幅度)。

如果只记一句:CHDFS 不是"便宜的存储",是"不用改代码的 HDFS"——它的溢价买的是兼容性,不是容量。

延伸阅读:

本文由 4.chengzicloud.cloud 提供,点击访问首页了解更多。

常见问题(FAQ)

CHDFS 支持跨地域访问吗?

不支持。官方 FAQ 明确说明只能在同一地域的 VPC 内访问。跨地域访问必须建多套文件系统,靠上层调度或数据同步打通;同地域多 VPC 可以通过云联网打通路由后共享挂载点。

CHDFS 和 CFS 到底该选哪个?

看 IO 特征和接口协议。需要 POSIX/NFS 语义、随机小 IO、毫秒级延迟(共享上传目录、渲染、AI 推理)选 CFS;需要 HDFS 协议、大块顺序吞吐、Hadoop 生态不改代码(Hive/Spark 批处理)选 CHDFS。价格上 CHDFS 大陆价 0.03375 比 CFS Standard 0.05 便宜 32.5%,但 CHDFS 带宽单独计费,1 TiB 以内的小规模反而 CFS 更省。

带宽费怎么算,把作业集中在几天跑能省钱吗?

能,而且省得不少。公式是 月带宽 = 峰值 × 有效天数 ÷ 当月天数。1 Gbps 峰值跑满 30 天是 78.44 美元,只在 5 天跑批就是 13.07 美元,差 6 倍。另外峰值计算会丢掉最高的 5% 采样点(全月约 36 小时),所以偶发 1–2 小时的高峰不计入计费峰值,但"每天 2 小时高峰"累计 60 小时就会计入。

DistCp 迁移有哪些参数在 CHDFS 上会失效?

-p[rbax] 四项全部失效:r(副本数)、b(块大小)、a(ACL)、x(XATTR)即使指定也会被忽略,因为副本与块大小由 CHDFS 服务端统一管理。实践影响最大的是 ACL——原集群的 HDFS ACL 不会带过来,需要在 CHDFS 权限规则里按 IP 网段重建,或用 Ranger 方案。

HBase 能跑在 CHDFS 上吗?

官方明确列为"不推荐"。HBase 依赖随机写、WAL 追加与频繁 rename,与 CHDFS 面向大块顺序吞吐的设计目标冲突。HBase 上云请用腾讯云的 HBase 产品或自建本地盘集群。官方支持的组件是 YARN、Hive、Spark、Sqoop、Presto、Flink、Impala、EMR。

CHDFS 欠费会怎样,数据会丢吗?

欠费后 24 小时停服(无法读写,但数据保留),120 天内未补缴则数据被销毁。对重建成本极高的数据湖场景,建议在 Billing Center 配置余额与账单告警,并把"数据可重建性"写进架构评审。