HDFS JavaAPI简单实例
2020-02-17 12:11
344 查看
HDFS学习
HDFS基本实现
获取Configration并设置
Configuration configuration = new Configuration(); configuration.set("fs.defaultFS","hdfs://localhost:9000"); //设置默认FS位置,设置为hdfs的地址 configuration.set("fs.hdfs.impl","org.apache.hadoop.hdfs.DistributedFileSystem"); //HDFS文件操作类设置,设置为DFS更多端口配置信息
https://www.geek-share.com/detail/2676131787.html
获取FileSystem
FileSystem fs = FileSystem.get(configuration);
获取读写流
FSDataInputStream is = fs.open(new Path(fileName)); FSDataOutputStream os = fs.create(new Path(fileName));
注意点:
1.FSDataInputStream 和 FSDataOutputStream会自动判断FS类型并自适应,所以无论是DFS还是普通的FS都可以使用这两个输入输出流。 2.输出流的create会在不存在文件的时候自动创建,若已有则进行覆盖,具体可见源码。
完整JAVA实现
最后一定要关闭读写流和FS!!!
import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FSDataInputStream; import org.apache.hadoop.fs.FSDataOutputStream; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; import java.io.BufferedReader; import java.io.InputStreamReader; public class sad { private static void read(FileSystem fs,String fileName){ 1cca8 try { FSDataInputStream is = fs.open(new Path(fileName)); BufferedReader br =new BufferedReader(new InputStreamReader(is)); String str = br.readLine(); System.out.println(str); is.close(); fs.close(); }catch (Exception e){ e.printStackTrace(); } } private static void write(FileSystem fs,String fileName){ try { byte[] data = "Hello spark!".getBytes(); FSDataOutputStream os = fs.create(new Path(fileName)); os.write(data,0,data.length); System.out.println("Create done!"); os.close(); fs.close(); }catch (Exception e){ e.printStackTrace(); } } private static void isExists(FileSystem fs,String fileName){ try { if(fs.exists(new Path(fileName))){ System.out.println("is exists"); }else{ System.out.println("not exists"); } }catch (Exception e){ e.printStackTrace(); } } public static void main(String[] args){ try{ String fileName = "test"; Configuration configuration = new Configuration(); configuration.set("fs.defaultFS","hdfs://localhost:9000"); configuration.set("fs.hdfs.impl","org.apache.hadoop.hdfs.DistributedFileSystem"); FileSystem fs = FileSystem.get(configuration);isExists(fs,fileName); write(fs,fileName); read(fs,fileName); }catch (Exception e){ e.printStackTrace(); } } }
最后一定要关闭读写流和FS!!!
关于报错
错误 | 解决方法 |
---|---|
java.lang.NoClassDefFoundError | 检查是否导入包hadoop-common-2.7.1.jar和haoop-nfs-2.7.1.jar;/usr/local/hadoop/share/hadoop/common/lib”目录下的所有JAR包;“/usr/local/hadoop/share/hadoop/hdfs”目录下的haoop-hdfs-2.7.1.jar和haoop-hdfs-nfs-2.7.1.jar;“/usr/local/hadoop/share/hadoop/hdfs/lib”目录下的所有JAR包。 |
学习计划
-2019年4月中旬基本掌握Hadoop的基础操作
-2019年5月中旬基本掌握spark的基础操作
-2019年6月中旬能够完成一系列基础实战
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- Hadoop-2.6.0-cdh5.7.0安装详解
- Hadoop-2.6.0-cdh5.7.0安装详解
- hdfs命令
- Hadoop中ip:50070不能访问的问题
- hadoop-eclipse环境搭建(二)
- hadoop-hdfs(三)
- hadoop、storm和spark的区别、比较
- 单机Docker搭建Hadoop/Spark环境
- HADOOP2.7.3编译
- Hive异常处理之return code 3 from org.apache.hadoop.hive.ql.exec.spark.SparkTask
- 我的青春,我的Hadoop
- Hadoop分布式文件系统HDFS
- 3.Hadoop_HDFS1.x_全分布式搭建
- 4.Hadoop_HDFS2.x_高可用搭建
- 5.Hadoop_HDFS_Java API
- hadoop日常维护之问题解决01
- Hadoop Spark:全面比拼(架构、性能、成本、安全)
- 大数据计算:Storm和Spark Streaming、Hadoop有什么区别?
- Hadoop、Spark和Storm有什么关系,未来大数据架构会走向何方
- Hadoop+Spark+MongoDB+MySQL+C#大数据开发项目最佳实践