Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >0692-5.16.1-外部客户端跨网段访问Hadoop集群方式(续)

0692-5.16.1-外部客户端跨网段访问Hadoop集群方式(续)

作者头像
Fayson
发布于 2019-08-28 08:58:36
发布于 2019-08-28 08:58:36
2.6K00
代码可运行
举报
文章被收录于专栏:Hadoop实操Hadoop实操
运行总次数:0
代码可运行

文档编写目的

在生产环境的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用户进行操作

修改HDFS配置

HDFS服务的各个角色端口号默认绑定的是/etc/hosts配置文件中对应的IP地址,为了能够在集群外通过千兆网络访问Hadoop集群,首先需要通过CM界面来修改HDFS各个服务端口号绑定的IP地址为0.0.0.0(即服务启动时端口会绑定到当前服务器的所有IP上),如下为修改方式:

1.登录CM进入HDFS服务的配置页面,搜索“绑定到通配符”并勾选如下选项

2.保存配置后重启HDFS服务,然后在命令行查看端口绑定情况

WebHDFS RSET API方式

WebHDFS是内置在HDFS中的,不需要进行额外的安装以及启动,提供了RESTful接口来操作HDFS,下面使用Java代码通过WebHDFS API来操作HDFS,具体实现方式如下:

1.在执行代码的本地机器上配置hosts映射外网的IP

2.在工程的pom.xml配置文件中添加如下依赖

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<dependency>
    <groupId>org.apache.hadoop</groupId>
    <artifactId>hadoop-client</artifactId>
    <version>2.6.0</version>
</dependency>
<dependency>
    <groupId>org.apache.hadoop</groupId>
    <artifactId>hadoop-common</artifactId>
    <version>2.6.0</version>
</dependency>

3.编写Java示例代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package com.ff;

import java.net.URI;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FSDataInputStream;
import org.apache.hadoop.fs.FileStatus;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.hdfs.web.WebHdfsFileSystem;

