赞
踩
java代码,打包到虚拟机,希望运行后在HDFS创建一个文件夹 /java
。代码如下:
public class HdfsStart { private FileSystem fs; // 初始化 public void init() throws URISyntaxException, IOException, InterruptedException { Configuration conf = new Configuration(); fs = FileSystem.get(new URI("hdfs://localhost:9000"),conf); } // 创建文件夹 public void testMkdir() throws IOException { boolean flag = fs.mkdirs(new Path("/java")); System.out.println(flag); } /** * 创建成功则会输出true * @param args * @throws InterruptedException * @throws IOException * @throws URISyntaxException */ public static void main(String[] args) throws InterruptedException, IOException, URISyntaxException { HdfsStart hdfsStart = new HdfsStart(); hdfsStart.init(); hdfsStart.testMkdir(); } }
当然,虚拟机系统上也启动了hdfs服务(sbin/start-dfs.sh
)
打包上传后运行方法为:
$ java -jar hadoop-demo.jar
报错如下:
Exception in thread "main" org.apache.hadoop.fs.UnsupportedFileSystemException: No FileSystem for scheme "hdfs"
at org.apache.hadoop.fs.FileSystem.getFileSystemClass(FileSystem.java:3281)
at org.apache.hadoop.fs.FileSystem.createFileSystem(FileSystem.java:3301)
at org.apache.hadoop.fs.FileSystem.access$200(FileSystem.java:124)
at org.apache.hadoop.fs.FileSystem$Cache.getInternal(FileSystem.java:3352)
at org.apache.hadoop.fs.FileSystem$Cache.get(FileSystem.java:3320)
at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:479)
at cn.smileyan.hadoop.hdfs.HdfsStart.init(HdfsStart.java:20)
at cn.smileyan.hadoop.hdfs.HdfsStart.main(HdfsStart.java:38)
运行时改用命令如下:
$ bin/hadoop jar hadoop-demo.jar
《Hadoop大数据开发案例教程与项目实战》(时允田、林雪纲主编)书中,因为开发环境(eclipse)和部署环境相同(同一个CentOS系统),所以教程可以直接运行,但是我在Windows系统上使用IDEA开发,所以需要打包,再上传运行。
因为运行时使用bin/hadoop jar hadoop-demo.jar
运行,所以pom文件中跟hadoop相关的依赖在打包时都可以去掉,也就是pom文件中依赖的scope
属性设置为 provided
,然后再打包就可以发现jar文件很小,上传简单。
添加相应的依赖包。
<!-- https://mvnrepository.com/artifact/org.apache.hadoop/hadoop-common --> <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-common</artifactId> <version>3.2.1</version> </dependency> <!-- https://mvnrepository.com/artifact/org.apache.hadoop/hadoop-hdfs --> <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-hdfs</artifactId> <version>3.2.1</version> </dependency> <!-- https://mvnrepository.com/artifact/org.apache.hadoop/hadoop-client --> <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-client</artifactId> <version>3.2.1</version> </dependency>
Smileyan
2019年10月21日 20:08
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。