我刚刚开始使用HDInsight。我有一些文件存储在Azure存储中,我想将其复制到HDFS中。我正在尝试使用fs -copyFromLocal。当我从C驱动器复制时,当我尝试使用wasb路径从blob存储器复制到blob容器时,它工作正常我得到了错误的FS错误。我怀疑从本地复制是错误的工具。如何从容器复制到HDFS。
答案 0 :(得分:1)
在HDInsight中将文件从Azure存储复制到HDFS可能不是一个好主意。原因是HDInsight群集上的HDFS中的任何内容都存储在构成该群集的瞬态实例上,并且基本上是临时存储。
您可能要做的是将包含这些文件的存储帐户添加到HDInsight群集,这将使Hadoop可以将文件作为wasb:// space的一部分进行访问。
您可以在创建群集时使用要访问的文件添加存储帐户,也可以使用http://blogs.msdn.com/b/cindygross/archive/2013/04/25/access-azure-blob-stores-from-hdinsight.aspx中描述的过程添加存储帐户。您也可以使用
azure hdinsight cluster config storage add
或PowerShell等价物:
Add-AzureHDInsightStorage
copyFromLocal命令仅在运行该命令的计算机上有文件时才有效,因此您当然可以将Azure文件下载到该本地磁盘,但是,为什么要移动数据,只需链接计算机与上面的集群?
答案 1 :(得分:0)
尝试以下命令。
Usage: hadoop fs -cp URI [URI …] <dest>
将文件从源复制到目标。此命令也允许多个源,在这种情况下,目标必须是目录。
Example:
hadoop fs -cp /user/hadoop/file1 /user/hadoop/file2
hadoop fs -cp /user/hadoop/file1 /user/hadoop/file2 /user/hadoop/dir
退出代码:成功时返回0,错误时返回-1。
Usage: hadoop fs -put <localsrc> ... <dst>
将单个src或多个srcs从本地文件系统复制到目标文件系统。还从stdin读取输入并写入目标文件系统。
hadoop fs -put localfile /user/hadoop/hadoopfile
hadoop fs -put localfile1 localfile2 /user/hadoop/hadoopdir
hadoop fs -put localfile hdfs://nn.example.com/hadoop/hadoopfile
hadoop fs -put - hdfs://nn.example.com/hadoop/hadoopfile
从stdin读取输入。 退出代码:成功时返回0,错误时返回-1。
有关详细信息和参考: http://hadoop.apache.org/docs/r0.19.1/hdfs_shell.html