笔者使用的hadoop版本3.0.3,以下是maven依赖,曾把hadoop-client写成hadoop-client-api,一直报NoClassDefFoundError InputBootstrapper类,所以贴一下maven依赖
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-common</artifactId>
<version>3.0.3</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-hdfs</artifactId>
<version>3.0.3</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-client</artifactId>
<version>3.0.3</version>
</dependency>
代码也非常简单
String HDFS_PATH = "hdfs://192.168.1.132:9000"; //要连接的hadoop
Configuration configuration = new Configuration();
configuration.set("fs.defaultFS", HDFS_PATH);
//连接文件系统,FileSystem用来与hadoop文件系统交互
FileSystem fileSystem = FileSystem.get(configuration);
configuration.set("fs.hdfs.impl", DistributedFileSystem.class.getName()); //设置处理分布式文件系统
URL.setURLStreamHandlerFactory(new FsUrlStreamHandlerFactory(configuration));
//FsUrlStreamHandlerFactory() 不加参数连接会无法识别的hdfs协议,原因是hadoop在获取处理hdfs协议的控制器时获取了configuration的fs.hdfs.impl值
//获取Hadoop文件,并打印输出
InputStream inputStream = new URL(HDFS_PATH + "/hello.txt").openStream();
int size = inputStream.available();
for (int i = 0; i < size; i++){
System.out.print((char)inputStream.read());
}
inputStream.close();
常用写法:
1252

被折叠的 条评论
为什么被折叠?



