1
heyjei 2023-08-08 13:11:59 +08:00 2
可以这样做,有些企业就是用挂存储的方式做的。但是这样做是传统的思维用在了新技术上。
HDFS 设计理念里面有一个非常重要的就是“Moving Computation is Cheaper than Moving Data”,上面的做法正好违反了这个理念。 举一个简单的例子,你的集群有 10 个节点,挂的万兆网卡的 NAS ,那么你的集群总的 IO 读写就是 1 万兆,因为所有的节点共享这 1 万兆的带宽。 如果 10 个节点,每个节点,插了 8 个 SATA3 接口的 SSD ,速度算 5G 吧( 6G 稍微打个折),那一个节点的 IO 读写就是 40G ,也就是 4 万兆,10 个节点就是 40 万兆。 IO 读写性能差了 40 倍。 但是 Hadoop 的性能并不是单纯的看 IO 性能,如果你的计算类型比较耗 CPU 的话,能够通过分布式的计算来加速运算的话,你的方案也是可行的。 |
2
heyjei 2023-08-08 13:14:40 +08:00 1
很多云上的 Hadoop 解决方案,其实用的也都是挂存储的方案,甚至有些挂的是 S3
|
3
qianxaingmoli 2023-08-08 13:18:20 +08:00 1
应该可行,但是貌似都在搞 MinIO 这种对象存储形式的,也有类似云厂商那样为 hadoop 优化对象存储的产品
https://www.minio.org.cn/hdfs-migration.html https://juicefs.com/zh-cn/product/community-edition |
4
billlee 2023-08-08 13:28:30 +08:00 via Android 1
你把问题想复杂了,HDFS 和 YARN 本来就可以分开部署
|
5
dtgxx OP @heyjei #1 谢谢大佬,我们上午讨论的时候纠结过这个问题,一个是我们打算每台机器挂八块机械硬盘,每台机器大约 IO 是 200m/s*8=1600m/s ,比万兆慢一些;但是 10 台机器的话,是插 10 跟万兆的线连接 NAS ,而不是十根线插入交换机,然后引一根线到 nas ,所以这块的性能计算的时候没有打折扣。 我心里其实也有些疑问,nas 可以支持并行的 io 访问吗,类似我说的 10 根线都插到 nas 上,提供 10 万兆的速度?
@qianxaingmoli 谢谢,我学习下 @billlee 我是知道存算可以分离的,但是单台设备的存储有限,我需要的计算不多,需要加存储就只能买设备,不划算,所以想通过 nas 解决存储问题。 |
6
billlee 2023-08-08 14:19:25 +08:00 1
你说的并行 I/O 访问,多块硬盘肯定是并行的,但是总速度你要考虑 HBA 和 PCIe 的带宽限制。如果是一块 HBA 插到 PCIe x16 上,那无论有多少硬盘,速度的瓶颈就在那个 PCIe 接口上。那种五六十个盘位的存储密集型的机器适合对需要容量的需求远大于带宽的场合。Hadoop 的方案大部分情况下是性价比最高的了,一般会用 2U 12 盘位的机器,用 10 TB 硬盘,每台就有 100 TB 容量。
|
8
heyjei 2023-08-08 14:29:40 +08:00 1
@dtgxx 有啥 NAS 可以插 10 根网线?再说这个万兆网卡也不便宜吧。就算一个 NAS 插了 10 根万兆的线,NAS 本身的存储 IO 有限制的吧,你的 NAS 插几个硬盘,组不组 RAID ,总的 IO 有多少
其实不用纠结存储的问题,我们很多时候用 Hadoop ,看中的就是 map reduce 的编程模型,用他可以简化很多的计算,把一些单机跑不起来的数据处理跑起来。 不要纠结能不能把 hadoop 的优势发挥到极致,先跑起来再说。如果要一步到位,那要找厂商提供解决方案。 |
9
xuelu520 2023-08-08 14:47:51 +08:00 1
要不要考虑下服务器上 PCIE 的固态,比万兆快多了
|