HDFS的设计建立在这样一个思想上:一次写入、多次读取是最高效的
HDFS中fsck指令会显示块的信息:% hadoop fsck / -files -blocks
HDFS中的名称节点与数据节点
HDFS集群有两种节点:一个名称节点(管理者)和多个数据节点(工作者) 注:没有名称节点 文件系统将无法使用
基本文件系统操作:
1 -copyFromLocal 将本地文件copy到localhost上的HDFS中
2 -copyToLocal 将HDFS中的文件copy到本地
3 查看HDFS文件列表的命令:% hadoop fs -ls .
HDFS中的JAVA接口:
1 从Hadoop URL中读取数据
public class URLCat {
static {
URL.setURLStreamHandlerFactory(new FsUrlStreamHandlerFactory());
}
public static void main(String[] args) throws Exception {
InputStream in = null;
try {
in = new URL(args[0]).openStream();
IOUtils.copyBytes(in, System.out, 4096, false);
} finally {
IOUtils.closeStream(in);
}
}
}
上述方法中的setURLStreamHandlerFactory在JVM中只能调用一次。
2 使用FileSystem API 读取数据
public class FileSystemCat {
public static void main(String[] args) throws Exception {
String uri = args[0];
Configuration conf = new Configuration();
FileSystem fs = FileSystem.get(URI.create(uri), conf);
InputStream in = null;
try {
in = fs.open(new Path(uri));
IOUtils.copyBytes(in, System.out, 4096, false);
} finally {
IOUtils.closeStream(in);
}
}
}