hadoop-3.1.2启动httpfs
最近有一个需求,要求使用httpfs读取数据,一开始看到httpfs这个词,第一感觉是不是多了个f,是不是https,后来百度一下,其实不然。
httpfs其实是使用http协议访问hdfs文件系统:
HttpFS是一台提供REST HTTP网关的服务器,该网关支持所有HDFS文件系统操作(读取和写入)。并且可以与webhdfs REST HTTP API 互操作。
HttpFS可用于在运行不同版本Hadoop的群集之间传输数据(克服RPC版本问题),例如使用Hadoop DistCP。
HttpFS可用于访问防火墙后面的群集上的HDFS中的数据(HttpFS服务器充当网关,并且是唯一允许将防火墙穿过群集进入群集的系统)。
HttpFS可用于使用HTTP实用程序(例如curl和wget)和来自Java以外的其他语言的HTTP库Perl来访问HDFS中的数据。
所述webhdfs客户文件系统实现可以用于使用Hadoop的文件系统命令(访问HttpFS hadoop的FS)行工具使用Hadoop的文件系统的Java API的Java应用程序,以及。
HttpFS具有内置的安全性,支持Hadoop伪身份验证和HTTP SPNEGO Kerberos以及其他可插入身份验证机制。它还提供了Hadoop代理用户支持。
详情可参考:https://hadoop.apache.org/docs/stable/hadoop-hdfs-httpfs/index.html
服务器启动:
在hadoop3.1.2版本中已经将httpfs集成好了,我们只需要配置httpfs相关配置,启动后就能使用httpfs访问hdfs文件服务器
具体步骤:
配置HttpFS
默认情况下,HttpFS假定Hadoop配置文件(core-site.xml和hdfs-site.xml)位于HttpFS配置目录中。
如果不是这种情况,则将httpfs.hadoop.config.dir属性添加到httpfs-site.xml文件,该属性设置为Hadoop配置目录的位置。
1.在core-site.xml中添加如下配置
<property>
<name>hadoop.proxyuser.root.hosts</name>
<value>s128</value>
</property>
<property>
<name>hadoop.proxyuser.root.groups</name>
<value>*</value>
</property>
,其中红色标注的地方为代理用户身份运行HttpFS服务器的Unix用户,
hadoop.proxyuser.root.hosts我这里指定了具体的一台NameNode机器,如果指定其他hosts,可能会出现异常:
{"RemoteException":{"message":"Unauthorized connection for super-user: root from IP 192.168.3.128","exception":"RemoteException","javaClassName":"org.apache.hadoop.ipc.RemoteException"}}
重新启动Hadoop
您需要重新启动Hadoop才能使proxyuser配置生效。
启动/停止HttpFS
要启动/停止HttpFS,请使用hdfs --daemon start | stop httpfs。例如:
hdfs --daemon start httpfs
测试HttpFS是否正常
http://s128:14000/webhdfs/v1?op=gethomedirectory&user.name=root
返回结果:
{"Path":"\/user\/root"}
表示HttpFS服务启动正常了
HTTPFS使用
http://${host}:14000/webhdfs/v1/${path}?op=${operator}&user.name=${user}
其中${host}为hadoop中启动的httpfs服务的host
${path}为要操作的路径,可以是目录也可以是文件
${operator}为操作类型,常见的如下:
HTTP GET
OPEN (see FileSystem.open)
GETFILESTATUS (see FileSystem.getFileStatus)
LISTSTATUS (see FileSystem.listStatus)
GETCONTENTSUMMARY (see FileSystem.getContentSummary)
GETFILECHECKSUM (see FileSystem.getFileChecksum)
GETHOMEDIRECTORY (see FileSystem.getHomeDirectory)
GETDELEGATIONTOKEN (see FileSystem.getDelegationToken)
HTTP PUT
CREATE (see FileSystem.create)
MKDIRS (see FileSystem.mkdirs)
RENAME (see FileSystem.rename)
SETREPLICATION (see FileSystem.setReplication)
SETOWNER (see FileSystem.setOwner)
SETPERMISSION (see FileSystem.setPermission)
SETTIMES (see FileSystem.setTimes)
RENEWDELEGATIONTOKEN (see DistributedFileSystem.renewDelegationToken)
CANCELDELEGATIONTOKEN (see DistributedFileSystem.cancelDelegationToken)
HTTP POST
APPEND (see FileSystem.append)
HTTP DELETE
DELETE (see FileSystem.delete)
${user}为httpfs启动用户名
列举某个文件夹下的文件:列举/wbd_test下的文件
http://s128:14000/webhdfs/v1/wbd_test?op=LISTSTATUS&user.name=root
返回结果:
{
    "FileStatuses":{
        "FileStatus":[
            {
                "pathSuffix":"snapshot_lzo_e302a790db684d05b084db87c6379008.txt",
                "type":"FILE",
                "length":2546994,
                "owner":"root",
                "group":"supergroup",
                "permission":"644",
                "accessTime":1571972356950,
                "modificationTime":1571972365701,
                "blockSize":134217728,
                "replication":2
            }
        ]
    }
}
hadoop-3.1.2启动httpfs的更多相关文章
- Hadoop的datanode无法启动
		Hadoop的datanode无法启动 hdfs-site中配置的dfs.data.dir为/usr/local/hadoop/hdfs/data 用bin/hadoop start-all.sh启动 ... 
