Hadoop源码情景小析(1)fs -copyFromLocal
第一次读比较大型的源码。有看到列一大幅类图的,一看头就大。有看到简要分析主要数据结构的,因为源码这么多,总不能事无具细地全讲一遍吧。但少了程序运行的脉络,总让人疑惑系统到底怎么运转起来的。我想,对于初学者,还是从程序运行的线索入手,按功能弄清每个模块的代码,然后连点成线,成面,最终从宏观再整理清整个系统架构,这样还能顺便学习一下大型系统的实现。当然,对于架构大牛,或者java大牛,可能就不需要这么细的去看,毕竟其中起粘合剂的部分对于大多数系统来说都是相似的。看一下宏观的架构分析就行了。
适合的读者?
当然是初学者。我自己本身也只是java菜鸟,对面向对象还是有一点点体会的。毕竟hadoop是用java写的,至少也要有一点java基础什么的才能看得懂吧,虽然要求也不高。
分析过程也只能抓重点,不可能每一行代码都去深究。版本是hadoop 0.20.203 。好吧,我们从命令
- hadoop fs -copyFromLocal xx xx
hdfs 的shell命令是由类FsShell去执行的。
- public static void main(String argv[]) throws Exception {
- FsShell shell = new FsShell();
- int res;
- try {
- res = ToolRunner.run(shell, argv);
- } finally {
- shell.close();
- }
- System.exit(res);
- }
- void copyFromLocal(Path[] srcs, String dstf) throws IOException {
- Path dstPath = new Path(dstf);
- FileSystem dstFs = dstPath.getFileSystem(getConf());
- if (srcs.length == 1 && srcs[0].toString().equals("-"))
- copyFromStdin(dstPath, dstFs);
- else
- dstFs.copyFromLocalFile(false, false, srcs, dstPath);
- }
- public void copyFromLocalFile(boolean delSrc, boolean overwrite,
- Path[] srcs, Path dst)
- throws IOException {
- Configuration conf = getConf();
- FileUtil.copy(getLocal(conf), srcs, this, dst, delSrc, overwrite, conf);
- }
相关推荐
IT之家 2020-03-11
graseed 2020-10-28
zbkyumlei 2020-10-12
SXIAOYI 2020-09-16
jinhao 2020-09-07
impress 2020-08-26
liuqipao 2020-07-07
淡风wisdon大大 2020-06-06
yoohsummer 2020-06-01
chenjia00 2020-05-29
baike 2020-05-19
扭来不叫牛奶 2020-05-08
hxmilyy 2020-05-11
黎豆子 2020-05-07
xiongweiwei00 2020-04-29
Cypress 2020-04-25
冰蝶 2020-04-20