Hadoop学习<二>--HDFS文件系统操作方式,
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); } }
评论暂时关闭