hdfs 为何用 Java 实现? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
0littleboy
V2EX    程序员

hdfs 为何用 Java 实现?

  •  
  •   < href="/member/0littleboy">0littleboy 2023-09-11 13:56:45 +08:00 3538 次点击
    这是一个创建于 760 天前的主题,其中的信息可能已经有所发展或是发生改变。

    现在有个需求要实现一个 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 )如果真是按照字面的理解,要重复造一个轮子了……那如果语言一致的话……你是想直接复制粘贴吗?
    F281M6Dh8DXpD1g2
        3
    F281M6Dh8DXpD1g2  
       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     Solana     906 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 21:58 PVG 05:58 LAX 14:58 JFK 17:58
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86