0

我一直在尝试使用 c# 使用 WebHDFS REST API 将文件上传到 Hadoop。此代码工作正常:


    using (var client = new System.Net.WebClient())
    {
       string result = client.DownloadString("http:/ /host:50070/webhdfs/v1/user/myuser/?op=LISTSTATUS");
       client.DownloadFile("http:/ /host:50070/webhdfs/v1/user/myuser/tbible.txt?user.name=myuser&op=OPEN","d:\tbible.txt");
    }

此代码获得 403 Forbidden:

    using (var client = new System.Net.WebClient())
    {
client.UploadFile("http:/ /host:50070/webhdfs/v1/user/myuser/?user.name=myuser&op=CREATE", "PUT", "d:\bible.txt"); }

我尝试添加网络凭据,但没有成功。如何从 .NET 对我们的集群进行身份验证?集群是 RHEL5 上的 Hortonworks HDP1.3。(这篇文章中的额外空格是为了防止 http:// 成为链接)另外,我本来想使用 Microsoft 的 hadoop SDK,但它是 alpha 并且不会在我的环境中编译:(

4

1 回答 1

0

确保您正在写入 WebHDFS 运行所在的组下的目录。默认情况下,这是 hdfs。

在目录的父目录上检查此hadoop fs -ls操作以获取组权限设置(可能看起来像用户名的第二列)的快速方法。

于 2013-10-26T17:10:54.573 回答