Hadoop IO & HDFS manipulation 简介
2017-11-27 16:29
337 查看
HDFS的默认目录在 /user/username
HDFS的开放端口在core-site.xml这个配置文件中指定, 一般为9000或8020
当你执行命令时不指定目录时, 一般命令都会在这个目录下执行
所以在HDFS里没有 cd 和 pwd 这样的命令.
hadoop fs -copyFromLocal
hadoop fs -copyToLocal
hadoop fs -mkdir
hadoop fs -ls
hadoop fs -getmerge /folder ~/folder/mergered_filegetmerge这是一个很有用的命令可以把一个文件夹下多个reducer产生的结果part,合并为一个文件, 输出到本机的目录
Hadoop Filesystems 有多种虚拟的文件系统, HDFS只是其中之一
第一条命令会显示node所在服务器的本地文件信息
第二条命令则显示分布式文件系统的信息
对于HDFS的一些复杂操作可以自己来写java然后打包成jar文件, 通过命令行来执行
为了方便期间, 可以先定义好HADOOP_CLASSPATH这个环境变量:
注意最后一定要指定好jar的名字或者通配符*
然后我们只要把编写好的jar文件放到这个目录里去就能够用bin目录下的hadoop来执行了
比如:
URLCat类的代码如下
HDFS存在一个Coherency Model, 在文件从client写入datanode的时候, 有三个函数对应三种情况:
flush: 写入的数据不一定可见
hflush: 写入的数据可见, 但是可能只是写入了datanode的内存中 (close默认调用hflush)
sync: 写入的数据可见, 而且是写到了磁盘中去.
这其中有个trade-off, sync能确保数据写入磁盘, 但会阻塞程序较久, flush不会阻塞, 但数据可能还没有准备好被读取.
hadoop还有一个并行文件传输命令:
可以直接对拷目录.
HDFS的开放端口在core-site.xml这个配置文件中指定, 一般为9000或8020
当你执行命令时不指定目录时, 一般命令都会在这个目录下执行
所以在HDFS里没有 cd 和 pwd 这样的命令.
hadoop fs -copyFromLocal
hadoop fs -copyToLocal
hadoop fs -mkdir
hadoop fs -ls
hadoop fs -getmerge /folder ~/folder/mergered_filegetmerge这是一个很有用的命令可以把一个文件夹下多个reducer产生的结果part,合并为一个文件, 输出到本机的目录
Hadoop Filesystems 有多种虚拟的文件系统, HDFS只是其中之一
hadoop fs -ls file:/// hadoop fs -ls hdfs:///
第一条命令会显示node所在服务器的本地文件信息
第二条命令则显示分布式文件系统的信息
对于HDFS的一些复杂操作可以自己来写java然后打包成jar文件, 通过命令行来执行
为了方便期间, 可以先定义好HADOOP_CLASSPATH这个环境变量:
export HADOOP_CLASSPATH=/usr/local/hadoop-2.7.0/share/myjar/*
注意最后一定要指定好jar的名字或者通配符*
然后我们只要把编写好的jar文件放到这个目录里去就能够用bin目录下的hadoop来执行了
比如:
./hadoop URLCat hdfs:localhost:9000/user/root/input/sample.txt
URLCat类的代码如下
// cc URLCat Displays files from a Hadoop filesystem on standard output using a URLStreamHandler import java.io.InputStream; import java.net.URL; import org.apache.hadoop.fs.FsUrlStreamHandlerFactory; import org.apache.hadoop.io.IOUtils; // vv URLCat 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); } } } // ^^ URLCat
HDFS存在一个Coherency Model, 在文件从client写入datanode的时候, 有三个函数对应三种情况:
flush: 写入的数据不一定可见
hflush: 写入的数据可见, 但是可能只是写入了datanode的内存中 (close默认调用hflush)
sync: 写入的数据可见, 而且是写到了磁盘中去.
这其中有个trade-off, sync能确保数据写入磁盘, 但会阻塞程序较久, flush不会阻塞, 但数据可能还没有准备好被读取.
hadoop还有一个并行文件传输命令:
hadoop distcp dir1 dir2
可以直接对拷目录.
hadoop fs -checksum filename #获取文件CRC
相关文章推荐
- hadoop MR 任务 报错 "Error: java.io.IOException: Premature EOF from inputStream at org.apache.hadoop.io"
- JAVA NIO学习一:NIO简介、NIO&IO的主要区别
- Hadoop YARN 简介:相比于MRv1,YA…
- hadoop学习笔记<一>----hadoop简介
- hadoop java.io.IOException: Cannot run program "nice"
- 大数据技术hadoop入门理论系列之二&mdash;HDFS架构简介
- Hadoop权威指南学习(二)——HDFS & Hadoop IO
- 1、IO输入&输出流 简介
- Exception in thread "main" java.lang.UnsatisfiedLinkError: org.apache.hadoop.io.nativeio.NativeIO$Wi
- Erlang & Go 的IO优化策略简介
- NoSuchMethodException: org.apache.hadoop.io.ArrayWritable.<init>问题解决总结
- hadoop MR 任务 报错 "Error: java.io.IOException: Premature EOF from inputStream at org.apache.hadoop.io"
- Java IO(八):PipedInputStream & PipedOutputStream
- 【Todo】React & Nodejs学习 &事件驱动,非阻塞IO & JS知识栈:Node为主,JQuery为辅,Bootstrap & React为辅辅,其他如Angular了解用途即可
- 翻译:使用Libevent的快速可移植非阻塞网络编程:异步IO简介 (一) (转
- Hadoop本地压缩库<转>
- Hadoop Installation on a slow ubuntu laptop - Problem of the in-accessible "http://localhost:50030/jobtracker.jsp"
- Hadoop--异常java.io.EOFException
- hadoop - MapReduce 简介(二)