您的位置:首页 > 运维架构 > 网站架构

javaAPI 连接 HDFS 高可用配置

2018-02-13 15:06 411 查看
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 环境变量 生效” 
  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: