从blob复制本地hdinsight

时间:2013-11-17 17:17:14

标签: azure hadoop blob hdinsight

我刚刚开始使用HDInsight。我有一些文件存储在Azure存储中,我想将其复制到HDFS中。我正在尝试使用fs -copyFromLocal。当我从C驱动器复制时,当我尝试使用wasb路径从blob存储器复制到blob容器时,它工作正常我得到了错误的FS错误。我怀疑从本地复制是错误的工具。如何从容器复制到HDFS。

2 个答案:

答案 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)

尝试以下命令。

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或多个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