其中Router和NameNode都支持了webhdfs的功能,具体实现有差别。 使用 文件系统URI与HTTP URL WebHDFS的文件系统方案为“ webhdfs:// ”。 WebHDFS文件系统URI具有以下格式。 webhdfs://<主机>:<HTTP_PORT>/<PATH> 上面的WebHDFS URI对应于下面的HDFS URI。 http://<主机>:<HTTP_PORT>/webhdfs/v1/<PATH>? NameNode webhdfs 源码实现分析 启动和初始化 在NameNode启动过程中,启动NameNode的http模块的时候,启动了NameNode的webhdfs模块。 /** Choose target for WebHDFS redirection. */ public DatanodeStorageInfo[] chooseTarget4WebHDFS(String
HDFS支持两种RESTful接口:WebHDFS和HttpFS。 WebHDFS默认端口号为50070,HttpFS默认端口号为14000。 默认启动WebHDFS而不会启动HttpFS,而HttpFS需要通过sbin/httpfs.sh来启动。 WebHDFS模式客户端和DataNode直接交互,HttpFS是一个代理模式。 而WebHDFS是HDFS内置模块,无自己的配置文件、环境配置文件和日志配置文件,随HDFS而启动。 WebHDFS配置,在core-site.xml中加入以下内容: hadoop.proxyuser.$username.hosts * hadoop.proxyuser.
WebHDFS观念是基于HTTP操作,比如GET、PUT、POST和DELETE。 在配置开源日志系统fluentd过程中,fluentd就是利用webHDFS和HDFS进行通信,配置好久没有通,最后发现Hadoop 0.20.2 不支持webHDFS! 所以本文中的hadoop版本是:hadoop-1.2.1 配置webHDFS服务,很简单,就一个文件: <property> <name>dfs.webhdfs.enabled</name> <value value>true</value> </property> 然后重启hadoop服务: stop-all.sh 然后 start-all.sh 查看namenode服务器中的日志文件,发现如下行就代表webHDFS 启动了: wKiom1R-sy_BWnmcAAi9duDb3LM985.jpg 现在我们来测试web是否能够通信了: curl -i 'http://172.16.41.151:50070/webhdfs
Hadoop1.0版本已经提供了对Web方式访问的全面支持,包括读写和文件管理,用户可以使用curl模拟Http消息进行测试,下面是WebHDFS提供的操作列表功能清单: HTTP GET •
1.配置 namenode的hdfs-site.xml是必须将dfs.webhdfs.enabled属性设置为true,否则就不能使用webhdfs的LISTSTATUS、LISTFILESTATUS等需要列出文件 要想不区分端口,直接使用namenode的IP和端口进行所有的webhdfs操作,就需要在所有的datanode上都设置hefs-site.xml中的dfs.webhdfs.enabled为true。 3.curl操作webhdfs 创建并写一个文件 curl -i -X PUT "http://localhost:50070/webhdfs/v1/<PATH>? 打开并读取一个文件 curl -i -L "http://<HOST>:<PORT>/webhdfs/v1/<PATH>? op=GETFILESTATUS“ 目录列表 curl -i "http://<HOST>:<PORT>/webhdfs/v1/<PATH>?
1、一天里按时间(精确到小时)来请求WebHDFS(数据类型是JSON) 利用Promise异步请求 2、将上面所有Promise异步请求包装成数据,投入到Promise.all中 遇到问题:
WebHDFS概述及操作 简介 WebHDFS其实是HDFS提供的HTTP RESTFul API接口,并且它是独立于Hadoop的版本的,它支持HDFS的完整FileSystem / FileContext 的文件系统schema是webhdfs://。 WebHDFS文件系统URI具有以下格式。 webhdfs://:/ 上面的WebHDFS URI对应于下面的HDFS URI。 http://:/webhdfs/v1/ ?op=… 安装Postman进行测试: 请求URL:http://node1.itcast.cn:9870/webhdfs/v1/? /v1/data/hdfs-test/webhdfs_api.txt?
/2.3.0/gems/webhdfs-0.8.0/lib/webhdfs/client_v1.rb:275:in `operate_requests'", "/home/parim/elk/logstash -6.4.0/vendor/bundle/jruby/2.3.0/gems/webhdfs-0.8.0/lib/webhdfs/client_v1.rb:138:in `list'", "/home/parim /logstash-output-webhdfs-3.0.6/lib/logstash/outputs/webhdfs.rb:155:in `register'", "org/logstash/config 的值,来减少访问webhdfs的频率,同时提高HDFS的写入量 - 降低idle_flush_time的值,因为提高了flush_size,所以可以适当的减少数据发送到webhdfs的时间间隔 - Logstash的输出插件中的webhdfs部分的user,Logstash解释是webhdfs的用户名。
一、WebHDFS与HttpFS 在配置HUE访问NameNode HA之前,我们先来了解一下WebHDFS与HttpFS: 两者都是基于REST的HDFS API,使得一个集群外的host可以不用安装 WebHDFS是HortonWorks开发的,然后捐给了Apache;而HttpFS是Cloudera开发的,也捐给了Apache。 检查HDFS配置 确保WebHDFS保持开启状态,如下图所示: ? webhdfs_url的值是HttpFS所在主机+端口号,比如:http://liuyzh1.xdata:14000/webhdfs/v1。 五、总结 在Hue中配置webhdfs_url使用HttpFS服务,在集群启用高可用后必须选择使用HttpFS服务。
另外一种基于REST的API实现,分为两种一种是Hortonworks提供的WebHDFS默认的与Hadoop集成,一种是Cloudera 提供的HttpFS需要安装独立的HttpFS服务。 本篇文章主要介绍如何使用WebHdfs和HttpFS方式访问HDFS。 4.HttpFS访问HDFS ---- 我们使用同样的webhdfs访问HDFS的代码,这里只需要将访问地址修改为HttpFS服务所在的服务器ip及端口即可。 WebHdfs访问的限制有集群启用了高可用则必须访问Active状态的NameNode才可以访问HDFS。 关于更多webhdfs的操作可以参考官网文档:http://hadoop.apache.org/docs/r1.0.4/webhdfs.html#CREATE github地址: https://github.com
httpfs组件与namenode内置的http接口都能提供webhdfs http接口,但二者不同的是httpfs可以作为独立服务部署到其他节点上,从而与namenode互相独立。 ://localhost:4032/ Found 7 items drwxr-xr-x - hadoop supergroup 0 2018-05-25 15:28 webhdfs :4032/emr drwxr-xr-x - hadoop supergroup 0 2018-05-29 15:36 webhdfs://localhost:4032/hbase drwxr-xr-x - hadoop supergroup 0 2018-06-06 16:49 webhdfs://localhost:4032/spark-history api文档参考链接: https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-hdfs/WebHDFS.html
配置 属性 默认 描述 hdfs.url http://localhost:50070/webhdfs/v1/ WebHDFS的URL hdfs.user HDFS WebHDFS用户 hdfs.maxlength 1000 获取的最大行结果行数 该解释器使用HTTP WebHDFS接口连接到HDFS。 WebHDFS REST API 您可以通过针对提供给解释器的WebHDFS终端运行curl命令来确认您是否可以访问WebHDFS API。 这是一个例子: $> curl "http://localhost:50070/webhdfs/v1/?op=LISTSTATUS"
hue-3.10.0 make apps make install Hue整合Hadoop: HDFS: hdfs-site.xml文件配置: <property> <name>dfs.webhdfs.enabled default]]] # Enter the filesystem uri fs_defaultfs=hdfs://localhost:8020 # Use WebHdfs webhdfs_url=http://localhost:50070/webhdfs/v1 YARN: vi hue-3.10.0/desktop/conf/hue.ini [hadoop]
配置HDFS服务器 配置WebHDFS HDFS Explorer通过WebHDFS访问HDFS,必须配置HDFS支持webhdfs。 在hdfs-site.xmle文件中添加如下内容: <property> <name>dfs.webhdfs.enabled</name> <value>true</value>
,目标集群使用HDFS或者WebHDFS协议。 如果源是Kerberos环境,目标是非Kerberos环境,则在源集群运行命令,对源集群使用HDFS或者WebHDFS,目标集群使用WebHDFS协议。 5.执行数据拷贝命令(目标WebHDFS方式) 源集群使用WebHDFS和目标集群使用WebHDFS协议进行数据拷贝,删除目标集群hdfs的/sourcedata目录 [ec2-user@ip-172- 31-8-141 ~]$ hadoop distcp webhdfs://ip-172-31-6-148:14000/data/ webhdfs://ip-172-31-9-186:14000/sourcedata 5.执行如下操作进行数据拷贝(源WebHDFS方式) [ec2-user@ip-172-31-8-141 ~]$ hadoop distcp webhdfs://ip-172-31-9-186:14000
default_hdfs_superuser = hadoop (HDFS管理用户) fs_defaultfs = hdfs://hadoop-1:8020 (对应core-site.xml配置项fs.defaultFS) webhdfs_url = http://hadoop-1:50070/webhdfs/v1 (webhdfs访问地址) hadoop_conf_dir = /usr/local/hadoop-2.7.3/etc/hadoop HiveServer2服务端口号) hive_conf_dir = /usr/local/hive-2.3.0/conf (Hive配置文件目录) 一定要增加一个hue用户 useradd hue 发现是webhdfs 都是可以 curl –i "http://dev-hadoop:50070/webhdfs/v1/user? value>*</value> </property> vim /usr/local/hadoop-2.7.3/etc/hadoop/hdfs-site.xml <property> <name>dfs.webhdfs.enabled
1) 配置HDFS HttpFS和WebHDFS 如果HDFS是HA方式部署的,则只能使用HttpFS,而不能用WebHDFS。 //////////////////////////// 附)配置HDFS HttpFS和WebHDFS HDFS支持两种RESTful接口:WebHDFS和HttpFS。 WebHDFS默认端口号为50070,HttpFS默认端口号为14000。 默认启动WebHDFS而不会启动HttpFS,而HttpFS需要通过sbin/httpfs.sh来启动。 WebHDFS模式客户端和DataNode直接交互,HttpFS是一个代理模式。如果HDFS是HA方式部署的,则只能使用HttpFS模式。 而WebHDFS是HDFS内置模块,无自己的配置文件、环境配置文件和日志配置文件,随HDFS而启动。
环境准备 Python访问HDFS需要安装相应的依赖包,这里Fayson选择了pywhdfs依赖包,该依赖包支持如下特性:https://bitbucket.org/suty/pyhdfs 该库用于与WebHDFS 3 Pywhdfs命令行使用 pywhdfs支持在命令行通过WebHDFS进行交互式的访问及操作HDFS,pywhdfs命令行访问HDFS通过json文件来定义集群的配置信息,默认的配置文件在~/ .webhdfs.cfg 目录下,也可以通过WEBHDFS_CONFIG环境变量来覆盖默认的配置。 1.在当前目录下创建一个webhdfs.cfg配置,内容如下 [root@cdh05 python_code]# vim webhdfs.cfg { "clusters": [ { =/data/disk1/python_code/webhdfs.cfg [root@cdh05 python_code]# /opt/cloudera/anaconda2/bin/pywhdfs -c
历史文章 [hadoop3.x系列]HDFS REST HTTP API的使用(一)WebHDFS HTTPFS概述 l HttpHDFS本质上和WebHDFS是一样的,都是提供HTTP REST API 例如,使用curl/Unix命令: $curl ‘http://httpfs-host:14000/webhdfs/v1/user/foo/README.txt? $curl ‘http://httpfs-host:14000/webhdfs/v1/user/foo? $curl ‘http://httpfs-host:14000/webhdfs/v1/user/foo? $curl -X POST‘http://httpfs-host:14000/webhdfs/v1/user/foo/bar?
内容概述 1.使用WebHDFS访问HDFS 2.使用NFS Gateway方式 3.修改Gateway配置参数 测试环境 1.CM和CDH版本未5.16.1 2.集群未启用安全 3.OS的版本为RedHat7.2 WebHDFS RSET API方式 WebHDFS是内置在HDFS中的,不需要进行额外的安装以及启动,提供了RESTful接口来操作HDFS,下面使用Java代码通过WebHDFS API来操作HDFS "), new Path("/test_webhdfs")); System.out.println("文件成功上传到HDFS上/test_webhdfs目录下"); 从HDFS下载文件 webHdfsFileSystem.copyToLocalFile(new Path("http://cdh3.hadoop.com:50070/test_webhdfs /webhdfs.txt")); byte[] bs = new byte[1024 * 1024]; int len = 0;