rt,想要学习的是 hadoop 源码( java ),刚毕业工作的小菜鸡,望各位大佬不吝赐教啊,先感谢了!
1
ipwx 2019-04-29 11:42:54 +08:00 4
你是做啥工作的。。。我觉得,系统地学习某一个成熟项目的所有源码,大概投入产出不太高。。。如果有比 hadoop 更小一点的,微型的教学型的相似系统,通过那个东西学习原理,大概更高效。
作为在读博士,天天和 TensorFlow 打交道。我用 TensorFlow 的经验是,公式(原理)理顺了,用多了,很多时候 TensorFlow 某个函数到底怎么实现的,我心里也有谱。有过几次我给其他实验室成员 debug 模型奇怪的错误,说到“这里 TensorFlow 应该是怎么实现这个操作”的时候(虽然我没看过),去翻它 C++ 的代码,基本八九不离十。 |
2
bravoer 2019-04-29 11:50:12 +08:00 2
hadoop 很宽泛,基本的包含三个部分,HDFS MR YARN。最有意思的是 YRAN,和 Hadoop 自己的 RPC 框架(使用了部分 GRPC 的东西)。
第一步,学会用。 第二步,了解框架包含哪些模块,每个模块干什么用的即可。 第三步,了解框架用到的基础知识。 第四步,从一个简单的应用开始 debug,大概了解整个流程。不需要深入,否则你会迷失的。 切记!!上来就钻进源码去看! |
3
PerFectTime 2019-04-29 11:55:30 +08:00 13
为什么看到标题我第一时间想到的就是 bilibili??
|
4
loryyang 2019-04-29 11:57:47 +08:00 1
你首先得熟悉 hadoop 吧,否则一段代码干嘛用的你也无法理解。其次市面上有 hadoop 源码的书,可以参考书看看
最后,一般没必要深挖源码,因为代码量太大了,许多代码对你来说也没有价值。你可以大概知道代码结构,然后实际运用 hadoop 遇到某些觉得有意思的东西,可以再进去看看怎么实现的 我之前看过 zookeeper 代码,感觉还是比较有价值的,代码量也小很多,hadoop 的代码就大概看了一下。 总体说来,看源码价值不大 |
5
orzorzorzorz 2019-04-29 12:02:30 +08:00 1
反正别从代码开始,比如你提的 hadoop,网上肯定有很多 hadoop 源码解析,多看几篇,至少了解
有哪些方法 方法干了什么 方法的关键语句是啥 然后回过头定一个你想知道的点 回忆关键语句,到源码里去找,找到以后看看它的实现细节就完了 代码没啥意思,关键还是思想 |
6
YiferHuang 2019-04-29 12:05:22 +08:00 1
@PerFectTime 全民 Go 语言学习吗
|
7
fngtz 2019-04-29 12:40:15 +08:00 via iPhone 1
目的
1. 借鉴别人的某些实现方式,来设计自己的系统 2. 更好地运用别人的系统,来实现自己(现在和未来)需要的功能 对于目的 1,你会知道,你想复制的实现方式是什么样子的。 对于目的 2,你会知道,你需要实现的功能是什么样子的。 如果单纯想提高业务水平,那么,你究竟想提高哪方面的业务水平? |
8
murmur 2019-04-29 12:53:46 +08:00
@YiferHuang 主要是给自己很大信新,新人一提大公司就以为别人代码多么优美高大上,现在完整的业务代码摆在你面前,真的是你上你也星
|
9
binux 2019-04-29 13:37:17 +08:00 via Android 1
Hadoop 这种超大型的源码,真的没什么学习的价值。
你想弄懂原理,看看 Google 原来的那篇论文,读读代码解析就够了。 你想学习 Java 编码,这种由非常多人参与的项目,代码质量参差不齐,只能说合格,但不一定都优秀。不如一些由少数 hero contributor 维护的热门项目代码质量稳定。 |
10
fbb707 OP @ipwx 我现在基本就是对 hadoop 一些组件的基本应用,之前做的主要是数据库方向( hbase、hive ),现在想学习的是 hdfs 底层的实现,嘿嘿,感谢大佬指导,我只是科班本科毕业的,还想考研呢
|
11
fbb707 OP @bravoer 好的好的,我再梳理一下, 我现在主要想研究的是 hdfs 读写文件的底层实现,之前一直都是做数据相关( hbase、hive ),现在在看一本书《 hdfs 2.x 源码剖析》已经把 rpc 和 Namenode 的理论和接口、方法简单过了一遍,就在计划着看源码,但是扫了一下,觉得无从下手,就想来请教大家了,毕竟第一次想着学习开源项目,感谢感谢
|
12
fbb707 OP @loryyang 嗦嘎,好的好的,我现在就想往 hdfs 里深钻一下,看的是《 2.x hdfs 源码剖析》的书,就计划着看源码了,大佬对这方面有研究吗?
|
13
fbb707 OP @orzorzorzorz 好嘞好嘞,我按着这个思路试试,谢谢大佬
|
16
vmskipper 2019-04-29 14:34:23 +08:00
还不如研究 k8s
|
17
no1xsyzy 2019-04-29 14:52:34 +08:00
我觉得其实很多项目大量代码都是框架性工作
也就是适应不同输入,应需求进行不同输出 Python 项目一个 argparse 就能把一大片代码给混乱了,一屏显示不全的肯定是一塌糊涂的 |
19
labnotok 2019-04-29 15:17:15 +08:00 via Android
吓死了,还以为 Bilibili
|
20
snappyone 2019-04-29 15:29:07 +08:00 1
学习架构思想,自己实现一套简化版
|
21
weifengzi2009 2019-04-29 15:34:25 +08:00
我个人看过很多超算相关的库或者应用。我觉得首先你得了解这个项目的架构,然后可以研究一下项目文件的组织和命名。有了一个很高层次的了解之后,就可以开始看代码了。
看代码一方面可以看各个部分之间是如何调用,他们之间是什么关系(参考着他的架构看)。你可以看到一些架构图上不会写的细节。了解个大概就好,没有必要一行行去读。 另一方面就是看某个部分是如何实现的,这个可以深入地研究源码的实现细节。 |
22
weifengzi2009 2019-04-29 15:37:56 +08:00
@weifengzi2009 #21 补充一下,如果网上可以搜到对架构的讲解是最好的。如果没有的话可以借助 profiler 来看他的 call stack,帮助你了解代码的结构。。
|
23
HuasLeung 2019-04-29 16:17:53 +08:00
我以为是说 Linux 系统源码
|
24
zichen 2019-04-29 16:56:18 +08:00
从 main 函数开始看。
|