hadoop 学习笔记 三 ---HDFS hadoop分布式文件系统

1.HDFS的设计:以流式数据访问模式来存储超大文件。构建思路:一次写入、多次读取的访问模式


2.HDFS数据块:默认大小64M;数据块大是为了最小化寻址开销。


3.显示块信息命令:% hadoop fsck / -files -blocks


4.HDFS 集群的两类节点:namenode(管理者),datanode(工作者)。

namenode管理文件系统的命名空间,维护HDFS所有的文件和目录。

datanode是文件系统的工作节点。受客户端或namenode调度去存储并检索数据块。

5.伪分布配置(core-site.xml)的某些属性:fs.default.name:用于设置hadoop的默认文件系统,如:hdfs://localhost/;dfs.replication:文件系统复本数,默认为3


6.% hadoop fs -copyFromLocal input/docs/test.txt hdfs://lcoalhost/user/test/test.txt     

将本地文件复制到HDFS 


7.hadoop文件系统



8. FileSystem  文件系统API

8.1 FileSystem  以标准输出格式显示hadoop文件系统中的文件


package com.hadoop.filesystem;

import java.net.URI;

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

public class FileSystemCat {
	public static void main(String[] args) throws Exception {
		String usi = args[0];
		Configuration conf = new Configuration();//默认得到hadoop中conf/core-site.xml配置
		FileSystem fs = FileSystem.get(URI.create(usi), conf);//得到FileSystem文件系统对象 
		FSDataInputStream in = fs.open(new Path(usi));//获取文件输入流,默认缓存大小为4kb
		IOUtils.copyBytes(in, System.out, 4096, false);//输出数据
		IOUtils.closeStream(in);
	}
}
方法步骤:

1,生成jar包,并放到hadoop集群上

2.执行hadoop FileSystemCat hdfs://localhost/user/test/test.xml


8.2  FSDataInputStream in = fs.open(new Path(usi));
in.seek(0);//seek()可以移到文件任意一个绝对位置,此方法开销大

8.3 FSDataInputStream in = fs.open(new Path(usi));
in.read(position, buffer, offset, length)//从文件指定的position位置读取length字节数据到buffer缓存指定的偏移量offset处


8.4 FileSystem fs = FileSystem.get(URI.create(uri), conf);
FSDataOutputStream out = fs.create(new Path(uri),new Progressable() {//得到输出流,实现hadoop写数据操作
@Override
public void progress() {
//----
}
});

8.5  FileSystem fs = FileSystem.get(URI.create(uri), conf);
fs.mkdirs(new Path(uri));//创建目录

8.6 FileStatus文件元数据:

FileStatus fileStatus = fs.getFileStatus(new Path(uri));
fileStatus.getPath().toUri();
fileStatus.isDir();
fileStatus.getOwner();


8.7 列出文件:fs.listStatus(new Path(uri))

8.8 文件模式批量操作:fs.globStatus(new Path(uri))


8.9 删除数据:fs.delete(path,recusive);//recusive=true path下有目录或文件才能删除


9.distcp 进行并行复制:

9.1 hadoop distcp HDFS://namenode1/foo hdfs://namenode2/bar

9.2 hadoop distcp -overwrite HDFS://namenode1/foo hdfs://namenode2/bar

-overwrite:覆盖现有文件

-update:更新修改过的文件


10 hadoop存档工具:archive

hadoop archive -archiveName files.har  /my/files  /my 

archiveName :存档文件名称files.har,源文件在HDFS下的 /my/files中,输出目录是 /my 









评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值