I am just getting started with HDInsight. I have some files stored in Azure storage that I want to copy into HDFS. I am trying to use fs -copyFromLocal. When I copy from the C Drive it works OK when I try to copy from blob storage using a wasb path to the blob container I get a wrong FS error. I suspect copy from Local is the wrong tool. How do I copy from a container to HDFS.
2 回答
在 HDInsight 中将文件从 Azure 存储复制到 HDFS 可能不是一个好主意。原因是 HDInsight 群集上 HDFS 中的任何内容都存储在组成该群集的临时实例上,并且本质上是临时存储。
您可能想要做的是将包含文件的存储帐户添加到 HDInsight 群集,这将使 Hadoop 可以作为 wasb:// 空间的一部分访问这些文件。
您可以使用要在创建集群时访问的文件或使用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 文件下载到该本地磁盘,但是,当您可以将计算集群链接到它时,为什么要移动数据与上述?
试试下面的命令。
cp
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 或多个 src 从本地文件系统复制到目标文件系统。还从标准输入读取输入并写入目标文件系统。
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
从标准输入读取输入。退出代码:成功返回 0,错误返回 -1。
有关更多详细信息和参考: http ://hadoop.apache.org/docs/r0.19.1/hdfs_shell.html