我正在使用HDFS并尝试使用hadoop conf和fs包中的配置和文件系统类将一个文件从本地系统复制到HDFS文件系统,如下所示:
import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URI;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IOUtils;
import org.apache.hadoop.util.Progressable;
public class FileCopyWithWrite {
public static void main(String[] args) {
// TODO Auto-generated method stub
String localSrc = "/Users/bng/Documents/hContent/input/ncdc/sample.txt";
String dst = "hdfs://localhost/sample.txt";
try{
InputStream in = new BufferedInputStream(new FileInputStream(localSrc));
Configuration conf = new Configuration();;
FileSystem fs = FileSystem.get(URI.create(dst), conf);
OutputStream out = fs.create(new Path(dst), new Progressable() {
public void progress() {
// TODO Auto-generated method stub
System.out.print(".");
}
});
IOUtils.copyBytes(in, out, 4092, true);
}catch(Exception e){
e.printStackTrace();
}
}
}
但运行此程序会给我一个例外情况,如下所示:
org.apache.hadoop.security.AccessControlException: Permission denied: user=KV, access=WRITE, inode="/":root:supergroup:drwxr-xr-x
at org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.checkFsPermission(FSPermissionChecker.java:271)
at org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.check(FSPermissionChecker.java:257)
at org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.check(FSPermissionChecker.java:238)
at org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.checkPermission(FSPermissionChecker.java:179)
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.checkPermission(FSNamesystem.java:6545)
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.checkPermission(FSNamesystem.java:6527)
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.checkAncestorAccess(FSNamesystem.java:6479)
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.startFileInternal(FSNamesystem.java:2712)
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.startFileInt(FSNamesystem.java:2632)
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.startFile(FSNamesystem.java:2520)
原因是当前用户KV没有HDFS中books目录的文件写权限。
我试着从控制台复制文件,这是正常工作的。我从控制台尝试了以下命令:
sudo su
hadoop fs -copyFromLocal /Users/bng/Documents/hContent/input/ncdc/sample.txt hdfs://localhost/sample.txt
我在谷歌上找到了很多搜索结果,但没有一个对我有效。如何解决这个问题?如何使用sudo权限从STS或eclipse运行特定的类?或者对此有其他选择吗?
在HDFS中为当前用户提供权限为我解决了这个问题。我在HDFS中添加了如下权限:
hadoop fs -chown -R KV:KV hdfs://localhost
如何将文件从HDFS复制到本地文件系统。文件下没有文件的物理位置,甚至没有目录。我如何将它们移到本地进行进一步的验证。我通过winscp进行了尝试。
我已经在Ubuntu 14.04上安装了hadoop。每当我将文件从本地文件系统复制到HDFS时,我都会出现以下错误。 我使用这个命令: 我遇到的错误是: 我是Linux环境的新手。我不明白哪个文件不存在。
我需要从本地文件系统复制一个文件夹到HDFS。我找不到任何例子移动文件夹(包括它的所有子文件夹)到HDFS
问题内容: 尝试使用Java代码将目录从本地系统复制到HDFS时遇到问题。我能够移动单个文件,但无法找到一种移动带有子文件夹和文件的整个目录的方法。有人可以帮我吗?提前致谢。 问题答案: 只需使用的copyFromLocalFile方法即可。如果源路径是本地目录,它将被复制到HDFS目标:
是否有一种已知的方法使用Hadoop api/spark scala在Hdfs上将文件从一个目录复制到另一个目录? 我尝试使用copyFromLocalFile,但没有帮助
问题内容: 我的权限被拒绝,但不知道为什么。从我的詹金斯大师那里,我能够使用ssh-rsa-key运行以下命令 注意: 当我发现从属主机不存在并使其由jenkins用户拥有时,我确实在从属主机上手动创建了/ var / jenkins /。我的主jenkins配置为使用.ssh密钥使用jenkins @ mySlaveHost。 有什么想法为什么我会拒绝权限吗?它想做什么? 这是单击[Lauch