6、HDFS的HttpFS-代理服务

Hadoop系列文章目录

1、hadoop3.1.4简单介绍及部署、简单验证
2、HDFS操作 - shell客户端
3、HDFS的使用(读写、上传、下载、遍历、查找文件、整个目录拷贝、只拷贝文件、列出文件夹下文件、删除文件及目录、获取文件及文件夹属性等)-java
4、HDFS-java操作类HDFSUtil及junit测试(HDFS的常见操作以及HA环境的配置)
5、HDFS API的RESTful风格–WebHDFS
6、HDFS的HttpFS-代理服务
7、大数据中常见的文件存储格式以及hadoop中支持的压缩算法
8、HDFS内存存储策略支持和“冷热温”存储
9、hadoop高可用HA集群部署及三种方式验证
10、HDFS小文件解决方案–Archive
11、hadoop环境下的Sequence File的读写与合并
12、HDFS Trash垃圾桶回收介绍与示例
13、HDFS Snapshot快照
14、HDFS 透明加密KMS
15、MapReduce介绍及wordcount
16、MapReduce的基本用法示例-自定义序列化、排序、分区、分组和topN
17、MapReduce的分区Partition介绍
18、MapReduce的计数器与通过MapReduce读取/写入数据库示例
19、Join操作map side join 和 reduce side join
20、MapReduce 工作流介绍
21、MapReduce读写SequenceFile、MapFile、ORCFile和ParquetFile文件
22、MapReduce使用Gzip压缩、Snappy压缩和Lzo压缩算法写文件和读取相应的文件
23、hadoop集群中yarn运行mapreduce的内存、CPU分配调度计算与优化



本文介绍HttpFS的使用。
可以与前一篇文章一起阅读。HDFS API的RESTful风格–WebHDFS
本文分为四部分,即介绍、配置、验证与和WebHDFS的比较。
本文阅读前提是已经部署好hadoop环境,具体部署参考hadoop3.1.4简单介绍及部署、简单验证

一、HttpFS介绍

1、HttpFS概述

  • HttpFS 是一个提供RESTful 接口的网关的服务器,该网关支持所有HDFS文件系统操作
  • 对于文件CURD的操作全部提交给HttpFS服务进行中转,然后由HttpFS去跟HDFS集群交互
  • HttpFS是一个独立于HDFS的服务,若使用需要手动安装。本质上是一个代理服务
  • HttpFS本身是Java Web应用程序。使用内置的Jetty服务器对外提供服务
  • HttpFS默认端口号为14000
    在这里插入图片描述

二、HttpFS配置

1、概述

配置允许通过代理访问的主机节点、用户所属组。core-site.xml配置文件。
服务端需要在NameNode和ResourceManager的core-site.xml中进行代理权限相关配置。 对于每一个superUser用户,配置参数:
在这里插入图片描述
对于每个superUser用户,hosts必须进行配置,而groups和users至少需要配置一个。
这几个配置项的值都可以使用*来表示允许所有的主机/用户组/用户

<property>
    <name>hadoop.proxyuser.userA.hosts</name>
    <value>*</value>
</property>
<property>
    <name>hadoop.proxyuser.userA.users</name>
    <value>user1,user2</value>
</property>
 <!-- 表示允许用户userA,在任意主机节点,代理用户user1和user2 -->

2、java api 访问示例

// 创建superUser用户
    UserGroupInformation superUser = UserGroupInformation.getCurrentUser();
    //创建proxyUser用户
    UserGroupInformation proxyUgi = UserGroupInformation.createProxyUser(“proxyUser”, superUser);
    // 使用proxyUser用户访问集群
    proxyUgi.doAs(new PrivilegedExceptionAction<Void>() {
        @Override
        public Void run() throws Exception {
            // 使用proxy用户访问hdfs
            FileSystem fs = FileSystem.get(conf);
            fs.mkdirs(new Path(/proxyUserDir”));
            // 使用proxy用户提交mr作业
            JobClient jc = new JobClient(conf);
         
            jc.submitJob(conf);
         
              return null;
      }
    });

3、本环境配置示例

alanchan用户是本hadoop集群的部署用户。

1)、修改配置文件

<property>
    <name>hadoop.proxyuser.alanchan.hosts</name>
    <value>*</value>
</property>
<property>
    <name>hadoop.proxyuser.alanchan.groups</name>
    <value>*</value>
</property>

<!--
表示alanchan用户可以在任意host主机节点上代表任意group组的用户。
*表示所有。
-->

2)、同步配置文件并重启

同步配置文件到集群中其他节点,并重启HDFS集群

cd /usr/local/bigdata/hadoop-3.1.4/etc/hadoop

scp core-site.xml server2:/usr/local/bigdata/hadoop-3.1.4/etc/hadoop/
scp core-site.xml server3:/usr/local/bigdata/hadoop-3.1.4/etc/hadoop/
scp core-site.xml server4:/usr/local/bigdata/hadoop-3.1.4/etc/hadoop/

cd /usr/local/bigdata/hadoop-3.1.4/sbin
start-all.sh
stop-all.sh

3)、启动HttpFS

# 启动
hdfs --daemon start httpfs
# 关闭
hdfs --daemon stop httpfs

[alanchan@server1 sbin]$ hdfs --daemon start httpfs
WARNING: /usr/local/bigdata/hadoop-3.1.4/temp does not exist. Creating.
# 验证进程
[alanchan@server1 sbin]$ jps
28276 NameNode
30712 Jps
28872 ResourceManager
30460 HttpFSServerWebServer

# HttpFSServerWebServer该进程为HttpFS进程

三、HttpFS配置验证

1、验证

通过查看进程是否启动以及通过页面是否可以访问、使用来验证配置正确与否。

[alanchan@server1 sbin]$ jps
30460 HttpFSServerWebServer

访问HttpFS服务
在这里插入图片描述
http://server1:14000/static/index.html
在这里插入图片描述
HttpFS访问指定用户身份
http://server1:14000/webhdfs/v1?op=LISTSTATUS
在这里插入图片描述
http://server1:14000/webhdfs/v1?user.name=alanchan&op=LISTSTATUS
user.name=alanchan,是core-site.xml中配置的用户
在这里插入图片描述
通过以上的命令行验证以及页面验证,可发现如预期,则表明配置正确。

2、使用示例

查看文件及其文件夹,本示例是查看根目录下,对应的命令:hadoop fs -ls /test
http://server1:14000/webhdfs/v1/test?user.name=alanchan&op=LISTSTATUS
test是路径,其目录下有2个文件
在这里插入图片描述

四、HttpFS与WebHDFS的比较

1、WebHDFS

  • HDFS内置、默认开启
  • 基于REST的HDFS API
  • 重定向到资源所在的datanode
  • 客户端会和nn、dn交互
  • 使用内置的WebHDFS REST API操作访问
    http://server1:9870/webhdfs/v1/?op=LISTSTATUS
    端口由dfs.namenode.http-address指定。默认值9870

2、HttpFS

  • 独立服务,手动开启
  • 基于REST的HDFS API
  • 数据先传输到该httpfs server,再由其传输到client
  • 客户端不跟hdfs直接交互
  • 使用HttpFS web Server 服务操作访问
    http://server1:14000/webhdfs/v1?user.name=alanchan&op=LISTSTATUS
    端口:14000

外部系统使用一般推荐HttpFS,不过取决于实际的应用环境情况。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一瓢一瓢的饮 alanchanchn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值