我们将在数据湖项目中进行摄取阶段,并且在我的Hadoop开发人员体验中我大多使用hadoop fs -put
。那么与hadoop distcp
的区别和用法的区别是什么?
答案 0 :(得分:7)
Distcp 是一种特殊工具,用于将数据从一个群集复制到另一个群集。基本上,您通常从一个hdfs复制到hdfs,但不能复制到本地文件系统。另一个非常重要的事情是,作为mapreduce作业完成的过程有0减少任务,这使得它由于操作的分配而更快。它将文件和目录列表扩展为映射任务的输入,每个任务都将复制源列表中指定的文件的分区
hdfs put - 将数据从本地系统复制到hdfs。在场景后面使用hdfs客户端,并通过访问NameNode和Datanodes按顺序完成所有工作。不创建用于处理数据的MapReduce作业。
答案 1 :(得分:0)
hdfs或hadoop put 用于从本地到HDFS文件系统的数据提取
distcp 不能用于从本地到HDFS的数据提取,因为它仅适用于HDFS文件系统
我们广泛使用 distcp 来备份和还原HDFS文件,例如
hadoop distcp $ CURRENT_HDFS_PATH $ BACKUP_HDFS_PATH
答案 2 :(得分:0)
“ distcp不能用于从本地到HDFS的数据提取,因为它仅适用于HDFS文件系统” ->可以使用“文件”(例如“ file:///tmp/test.txt”)作为网址(https://hadoop.apache.org/docs/r2.4.1/hadoop-project-dist/hadoop-common/FileSystemShell.html)中的模式
提示:使用“ hadoop distcp -Ddfs.replication = 1”可以减少复制操作过程中distcp的处理时间,稍后再复制复制的文件。
答案 3 :(得分:0)
Distcp是命令,用于仅将数据从一个群集的hdfs位置复制到另一群集的hdfs位置。用0 reducer创建MapReduce作业以处理数据。
hadoop -distcp webhdfs://source-ip/directory/filename webhdfs://target-ip/directory/
scp是用于将数据从一个群集的本地文件系统复制到另一群集的本地文件系统的命令。
scp //source-ip/directory/filename //target-ip/directory/
hdfs put命令-将数据从本地文件系统复制到hdfs。不会创建MapReduce作业来处理数据。
hadoop fs -put -f /path/file /hdfspath/file
hdfs get命令-将数据从hdfs复制到本地文件系统
首先,转到要复制文件的目录,然后在命令下运行
hadoop fs -get /hdfsloc/file