Fayson的github: https://github.com/fayson/cdhproject
推荐关注微信公众号:“Hadoop实操”,ID:gh_c4c535955d0f
1 文档编写目的
在生产环境的CDH集群中,为了分开集群对网络的使用会为集群配备两套网络(管理网段和数据网段),数据网段主要用于集群内部数据交换,一般使用万兆网络以确保集群内数据传输性能,管理网段主要用于集群管理,一般使用千兆网络。一般情况下在集群外进行集群管理和数据传输的都是通过千兆网络进行交互,在集群外是无法直接访问集群内的万兆网络。
Hadoop集群使用192.168.1.x万兆网段:
在这样复杂的网络环境下,如何在集群外通过千兆网络访问集群并向Hadoop集群读写数据。Fayson在前面的文章《如何在集群外节点跨网段向HDFS写数据》介绍了基于RSET API的方式跨网段访问Hadoop集群。接下来本篇文章会详细的介绍三种方式访问Hadoop集群。
内容概述
1.使用WebHDFS访问HDFS
2.使用NFS Gateway方式
3.修改Gateway配置参数
测试环境
1.CM和CDH版本未5.16.1
2.集群未启用安全
3.OS的版本为RedHat7.2
4.使用root用户进行操作
2 修改HDFS配置
HDFS服务的各个角色端口号默认绑定的是/etc/hosts配置文件中对应的IP地址,为了能够在集群外通过千兆网络访问Hadoop集群,首先需要通过CM界面来修改HDFS各个服务端口号绑定的IP地址为0.0.0.0(即服务启动时端口会绑定到当前服务器的所有IP上),如下为修改方式:
1.登录CM进入HDFS服务的配置页面,搜索“绑定到通配符”并勾选如下选项
2.保存配置后重启HDFS服务,然后在命令行查看端口绑定情况
3 WebHDFS RSET API方式
WebHDFS是内置在HDFS中的,不需要进行额外的安装以及启动,提供了RESTful接口来操作HDFS,下面使用Java代码通过WebHDFS API来操作HDFS,具体实现方式如下:
1.在执行代码的本地机器上配置hosts映射外网的IP
2.在工程的pom.xml配置文件中添加如下依赖
<dependency>
<groupId>org.apache.hadoop&l