zoukankan      html  css  js  c++  java
  • Big Data(六)用户权限实操&HDFS-API实操

    创建用户实操

    1.创建用户god

    useradd god
    passwd god

    2.设置ssh免密

    ssh-copy-id -i id_dsa node02

    3.修改hdfs-site.xml中的ssh路径,并且分发

    4.god

    start-dfs.sh

    用户权限实操

    node01:
            su god
            hdfs dfs -mkdir   /temp
            hdfs dfs -chown god:ooxx  /temp
            hdfs dfs -chmod 770 /temp
        node04:
            root:
                useradd good
                groupadd ooxx
                usermod -a -G ooxx good
                id good
            su good
                hdfs dfs -mkdir /temp/abc  <失败
                hdfs groups 
                    good:        <因为hdfs已经启动了,不知道你操作系统又偷偷摸摸创建了用户和组
        *node01:
            root:
                useradd good
                groupadd ooxx
                usermod -a -G ooxx good
            su god 
                hdfs dfsadmin -refreshUserToGroupsMappings
        node04:
            good:
                hdfs groups 
                    good : good ooxx

     HDFS-API实操

    1.添加环境变量

    HADOOP_USER_NAME god

    2.启动IDEA,创建一个Maven Project

    Maven网址

    https://mvnrepository.com/

    hdfs的pom文件:

    hadoop是由common,hdfs,yarn,mapreduce组成,maven中导包2.6.5版本

     实际测试:

    package com.littlepage.hadoop.hdfs;
    
    import org.apache.hadoop.conf.Configuration;
    import org.apache.hadoop.fs.*;
    import org.apache.hadoop.io.IOUtils;
    import org.junit.After;
    import org.junit.Before;
    import org.junit.Test;
    import java.io.*;
    import java.net.URI;
    
    public class TestHDFS {
    
        public Configuration conf=null;
        public FileSystem fs=null;
    
        @Before
        public void conn(){
            try {
                conf=new Configuration(true);//true,为加载配置文件
                //fs=FileSystem.get(conf);
                //fs返回是参考了fs.defaltFS标签中的值,去环境变量取一个HADOOP_USER_NAME取一个值
                fs=FileSystem.get(URI.create("hdfs://mycluster/"),conf,"root");
            } catch (IOException e) {
                e.printStackTrace();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    
        @Test
        public  void mkdir() throws IOException {
            Path dir=new Path("/cccc");
            fs.mkdirs(dir);
            System.out.println("ok");
        }
    
        @Test
        public void update() throws IOException {
           InputStream is= new BufferedInputStream(new FileInputStream(new File("data/hello.txt")));
           Path path=new Path("/xxx/out.txt");
            FSDataOutputStream outFile = fs.create(path);
            IOUtils.copyBytes(is,outFile,conf,true);
        }
    
        @Test
        public void block() throws IOException {
            //获得区块
            Path file=new Path("/data.txt");
            FileStatus fsta=fs.getFileStatus(file);
    ;        BlockLocation[] bl=fs.getFileBlockLocations(fsta,0,fsta.getLen());
            for (BlockLocation b:bl) {
                System.out.println(b);
            }
            //这里可以进行计算,计算向数据移动
            FSDataInputStream in=fs.open(file);
            in.seek(bl.length);
            for(int i=0;i<100;i++){
                System.out.print((char)in.readByte());
            }
        }
    
        @After
        public void close(){
            try {
                fs.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
  • 相关阅读:
    Windows10系统PHP开发环境配置
    hexo博客MathJax公式渲染问题
    js获取单选框和复选框的值并判断值存在后允许转跳
    Google HTML/CSS 编码规范
    js阻止表单提交的两种方法
    php下安装动态扩展库的相关事项
    PHP程序员的职业规划,走进PHP后端工程师的世界
    allen今天来开通我的程序员的博客
    ajax
    jQuery语法
  • 原文地址:https://www.cnblogs.com/littlepage/p/11076999.html
Copyright © 2011-2022 走看看