public class WebHDFSTest {
    public static void main(String[] args) {
        Configuration configuration = new Configuration();
        WebHdfsFileSystem webHdfsFileSystem = new WebHdfsFileSystem();
        try {
            webHdfsFileSystem.initialize(new URI("http://cdh3.hadoop.com:50070"), configuration);
            //向HDFS上传文件
            webHdfsFileSystem.copyFromLocalFile(new Path("C:/Users/TEST/Desktop/webhdfs"), new Path("/test_webhdfs"));
            System.out.println("文件成功上传到HDFS上/test_webhdfs目录下");
            //从HDFS下载文件
            webHdfsFileSystem.copyToLocalFile(new Path("http://cdh3.hadoop.com:50070/test_webhdfs/webhdfs.txt"), new Path("C:/Users/TEST/Desktop/getFromHDFS/"));
            System.out.println("文件成功下载到本地桌面的getFromHDFS文件夹下");
            //查看上传的文件内容
            FSDataInputStream open = webHdfsFileSystem.open(new Path("http://cdh3.hadoop.com:50070/test_webhdfs/webhdfs.txt"));
            byte[] bs = new byte[1024 * 1024];
            int len = 0;
            System.out.println("上传的文件内容如下:");
            while((len = open.read(bs)) != -1){
                System.out.println(new String(bs, 0, len));
            }
            //列出HDFS根目录下的所有文件
            FileStatus[] fileStatuses =  webHdfsFileSystem.listStatus(new Path("/"));
            System.out.println("HDFS根目录下的内容如下:");
            for (FileStatus fileStatus : fileStatuses) {
                System.out.println(fileStatus.getPath().getName());
            }
            webHdfsFileSystem.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

4.执行代码前查看HDFS上的目录结构以及待上传的文件

5.执行Java代码

查看上传的文件成功,内容与本地文件一致

查看下载的文件,文件下载成功,且内容与HDFS上一致

在代码控制台打印的文件内容也与上传的文件一致

NFS Gateway方式

首先在HDFS的实例列表中添加NFS Gateway服务,NFS Gateway允许客户端将HDFS文件系统作为本地文件系统的一部分进行挂载。将HDFS挂载到本地文件系统后,可以执行下列操作:

  • 查看HDFS文件系统,和查看本地文件系统的操作一致。
  • 可以向HDFS上传文件以及从HDFS上下载文件到本地文件系统。
  • 通过挂载点将数据直接传输到HDFS。
  • 支持文件追加,但不支持随机写入。

1.在安装NFS Gateway的节点上执行如下命令安装OS依赖服务(本文档选择安装在cdh2节点)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
yum -y install nfs-utils
yum -y install rpcbind

启动rpcbind服务并添加到系统自启动列表

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
systemctl start rpcbind
systemctl status rpcbind
systemctl enable rpcbind

停止系统自带的nfs服务

2.通过CM添加NFS Gateway角色实例

选择一个cdh2节点

启动NFS Gateway

启动成功

3.在集群外客户端节点配置hosts文件(注意:hosts文件的IP为千兆网段IP地址)

4.验证NFS Gateway是否正常运行,正常运行的结果类似下图:

验证是否挂载HDFS,应该能看到类似下图的结果:

5.在命令行执行如下命令,创建挂载点并将HDFS挂载到本地目录

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mkdir /nfs
mount -t nfs -o vers=3,proto=tcp,nolock,noacl,sync cdh2.hadoop.com:/ /nfs

6.测试上传文件、查看文件以及删除文件

在外部客户端节点上传文件

在HDFS NFS Gateway节点查看上传的文件

在外部客户端节点删除文件

在HDFS NFS Gateway节点删除文件

修改Gateway配置参数

1.修改Gateway配置参数前查看hadoop命令使用集群内网IP连接HDFS

在命令行设置日志打印级别

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
export HADOOP_ROOT_LOGGER=DEBUG,console

查看访问Datanode的方式,是用的集群内配置的hosts的IP访问的

2.修改集群外客户端节点的/etc/hadoop/conf/hdfs-site.xml配置文件,添加如下配置

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<property>
  <name>dfs.client.use.datanode.hostname</name>
  <value>true</value>
</property>

该配置表示外部客户端访问Datanode的时候是通过主机名访问,这样就解决了NameNode返回Datanode的内网IP地址给外部客户端节点,导致外部客户端节点上传文件失败的问题,配置该参数后,在外部客户端节点的hosts文件配置好外网和IP的映射,即可解决问题。

3.执行hadoop命令向集群put数据成功且使用的为hostname访问集群50010端口

查看访问Datanode的方式,以主机名的方式访问,而不是IP

总结

1.由于在集群外只有192.168.0.*网段才可以访问到HDFS,所以需要确保HDFS服务(NameNode、DataNode等)绑定到通配符地址,否则会导致192.168.0.*网段无法访问HDFS服务。

2.以上三种方式访问HDFS均需要在本地配置hosts文件且IP地址为Hadoop集群的192.168.0.*网段IP。

3.使用NFS Gateway方式需要安装NFS Gateway服务并启动,在需要访问HDFS的客户端节点,执行挂载命令将HDFS文件系统挂载到本地即可。

4.相较于前两种方式通过修改Gateway客户端配置文件的方式最为简单,只需要在客户端节点的配置文件中增加dfs.client.use.datanode.hostname参数为true即可解决问题。

Fayson的github: https://github.com/fayson/cdhproject

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-08-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Hadoop实操 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
0734-5.16.1-集群外客户端跨网段向Kerberos环境的Hadoop集群提交作业(续)
在前面的文章《如何在集群外节点跨网段向HDFS写数据》和《外部客户端跨网段访问Hadoop集群方式(续)》中介绍了如何在集群外的客户端节点上访问Hadoop集群,本篇文章在前面文章的基础上基于Kerberos环境的CDH集群介绍,如何在集群外客户端跨网段向Kerberos环境的Hadoop集群提交MapReduce和Spark作业。
Fayson
2019/12/16
2.2K0
0734-5.16.1-集群外客户端跨网段向Kerberos环境的Hadoop集群提交作业(续)
如何在集群外节点跨网段向HDFS写数据
Fayson想了想这个问题其实在各个环境是都可能碰到的,于是在这篇文章给大家系统介绍一下。
Fayson
2018/03/29
2.8K0
如何在集群外节点跨网段向HDFS写数据
我攻克的技术难题 - 如何快速搭建Hadoop3集群
距离唯一一次搭建Hadoop集群,已是六年有余。那时候大数据的学习资料还是我从某宝25买来的,如今大数据已遍地开花。最近想写一些关于大数据的东西,例如Spark、flink等,想放在Yarn上跑,所以就从Hadoop的搭建开始写起。
叫我阿柒啊
2024/01/18
6161
我攻克的技术难题 - 如何快速搭建Hadoop3集群
记一次Hadoop集群数据上传缓慢案例分析
手上管理的其中一个Hadoop集群,承接着大量的数据流量,一直以来运行平稳,最近突然发现集群有时会出现MR作业运行缓慢,put文件至HDFS偶发速度慢的问题,像大数据集群这种问题,有点疑难杂症的味道,本次也是经历了10多个小时的定位才真正把问题解决。
Lu说
2022/06/07
1.5K0
记一次Hadoop集群数据上传缓慢案例分析
配置Hadoop集群客户端
在Hadoop和Spark集群搭建好了以后,如果我们需要向集群中发送、获取文件,或者是执行MapReduce、Spark作业,通常是搭建一个外围的、集群的客户端,在这个客户端上进行操作。而不是直接在集群的NameNode或者DataNode上进行。此时,集群和客户端的结构如下图所示(简化图,没有考虑NameNode的高可用),本文将介绍如何快速搭建一个集群客户端(有时也叫gateway)。
张子阳
2018/08/22
3.6K0
配置Hadoop集群客户端
大数据系列(2)——Hadoop集群坏境CentOS安装
前言 前面我们主要分析了搭建Hadoop集群所需要准备的内容和一些提前规划好的项,本篇我们主要来分析如何安装CentOS操作系统,以及一些基础的设置,闲言少叙,我们进入本篇的正题。 技术准备 VMware虚拟机、CentOS 6.8 64 bit 安装流程 因为我的笔记本是Window7操作系统,然后内存配置,只有8G,内存配置太低了,当然为了演示,我会将Hadoop集群中的主节点分配2GB内存,然后剩余的三个节点都是1GB配置。 所有的节点存储我都设置为50GB。 在安装操作系统之前,我们需要提前规划
小莹莹
2018/04/23
1K0
大数据系列(2)——Hadoop集群坏境CentOS安装
Hadoop集群搭建
'readonly' option is set (add ! to override) 查看5.1解决。
ha_lydms
2023/08/10
5340
Hadoop集群搭建
【史上最全】Hadoop 核心 - HDFS 分布式文件系统详解(上万字建议收藏)
Hadoop 分布式系统框架中,首要的基础功能就是文件系统,在 Hadoop 中使用 FileSystem 这个抽象类来表示我们的文件系统,这个抽象类下面有很多子实现类,究竟使用哪一种,需要看我们具体的实现类,在我们实际工作中,用到的最多的就是HDFS(分布式文件系统)以及LocalFileSystem(本地文件系统)了。
五分钟学大数据
2021/03/04
1.4K0
【史上最全】Hadoop 核心 - HDFS 分布式文件系统详解(上万字建议收藏)
安装Hadoop集群
。。。 查看之前的这篇安装jdk: https://mp.csdn.net/mdeditor/102639879# 保证至少有三个虚拟机,每个虚拟机完成上面操作
用户4870038
2021/02/05
2.2K0
安装Hadoop集群
搭建hadoop集群的三种方式_hadoop集群部署
安装VMware,使用三台 Ubuntu18.04 虚拟机进行集群搭建,下面是每台虚拟机的规划:
全栈程序员站长
2022/11/17
2.2K0
搭建hadoop集群的三种方式_hadoop集群部署
Hadoop集群配置
hadoop集群配置 1.多台机器ssh免密配置 修改用户名 # 1.更改hostname hostnamectl --static set-hostname <主机名> scp传输文件 scp <文件路径> <目标账号@地址>: 目标路径 scp /etc/hosts root@hadoop2: /etc/ ssh免密登录 # 配置公钥 ssh-keygen # 配置免密登录 ssh-copy-id <目标ip> 2. 多台主机时间核对 所有机器安装ntp yum -y
俺也想起舞
2019/07/24
1.4K0
实战CentOS系统部署Hadoop集群服务
版权声明:本文为木偶人shaon原创文章,转载请注明原文地址,非常感谢。 https://blog.csdn.net/wh211212/article/details/53171625
shaonbean
2019/05/26
5620
安装和配置Hadoop集群(3节点)
在 安装和配置Hadoop(单节点) 这篇文章中,已经进行了Hadoop单机伪集群模式的部署。生产环境中,Hadoop都是以集群方式进行安装和部署的,否则,就不需要使用Hadoop了,分布式存储和分布式运算是Hadoop提供的核心功能。这篇文章将在单机安装的基础上,进行3个节点Hadoop集群的安装,因此如果你还没有单机安装过Hadoop,那么请先查看一下单机安装的这篇文章。
张子阳
2018/09/30
8K1
安装和配置Hadoop集群(3节点)
大数据成长之路------hadoop集群的部署(2)
7、启动集群 a)格式化集群 在第一个节点执行 hadoop namenode -format
Maynor
2021/04/09
3200
打造自己的MapReduce[一]:Hadoop集群搭建
那就是我在这里的每一篇文开头都必然是:最近工作好忙,又断更很久了……Anyway,这也不能成为偷懒的理由。我可能对记录技术有些固执的误解,总认为是要待到整理出一个专题一样自成体系的技术点才来更新,然大多数情况下,工作之余不会有太多时间来干这些耗时耗力的玩意。于是我尝试做一些改变,只要产生了想法抑或有些许收获,就或多或少地记录下来。但愿这能奏效。
星回
2018/08/02
4440
打造自己的MapReduce[一]:Hadoop集群搭建
如何给CDH集群增加Gateway节点
Gateway节点又称为客户端节点,通常用作访问Hadoop集群的接口机。它主要会部署一些客户端的配置,脚本命令,比如HDFS的core-site.xml,hdfs-site.xml以及hadoop的操作命令。
Fayson
2018/03/29
5.1K0
如何给CDH集群增加Gateway节点
初探 Hadoop 集群安全
最近因为某些原因学习接触到了开源的大数据框架:Hadoop,该框架允许使用简单的编程模型跨计算机集群对大型数据集进行分布式处理。它旨在从单个服务器扩展到数千台机器,每台机器都提供本地计算和存储,详细概念知识背景我这就不介绍了,各位自行学习。
信安之路
2020/04/21
2K0
初探 Hadoop 集群安全
Hadoop集群安装
Hadoop安装主要就是配置文件的修改,一般在主节点进行修改,完毕后scp分发给其他各个从节点机器。
张哥编程
2024/12/07
1860
Hadoop连载系列之一:Hadoop集群搭建
Hadoop是Apache软件基金会旗下的一个开源分布式计算平台,支持密集型分布式应用并以Apache2.0许可协议发布。
星哥玩云
2022/06/30
8910
HUE如何访问NameNode HA模式
在配置HUE访问NameNode HA之前,我们先来了解一下WebHDFS与HttpFS:
create17
2019/03/12
2.3K0
推荐阅读
相关推荐
0734-5.16.1-集群外客户端跨网段向Kerberos环境的Hadoop集群提交作业(续)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验