我是hadoop新手。必须从eds(企业数据源)移动文件,我们每天和每月都有来自外部和内部供应商的数据。在eds中,我们有gzip文件。如何移动到hdfs?
c9x0cxw01#
我建议你用 copyFromLocal 此处命令此外,更重要的是,如果gzip文件大于默认块大小(例如128mb),我强烈建议您使用 -Ddfs.block.size 参数设置为平均gzip文件大小。在mapreduce作业期间,在hadoop外部创建的gzip文件(除非在hadoop内部创建sequencefile)不能在分割的块上工作。因此,这种情况会导致gzip文件在整个集群中被拆分,从而丢失位置,当在任何gzip文件上启动作业时,所有块都必须合并到一个文件中,从而在网络上造成瓶颈。此参数将不会分割或将gzip文件分割为比实际少得多的块。例如;如果块大小为128 mb,则2 gb gzip文件将被拆分为16个块。如果put的块大小为1GB,则只需合并2个块。参数用法: hadoop fs -Ddfs.block.size=1G -copyFromLocal localfile /user/root/destination
copyFromLocal
-Ddfs.block.size
hadoop fs -Ddfs.block.size=1G -copyFromLocal localfile /user/root/destination
kiayqfof2#
你试过使用put命令吗。此命令可用于将存储在eds中的本地数据移动到hdfs。参考文件:
hadoop fs -put localfile /user/hadoop/hadoopfile hadoop fs -put localfile1 localfile2 /user/hadoop/hadoopdir
2条答案
按热度按时间c9x0cxw01#
我建议你用
copyFromLocal
此处命令此外,更重要的是,如果gzip文件大于默认块大小(例如128mb),我强烈建议您使用
-Ddfs.block.size
参数设置为平均gzip文件大小。在mapreduce作业期间,在hadoop外部创建的gzip文件(除非在hadoop内部创建sequencefile)不能在分割的块上工作。因此,这种情况会导致gzip文件在整个集群中被拆分,从而丢失位置,当在任何gzip文件上启动作业时,所有块都必须合并到一个文件中,从而在网络上造成瓶颈。
此参数将不会分割或将gzip文件分割为比实际少得多的块。例如;如果块大小为128 mb,则2 gb gzip文件将被拆分为16个块。如果put的块大小为1GB,则只需合并2个块。
参数用法:
hadoop fs -Ddfs.block.size=1G -copyFromLocal localfile /user/root/destination
kiayqfof2#
你试过使用put命令吗。此命令可用于将存储在eds中的本地数据移动到hdfs。
参考文件: