Hadoop学习<二>--HDFS文件系统操作方式,


linux用户身份与群组记录的文件
cat /etc/group                查看用户组
cat /etc/shadow              查看个人密码
cat /etc/passwd              查看用户相关信息
这三个文件可以说是:账号,密码,群组    信息的的集中地!

w或who                            查看用户在线信息和登录信息

1.对hdfs的操作方式:hadoop fs xxx
  hadoop fs -ls  /    查看hdfs的根目录下的内容的
  hadoop fs -lsr /    递归查看hdfs的根目录下的内容的
  hadoop fs -mkdir /d1    在hdfs上创建文件夹d1
  hadoop fs -put <linux source> <hdfs destination> 把数据从linux上传到hdfs的特定路径中
  hadoop fs -get <hdfs source> <linux destination> 把数据从hdfs下载到linux的特定路径下
  hadoop fs -text <hdfs文件>    查看hdfs中的文件
  hadoop fs -rm        删除hdfs中文件
  hadoop fs -rmr    删除hdfs中的文件夹
 
  hadoop fs -ls hdfs://zebra:9000/
 
 
2.HDFS的datanode在存储数据时,如果原始文件大小>64MB,按照64MB大小切分;如果<64MB,只有一个block,占用磁盘空间是源文件实际大小。
 
3.RPC(remote procedure call)
  不同java进程间的对象方法的调用。
  一方称作服务端(server),一方称作客户端(client)。
  server端提供对象,供客户端调用的,被调用的对象的方法的执行发生在server端。
   
  RPC是hadoop框架运行的基础。
4.通过rpc小例子获得的认识?
4.1 服务端提供的对象必须是一个接口,接口extends VersioinedProtocal

4.2 客户端能够的对象中的方法必须位于对象的接口中。

这里附上自己的操作代码:

package com.zeb;

import java.io.ByteArrayInputStream;
import java.net.URI;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FSDataInputStream;
import org.apache.hadoop.fs.FSDataOutputStream;
import org.apache.hadoop.fs.FileStatus;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IOUtils;

public class fileSystemApi {
    private static final String uri = "hdfs://zebra:9000/";

    //org.apache.hadoop.fs.FileSystem是一个重要的api,他是用户操作hdfs的直接入口,类似与jdbc操作数据库的Connection类。
    public static void main(String[] args) throws Exception {
        Configuration conf = new Configuration();
        //fileSystem的静态方法get传递两个值给形式参数,第一个是访问HDFS的地址,该地址的协议是hdfs,
        //ip是zebra:9000。,这个地址的完整信息在配置文件core-site.xml中指定,第二个参数是一个配置对象
        FileSystem fs = FileSystem.get(URI.create(uri), conf);
        
        //eclipse 创建方法快捷键shift + alt + M
        //eclipse 创建局部变量快捷键 shift + alt + L
//        //创建一个文件夹
//        final String pathString ="/zhang1";
//        Path path = new Path(pathString);
//        boolean exits = fs.exists(path);
//        if(!exits){//判断文件夹是否存在
//            boolean result = fs.mkdirs(path);
//            System.out.println(result);//返回布尔值,true or false.
//        }
        
//        //创建一个文件,并写入一些信息
//        final String pathString = "/zhang/zebraText";
//        Path path = new Path(pathString);
//        //FSDataOutputStream调用 create 方法创建一个通向 HDFS 的输出流;
//        final FSDataOutputStream fdos = fs.create(path);
//        //通过调用 hadoop 的一个工具类 IOUtils 的静态方法 copyBytes 把一个字符串发
//        //送给输出流中。该静态方法有四个参数,第一个参数输入流,第二个参数是输出流,第三个
//        //参数是配置对象,第四个参数是布尔值,如果是 true 表示数据传输完毕后关闭流。
//        IOUtils.copyBytes(new ByteArrayInputStream("This is the first try!".getBytes()), fdos, conf, true);
        
//        //读取刚才写入的文件信息
//        final String pathString = "/zhang/zebraText";
//        //FSDataInputStream调用方法 open 打开一个指定的文件,返回值是一个通向该文件的输入流;
//        final FSDataInputStream fdis = fs.open(new Path(pathString));
//        //通过调用 IOUtils.copyBytes 方法,输出的目的地是控制台。
//        IOUtils.copyBytes(fdis, System.out, conf, true);
        
        //查看目录文件列表和文件详细信息
//        final String pathString = "/";
//        Path path = new Path(pathString);
//        //调用listStatus方法会得到一个指定路径下的所有文件和文件夹,每一个用FileStatus表示。我
//        //们使用for循环显示每一个FileStatus对象。FileStatus对象表示文件的详细信息,里面含有类型、
//        //副本数、权限、长度、路径等很多信息
//        final FileStatus[] listStatus = fs.listStatus(path);
//        for(FileStatus fstatus : listStatus){
//            final String type = fstatus.isDir()?"目录":"文件";
//            final short replication = fstatus.getReplication();
//            final String permission = fstatus.getPermission().toString();
//            final Long len = fstatus.getLen();
//            final Path p = fstatus.getPath();
//            System.out.println(type+"\t"+permission+"\t"+replication+"\t"+len+"\t"+p);
//        }
        
//        //删除文件
//        final String pathString = "/zhang/zebraText";
//        Path path =new Path(pathString);
//        //递归删除目录“/zhang”及下面的所有内容
//        fs.delete(new Path("/zhang"), true);
//        //删除文件/zhang/zebraText
////        fs.deleteOnExit(path);
    }
}


相关内容

    暂无相关文章