知识点
相关文章
更多最近更新
更多Hadoop源码情景小析(1)fs -copyFromLocal
2019-03-28 13:53|来源: 网络
第一次读比较大型的源码。有看到列一大幅类图的,一看头就大。有看到简要分析主要数据结构的,因为源码这么多,总不能事无具细地全讲一遍吧。但少了程序运行的脉络,总让人疑惑系统到底怎么运转起来的。我想,对于初学者,还是从程序运行的线索入手,按功能弄清每个模块的代码,然后连点成线,成面,最终从宏观再整理清整个系统架构,这样还能顺便学习一下大型系统的实现。当然,对于架构大牛,或者java大牛,可能就不需要这么细的去看,毕竟其中起粘合剂的部分对于大多数系统来说都是相似的。看一下宏观的架构分析就行了。
更多Hadoop相关信息见Hadoop 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=13
适合的读者?
当然是初学者。我自己本身也只是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);
- }
相关问答
更多-
Linux源码情景分析[2024-01-22]
关于内核的书不在多,而是要精,强烈推荐 《Linux内核设计与实现》,英文名Linux Kernel Development,机械工业出版社,¥35, 美国Robert Love著,陈莉君译。 此书是当今首屈一指的入门最佳图书。作者是为2.6内核加入了抢占的人,对调度部分非常精通,而调度是整个系统的核心,因此本书是很权威的。对没怎么深入内核的人来说,这是强烈推荐的一本书。 -
hadoop中-put与-copyFromLocal有什么区别呢?[2022-04-03]
它们的区别在于copyToLocal的源路径只能是一个本地的文件。而put的源路径 可能是多个文件,也可能是标准输入。 当hadoop fs -put - hdfs://host:port/hadoop/hadoopfile时表示从标准输入接收数据,这个时候目标路径必须是一个文件。 -
hadoop中-put与-copyFromLocal有什么区别呢?[2022-12-20]
它们的区别在于copyToLocal的源路径只能是一个本地的文件。而put的源路径 可能是多个文件,也可能是标准输入。 当hadoop fs -put - hdfs://host:port/hadoop/hadoopfile时表示从标准输入接收数据,这个时候目标路径必须是一个文件。 -
hadoop fs -put和hadoop fs -copyFromLocal之间的区别(Difference between hadoop fs -put and hadoop fs -copyFromLocal)[2023-09-15]
copyFromLocal类似于put命令,除了源被限制为本地文件引用。 所以,基本上你可以用put来做,所有这些都用copyFromLocal ,但是反之亦然。 同样的, copyToLocal类似于get命令,除了目标被限制在本地文件引用之外。 因此,您可以使用get而不是copyToLocal ,但不能相反。 参考 : Hadoop的文档 。 更新 :截至2015年10月的最新消息,请看下面的答案。 copyFromLocal is similar to put command, except tha ... -
Hadoop copyFromLocal:'。':没有这样的文件或目录(Hadoop copyFromLocal: '.': No such file or directory)[2022-03-18]
这是因为hdfs:///user/cloudera不存在。 运行hdfs dfs -ls可能会给你类似的错误。 没有指定的目标文件夹,它会查找. ,运行该命令的UNIX帐户的当前HDFS目录。 在当前的UNIX帐户可以使用HDFS之前,您必须先使用hdfs dfs -mkdir "/user/$(whoami)" ,或者您可以指定要复制的其他HDFS位置 It's happening because hdfs:///user/cloudera doesn't exist. Running hdfs dfs ... -
使用MAPRFS运行`hadoop fs`时如何启用其他日志记录?(How to enable additional logging when running `hadoop fs` with MAPRFS?)[2022-11-09]
您也可以直接使用该选项 hadoop mfs -Dfs.mapr.trace=DEBUG -ls maprfs://maprfs.example.com/tmp/1GB.img You can also use the option directly hadoop mfs -Dfs.mapr.trace=DEBUG -ls maprfs://maprfs.example.com/tmp/1GB.img -
首先尝试这个命令。 hadoop fs -ls / 如果它列出了本地文件系统文件。(不是hdfs),那么试试 hadoop fs -ls hdfs://IP-ADDRESS-of your-machine/ 现在将您的文件复制到hdfs hadoop fs -copyFromLocal /Documents/file hdfs://Ip-addressofyourmachine/above result path first try this command. hadoop fs -ls / if ...
-
我们聊聊谈论它,我有更多的时间向你解释这个。 如果您在代码中使用此代码段: FileSystem fs = FileSystem.get(conf); // stuff to create 然后重要的是conf对象内部的内容。 如果你没有放任何东西,返回的FileSystem总是本地的。 如果你把它放在你的conf中: conf.set("fs.default.name", "hdfs://localhost:54310"); 然后你应该通过“服务器”上的namenode连接到你的HDFS,你 ...
-
根据您的输入,您的Hadoop安装似乎工作正常。 有什么问题, hadoop fs -copyFromLocal希望将目录HDFS目录作为目标目录,而不是Hadoop存储其块的本地目录。 所以在你的情况下,命令应该看起来像(例如): sara@ubuntu:/usr/lib/hadoop/hadoop-2.3.0/bin$ hdfs dfs -copyFromLocal /home/sara/Downloads/CA-GrQc.txt /sampleDir/ 其中sampleDir是您使用hadoop ...
-
检查namenode进程是否在您的localhost和此端口54310上运行 Check whether namenode process is running on your localhost and on this port 54310