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

hdfs 为何用 Java 实现?

  •  
  •   0littleboy · 229 天前 · 2803 次点击
    这是一个创建于 229 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

    这是为啥

    第 1 条附言  ·  229 天前
    看了下大家的回答

    主要原因是大数据的文件系统并不是很底层,而且 hdfs 主要存储的是大文件,瓶颈可能在硬盘和网络上,hadoop 的主力开发语言又是 java ,用 java 确实没啥问题
    19 条回复    2023-09-13 10:47:19 +08:00
    Oktfolio
        1
    Oktfolio  
       229 天前   ❤️ 1
    可能是因为它叫 HADOOP Distributed File System
    ConfusedBiscuit
        2
    ConfusedBiscuit  
       229 天前
    如果它是用 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  
       229 天前
    yahoo 当年那伙人就愿意拿 java 写
    我还问过给 hadoop 起名那哥们,答案就是他当时就愿意用 java ,问能不能用 cpp ,他说他不会......
    ysn2233
        4
    ysn2233  
       229 天前
    因为最开始想写这个的人想用 java 写
    lbbff
        5
    lbbff  
       229 天前 via Android
    你们这需求挺离谱的。HDFS 很多功能不需要用 C 去实现啊,而且这种一般都是取决于主力开发的技术栈
    banmuyutian
        6
    banmuyutian  
       229 天前
    不是所有高性能系统都要用 C 写呀,kafka 也是用 Java 开发的
    roundgis
        7
    roundgis  
       229 天前
    用 c 把 java 的實現抄一遍?
    abcbuzhiming
        8
    abcbuzhiming  
       229 天前
    你们要自己从头实现一个 HDFS ?还要用 C 来实现?我能否问贵方打算投入多少人进去? HDFS 当年也是投入了不少人力的,我记得围绕其还有公司的起起落落
    ZZ74
        9
    ZZ74  
       229 天前
    你用 C
    写出来了 绩效到手,再开源下 名利双收
    写不出来,也能有所收获,比如回答了自己的这个问题
    Leviathann
        10
    Leviathann  
       229 天前
    感觉不如 rewrite in rust
    kuituosi
        11
    kuituosi  
       229 天前
    阿里巴巴内部实现是 cpp 写的,但是不开源跑在阿里云上
    dif
        12
    dif  
       229 天前
    HDFS 不是基于 Google 的论文写的么?你看论文用 CPP 实现一遍就行了呀。
    matepi
        13
    matepi  
       229 天前
    我来咬勾

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

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