1.引入jar包
<properties>
<hdfs.version>2.8.2</hdfs.version>
</properties>
<dependencies>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-hdfs</artifactId>
<version>${hdfs.version}</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-common</artifactId>
<version>${hdfs.version}</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-client</artifactId>
<version>${hdfs.version}</version>
</dependency>
</dependencies>
2.将 hdfs-site.xml 配置文件放到项目resources根目录下或项目根目录下,这样代码中 Configuration 对象在new 了之后会自动读取配置,代码里只需要配置一下hdfs地址即可
private Configuration config ;
private FileSystem fs ;
// 实例化
config = new Configuration();
config.set("fs.defaultFS", "hdfs://mycluster");
fs = FileSystem.get(config);
3.这样就可以使用 FileSystem 来操作了,如果没有加 fs.defaultFS 的配置的话就会默认读写本地磁盘。。。
hdfs路径就是 core-site.xml 里面配置的
<property>
<name>fs.defaultFS</name>
<value>hdfs://mycluster</value>
</property>
因为 hdfs-site.xml 中的配置文件会引用这个 属性,所以,把配置文件加进来 client 就可以找到当前 active 的 namebnode 了,如下:
<property>
<name>dfs.nameservices</name>
<value>mycluster</value>
</property>
<!--配置集群中所有的namenode节点的namenodeid-->
<property>
<name>dfs.ha.namenodes.mycluster</name> <!-- 格式为dfs.ha.namenodes.[nameservices id] -->
<value>NN-93,NN-92</value> <!-- namenodeid可以自定义,下方的其他配置与其保持一致即可 -->
</property>
4. windows系统里需要一个插件,如果没有的话会报错(null/bin/winutils.exe),但是不会影响结果,这里有个链接,下载之后解压,然后配置环境变量 HADOOP_HOME 指向这里即可
https://pan.baidu.com/s/1pMGvBuV
环境变量配置后可能需要重启电脑才有效,具体可以百度 “windows 环境变量 生效”