- Hadoop Datanode节点无法启动(All directories in dfs.data.dir are invalid)
		Hadoop Datanode节点无法启动(All directories in dfs.data.dir are invalid) java.io.IOException: All director ... 
- 全网最详细的Hadoop HA集群启动后,两个namenode都是active的解决办法(图文详解)
		不多说,直接上干货! 这个问题,跟 全网最详细的Hadoop HA集群启动后,两个namenode都是standby的解决办法(图文详解) 是大同小异. 欢迎大家,加入我的微信公众号:大数据躺过的坑 ... 
- Hadoop集群初始化启动
		hadoop集群初始化启动 启动zookeeper ./zkServer.sh start 启动journalnode ./hadoop-daemon.sh start journalnode 格式化 ... 
- Hadoop 2.0+YARN启动脚本分析与实战经验
		start-all.sh脚本现在已经废弃,推荐使用start-dfs.sh和start-yarn.sh分别启动HDFS和YARN. 在新一代的Hadoop里面HDFS称为了统一存储的平台,而YARN成 ... 
- Hadoop集群的启动顺序
		1.启动zookeeper集群 对于hadoop,使用Zookeeper的事件处理确保整个集群只有一个活跃的NameNode,存储配置信息,对于HBase,使用Zookeeper的事件处理确保整个集群 ... 
- hadoop中datanode无法启动
		一.问题描述 当我多次格式化文件系统时,如 [hadoop@xsh hadoop]$ ./bin/hdfs namenode -format 会出现datanode无法启动,查看日志(/usr/loc ... 
- Hadoop namenode节点无法启动的问题解决
		namenode是Hadoop集群HDFS的管理节点,管理着整个分布式文件系统的命名空间,以及文件与块的映射关系等,在Hadoop集群中扮演着至关重要的作用. 我之前安装的Hadoop集群中namen ... 
- Hadoop 历史服务配置启动查看
		历史服务配置启动查看 1)配置mapred-site.xml <property> <name>mapreduce.jobhistory.address</name> ... 
随机推荐
- Day 5文件管理—三剑客的了解
			文件的下载 wget curl 1.文件的上传 rz sz #不支持拷贝文件夹 文件内容进行 排序 sort ,去重uniq, 统计 文件的截取 cut awk sed .... | ######3. ... 
- Java程序连接数据库
			/** * 了解: 利用 Driver 接口的 connect 方法获取连接 */ // 第一种实现 /** * 了解: 利用 Driver 接口的 connect 方法获取连接 */ @Test p ... 
- Spring Boot2 系列教程(七)理解自动化配置的原理
			Spring Boot 中的自动化配置确实够吸引人,甚至有人说 Spring Boot 让 Java 又一次焕发了生机,这话虽然听着有点夸张,但是不可否认的是,曾经臃肿繁琐的 Spring 配置确实让 ... 
- loadrunner12下载、安装、认证、汉化
			友情提示 推荐工具pandownload下载 本文尽可能地写得详细一些,有不懂的请先自行百度 安装过程中会有大量英文,可以用有道词典截图翻译 若你的电脑只有一个分区,则建议所有位置选择默认,或者根据个 ... 
- 快速整理代码(c#)
			今天写代码发现有些代码行参差不齐,空行又多,整理看起来丑的不行,于是上网搜了下代码整理的快捷方式以作记录 这是整理之前,乱糟糟的(故意打乱为了节目效果) 第一步:Ctrl+a (全选代码) 第二部: ... 
- AJAX基础内容
			1.什么是ajax?为什么要使用ajax? ajax是Asynchronous JavaScript and XML ,也称为创建交互式网页应用开发技术. 2.为什么采用ajax 1)通过异步交互,提 ... 
- 【系统设计】分布式唯一ID生成方案总结
			目录 分布式系统中唯一ID生成方案 1. 唯一ID简介 2. 全局ID常见生成方案 2.1 UUID生成 2.2 数据库生成 2.3 Redis生成 2.4 利用zookeeper生成 2.5 雪花算 ... 
- python自动化测试三部曲之untitest框架
			终于等到十一,有时间写博客了,准备利用十一这几天的假期把这个系列的博客写完 该系列文章本人准备写三篇博客 第一篇:介绍python自动化测试框架unittest 第二篇:介绍django框架+requ ... 
- shell判断文件目录或文件是否存在
			1.文件描述符 -e 判断对象是否存在 -d 判断对象是否存在,并且为目录 -f 判断对象是否存在,并且为常规文件 -L 判断对象是否存在,并且为符号链接 -h 判断对象是否存在,并且为软链接 -s ... 
- 基于elasticsearch的自定义业务告警的设计思路
			A系统与B系统之间有很多接口交互,但是有一段时间接口经常报错,作为开发如果不能第一时间知道问题且及时解决的话就会收到业务投诉,当月绩效凉凉. 如果你也有这种场景,那么你就需要一个及时告警的功能. 实现 ... 
