在研究Hadoop时,参考Hadoop权威指南。有一段通过URL读文件的例程:
import java.io.InputStream; import java.net.URL; import org.apache.hadoop.fs.FsUrlStreamHandlerFactory; import org.apache.hadoop.io.IOUtils; 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 ); } } }
对于刚刚接触Hadoop来说,有几个注意的地方:
1、开发、编译时,要把hadoop-common-0.21.0.jar加到CLASSPATH中
2、运行时不用指定jar包,但要把XXX.class文件放到$CLASSPATH目录中
3、书中给的URL是:hdfs://localhost/user/tom/quangle.txt
没有搞明白为什么路径中还要指定主机名,实验也没成功。
我是通过http://192.168.11.230:50070/(IP是Namenode节点主机IP)查看filesystem,如果需要的路径是/input/hadoop-hadoop-secondarynamenode-wwj1.log,要在前面加上协议hdfs://组成:
hdfs:///input/hadoop-hadoop-secondarynamenode-wwj1.log