Hadoop hdfs上传文件 权限问题

问题描述:

hadoop在虚拟机中的linux系统下

在本地通过eclipse编写代码把本地文件上传至hadoop平台的指定目录

代码如下:

    @Test
    public void upload() throws IOException
    {
        Configuration conf = new Configuration();
        conf.set("fs.defaultFS", "hdfs://lujie01:9000/");
        FileSystem fs = FileSystem.get(conf);

        Path path = new Path("hdfs://lujie01:9000/aa/lulu.txt");
        FSDataOutputStream outputStream = fs.create(path);
        FileInputStream inputStream = new FileInputStream("D:/lulu.txt");

        IOUtils.copy(inputStream, outputStream);

    }

 

文件上传有更加简单的方法:

直接使用FileSystem的copyFromLocalFile方法

fs.copyFromLocalFile(new Path("D:/lulu.txt"), new Path("hdfs://lujie01:9000/aa/lulu.txt"));

在没有设定用户或者更改hadoop下/aa文件夹的权限之前,本机的用户身份无法通过hadoop的认证,导致无法上传

错误如下:

解决方法一:

把/aa文件夹的权限设为任何用户都可读可写可操作

再次执行测试程序,正常运行,通过客户端可以查看aa中的文件lulu.txt。表示已上传成功,注意这里的owner是lujie,电脑本地的用户名

解决方法二:

在Run Configuration中设置Arguments,把用户名改为Linux系统的用户名hadoop

解决方法三:

直接在代码中指定用户为hadoop

FileSystem fs = FileSystem.get(new URI("hdfs://lujie01:9000/"),conf,"hadoop");

    @Test
    public void upload() throws IOException, InterruptedException, URISyntaxException
    {
        Configuration conf = new Configuration();
        conf.set("fs.defaultFS", "hdfs://lujie01:9000/");
        FileSystem fs = FileSystem.get(new URI("hdfs://lujie01:9000/"),conf,"hadoop");
        Path path = new Path("hdfs://lujie01:9000/aa/lulu1.txt");
        FSDataOutputStream outputStream = fs.create(path);
        FileInputStream inputStream = new FileInputStream("D:/lulu.txt");

        IOUtils.copy(inputStream, outputStream);

    }

    

上传成功后,在客户端查看

   

时间: 2024-11-06 03:48:07

Hadoop hdfs上传文件 权限问题的相关文章

【转载】HDFS 上传文件不均衡和Balancer太慢的问题

向HDFS上传文件,如果是从某个datanode开始上传文件,会导致上传的数据优先写满当前datanode的磁盘,这对于运行分布式程序是非常不利的. 解决的办法: 1.从其他非datanode节点上传 可以将hadoop的安装目录复制一份到一个不在集群中的节点(直接从非datanode的namenode上传也可以,但是这样不太好,会增加namenode的负担,并且时间长了会让namenode上放了各种乱七八糟的文件),在这个节点上不启动任何hadoop进程,但是可以当作客户端使用.上传文件到集群

HDFS 上传文件不均衡和Balancer太慢的问题

向HDFS上传文件,如果是从某个datanode开始上传文件,会导致上传的数据优先写满当前datanode的磁盘,这对于运行分布式程序是非常不利的. 解决的办法: 1.从其他非datanode节点上传 可以将hadoop的安装目录复制一份到一个不在集群中的节点(直接从非datanode的namenode上传也可以,但是这样不太好,会增加namenode的负担,并且时间长了会让namenode上放了各种乱七八糟的文件),在这个节点上不启动任何hadoop进程,但是可以当作客户端使用.上传文件到集群

HDFS设计思路,HDFS使用,查看集群状态,HDFS,HDFS上传文件,HDFS下载文件,yarn web管理界面信息查看,运行一个mapreduce程序,mapreduce的demo

26 集群使用初步 HDFS的设计思路 l 设计思想 分而治之:将大文件.大批量文件,分布式存放在大量服务器上,以便于采取分而治之的方式对海量数据进行运算分析: l 在大数据系统中作用: 为各类分布式运算框架(如:mapreduce,spark,tez,--)提供数据存储服务 l 重点概念:文件切块,副本存放,元数据 26.1 HDFS使用 1.查看集群状态 命令:   hdfs  dfsadmin –report 可以看出,集群共有3个datanode可用 也可打开web控制台查看HDFS集群

HDFS上传文件

1.client端向namenode请求上传文件,查看文件是否存在,是否有权限往hdfs写入 2.如果文件不存在,权限OK就根据副本数N(例如2个),根据网络拓扑选择N个离client端最近的datanode返回client. (把文件切块,一个一个block块的请求namenode,返回最优的datanode,datanode要定期向namenode发送心跳,默认3秒,看是否存活,如果死掉,选择返回的主机时就会排除掉死掉的主机) 3.block1与返回的其中一台主机建立联系(dfs01),这台

向hdfs上传文件,运行程序,查看结果

1.建立目录 hdfs dfs -mkdir -p /data/wc/input 2.上传文件 hdfs dfs -D dfs.blocksize=1048576 -put /setup/data.txt /data/wc/input 3.进入运行程序所在目录 cd /software/hadoop-2.7.7/share/hadoop/mapreduce 4.运行程序 hadoop jar hadoop-mapreduce-examples-2.7.7.jar wordcount /data/

HDFS上传文件错误--hdfs:DFSClient:DataStreamer Exception

今天上传文件的时候发现传上去的文件为空,错误提示如上述所示,原来是IP地址改掉了对呀应etc/hosts下面的IP地址也要改变,永久改ip命令-ifconfig eth0 xxx·xxx·xxx·xxx up.改完IP即可同时ssh其他节点也可以成功

测试Hadoop hdfs 上传 与 mr

1.随便在哪个目录新增一个文档.内容随便输入 mkdir words 2.在hdfs 中新建文件输入目录 ./hdfs dfs -mkdir /test 3.把新建的文档 (/home/hadoop/test/words)  上传到新建的(test)  hdfs目录 ./hdfs dfs -put /home/hadoop/test/words /test/ 4.查看文档是否成功 ./hdfs dfs -ls 5.执行 wordsCount按列  计算 bin/hadoop jar share/

vsftp上传文件权限问题

file_open_mode上传档案的权限,与chmod 所使用的数值相同.如果希望上传的文件可以执行,设此值为0777. local_umask=022         这是指定本地用户上传后的文件权限设置 umask是unix操作系统的概念,umask决定目录和文件被创建时得到的初始权限umask = 022 时,新建的目录 权限是755,文件的权限是 644umask = 077 时,新建的目录 权限是700,文件的权限时 600vsftpd的local_umask和anon_umask借

数据采集之Web端上传文件到Hadoop HDFS

前言 最近在公司接到一个任务,是关于数据采集方面的. 需求主要有3个: 通过web端上传文件到HDFS; 通过日志采集的方式导入到HDFS; 将数据库DB的表数据导入到HDFS. 正好最近都有在这方面做知识储备.正所谓养兵千日,用兵一时啊.学习到的东西只有应用到真实的环境中才有意义不是么. 环境 这里只做模拟环境,而不是真实的线上环境,所以也很简单,如果要使用的话还需要优化优化. OS Debian 8.7 Hadoop 2.6.5 SpringBoot 1.5.1.RELEASE 说明一下,这