V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
0littleboy
V2EX  ›  程序员

hdfs 为何用 Java 实现?

  •  
  •   0littleboy · 2023-09-11 13:56:45 +08:00 · 3074 次点击
    这是一个创建于 437 天前的主题,其中的信息可能已经有所发展或是发生改变。

    现在有个需求要实现一个 hdfs

    要用 C 开发,查了下官方的实现,用的是 java

    这是为啥

    第 1 条附言  ·  2023-09-11 15:57:12 +08:00
    看了下大家的回答

    主要原因是大数据的文件系统并不是很底层,而且 hdfs 主要存储的是大文件,瓶颈可能在硬盘和网络上,hadoop 的主力开发语言又是 java ,用 java 确实没啥问题
    19 条回复    2023-09-13 10:47:19 +08:00
    Oktfolio
        1
    Oktfolio  
       2023-09-11 14:07:44 +08:00   ❤️ 1
    可能是因为它叫 HADOOP Distributed File System
    ConfusedBiscuit
        2
    ConfusedBiscuit  
       2023-09-11 14:51:23 +08:00
    如果它是用 C 开发的话,就又有人要问 “hdfs 为何用 C 实现?”

    ----- 抖机灵分割线 -----

    1. 关于实现语言
    ( 1 )由于它属于 Hadoop 生态,大数据生态,特别是 Hadoop 生态,Java 就是主力语言啊,如果算上 Spark 和 Flink ,即使不是 Java 生态,也是 JVM 生态。
    ( 2 )可能看到 FS 就觉得很底层,底层就该用 C ,但是实际上这个 FS 和操作系统的 FS 比,完全不是底层的东西,所以……

    2. 它用什么语言实现跟用户基本没啥关系。“现在有个需求要实现一个 hdfs”,这个就很奇怪,因为
    ( 1 )正常来说,没必要重复造轮子,直接用 hdfs 的接口或 SDK 就行,你用什么语言区别不大(虽然用 Java 可能最省事)
    ( 2 )如果真是按照字面的理解,要重复造一个轮子了……那如果语言一致的话……你是想直接复制粘贴吗?
    liprais
        3
    liprais  
       2023-09-11 14:53:56 +08:00
    yahoo 当年那伙人就愿意拿 java 写
    我还问过给 hadoop 起名那哥们,答案就是他当时就愿意用 java ,问能不能用 cpp ,他说他不会......
    ysn2233
        4
    ysn2233  
       2023-09-11 15:01:56 +08:00
    因为最开始想写这个的人想用 java 写
    lbbff
        5
    lbbff  
       2023-09-11 15:02:45 +08:00 via Android
    你们这需求挺离谱的。HDFS 很多功能不需要用 C 去实现啊,而且这种一般都是取决于主力开发的技术栈
    banmuyutian
        6
    banmuyutian  
       2023-09-11 15:04:49 +08:00
    不是所有高性能系统都要用 C 写呀,kafka 也是用 Java 开发的
    roundgis
        7
    roundgis  
       2023-09-11 15:10:39 +08:00
    用 c 把 java 的實現抄一遍?
    abcbuzhiming
        8
    abcbuzhiming  
       2023-09-11 15:10:52 +08:00
    你们要自己从头实现一个 HDFS ?还要用 C 来实现?我能否问贵方打算投入多少人进去? HDFS 当年也是投入了不少人力的,我记得围绕其还有公司的起起落落
    ZZ74
        9
    ZZ74  
       2023-09-11 15:12:38 +08:00
    你用 C
    写出来了 绩效到手,再开源下 名利双收
    写不出来,也能有所收获,比如回答了自己的这个问题
    Leviathann
        10
    Leviathann  
       2023-09-11 15:24:28 +08:00
    感觉不如 rewrite in rust
    kuituosi
        11
    kuituosi  
       2023-09-11 15:28:30 +08:00
    阿里巴巴内部实现是 cpp 写的,但是不开源跑在阿里云上
    dif
        12
    dif  
       2023-09-11 16:03:00 +08:00
    HDFS 不是基于 Google 的论文写的么?你看论文用 CPP 实现一遍就行了呀。
    matepi
        13
    matepi  
       2023-09-11 16:07:20 +08:00
    我来咬勾

    Namenode 当文件数多的时候,还仰仗 JVM 的堆内存管理,其实挺有问题的。fullgc 一下就整体不服务。

    有没有 namenode 的非 java 的实现呢?
    leo97
        14
    leo97  
       2023-09-11 16:19:22 +08:00 via Android
    @matepi 拯救世界的任务就交给你了
    me1onsoda
        15
    me1onsoda  
       2023-09-11 16:20:20 +08:00
    他可能不会 c
    flyqie
        16
    flyqie  
       2023-09-11 18:03:30 +08:00
    这问题感觉把 c 换成 cpp 会比较好。。
    ensonmj
        17
    ensonmj  
       2023-09-11 18:38:51 +08:00 via iPhone
    不是有 libhdfs 吗?
    julyclyde
        18
    julyclyde  
       2023-09-11 20:00:21 +08:00
    其实你这里才存在问题吧
    为什么要用 C 再写一遍
    谁来负责后续的兼容问题
    troywinter
        19
    troywinter  
       2023-09-13 10:47:19 +08:00
    其实这东西够牛逼的话用 python 写都没毛病,不够牛逼的话用 c 写出来也是个玩具
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4046 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 01:00 · PVG 09:00 · LAX 17:00 · JFK 20:00
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.