HDFS支持两种RESTful接口:WebHDFS和HttpFS。 WebHDFS默认端口号为50070,HttpFS默认端口号为14000。 默认启动WebHDFS而不会启动HttpFS,而HttpFS需要通过sbin/httpfs.sh来启动。 WebHDFS模式客户端和DataNode直接交互,HttpFS是一个代理模式。 HttpFS是独立的模块,有自己的配置文件httpfs-site.xml、环境配置文件httpfs-env.sh和日志配置文件httpfs-log4j.properties,需独立启动。 * 对于HttpFS,还需要在httpfs-site.xml中加入以下内容: httpfs.proxyuser. 环境配置文件httpfs-env.sh可以不用修改,直接使用默认的值,当使用sbin/httpfs.sh来启动HttpFS时会屏幕输出HTTPFS_HOME等值。
在非Kerberos的环境中,使用HttpFS是不需要输入用户密码的,为了集群数据安全考虑可以考虑配置HttpFS的SSL。本篇文章主要介绍如何为HttpFS服务配置SSL。 但Fayson依旧建议在开启HttpFS服务的集群里必须开启Kerberos。 在部署了HttpFS服务的节点上,执行如下命令生成KeyStore文件 [root@cdh01 ~]# sudo -u httpfs /usr/java/jdk1.7.0_67-cloudera/bin 界面为HttpFS服务配置SSL。 服务所在节点的hostname 2.直接访问HttpFS服务的IP地址导致,需要配置hosts文件 7.总结 ---- 在生成HttpFS服务的keystore文件时CN信息必须为该服务的hostsname
httpfs是hadoop中HDFS over HTTP的实现,为HDFS的读写操作提供了统一的REST HTTP接口。 在一些特定场景下非常有用,例如不同hadoop版本集群间数据拷贝, 使用httpfs作为对外提供数据访问的网关等。 httpfs组件与namenode内置的http接口都能提供webhdfs http接口,但二者不同的是httpfs可以作为独立服务部署到其他节点上,从而与namenode互相独立。 在emr V2版本中已经默认在master节点上启动了httpfs组件,无需单独部署和启动,emr V1版本或者在非emr节点的客户机中启动方式如下: su - hadoop /usr/local/service /hadoop/sbin/httpfs.sh start emr中默认配置的httpfs端口为4032,启动之后即可通过下面方式进行测试: $ curl "localhost:4032/webhdfs/
l HttpFS是一种服务器,它提供REST HTTP网关,支持所有HDFS文件系统操作(读和写)。 l HttpFS可用于在防火墙后面的集群上访问HDFS中的数据(HttpFS服务器充当网关,是允许跨越防火墙进入集群的唯一系统)。 1.1.1 HTTPFS是如何工作的 l HttpFS是一个独立于HadoopNameNode的服务。 l HttpFS本身就是Java JettyWeb应用程序。 l HttpFS默认端口号为14000 1.1.2 配置Hadoop 编辑Hadoop的core-site.xml,并将运行HttpFS服务器的Unix用户定义为proxyuser。 hdfs --daemon start httpfs 1.1.5 测试HttpFS工作 http://node1.itcast.cn:14000/webhdfs/v1?
服务配置SSL》,在为HttpFS启用了SSL后,Hue中如何使用? 本篇文章主要介绍如何在Hue中配置已启用SSL的HttpFS服务。 内容概述 1.配置Hue使用HttpFS服务 2.生成pem证书文件并配置Hue 3.验证访问HDFS 测试环境 1.CentOS6.5 前置条件 1.集群未启用Kerberos 2.配置Hue使用HttpFS [root@ip-172-31-6-148 hadoop-httpfs]# [root@ip-172-31-6-148 hadoop-httpfs]# sudo -u httpfs /usr/java 6.总结 ---- 在Hue中配置webhdfs_url使用HttpFS服务,在集群启用高可用后必须选择使用HttpFS服务。
HttpFS是独立于HDFS的一个服务。对HDFS文件的读写,将会通过它进行中转,它能限制带宽占用。 如果访问大文件,HttpFS服务本身有可能变成瓶颈。 如果你想限制客户端流量,以防其过度占用集群的带宽时,那可以考虑HttpFS。 总结 WebHDFS与HttpFS各有利弊,都能满足基本需要。 二、安装HttpFS HDP默认是没有安装HttpFs的,所以这里需要手动安装: yum install -y hadoop-httpfs 开启HttpFS: service hadoop-httpfs start 关闭HttpFS: service hadoop-httpfs stop 查看HttpFS状态: service hadoop-httpfs status HttpFS默认端口为14000 五、总结 在Hue中配置webhdfs_url使用HttpFS服务,在集群启用高可用后必须选择使用HttpFS服务。
1) 配置HDFS HttpFS和WebHDFS 如果HDFS是HA方式部署的,则只能使用HttpFS,而不能用WebHDFS。 WebHDFS默认端口号为50070,HttpFS默认端口号为14000。 默认启动WebHDFS而不会启动HttpFS,而HttpFS需要通过sbin/httpfs.sh来启动。 HttpFS是独立的模块,有自己的配置文件httpfs-site.xml、环境配置文件httpfs-env.sh和日志配置文件httpfs-log4j.properties,需独立启动。 * 对于HttpFS,还需要在httpfs-site.xml中加入以下内容: httpfs.proxyuser. 环境配置文件httpfs-env.sh可以不用修改,直接使用默认的值,当使用sbin/httpfs.sh来启动HttpFS时会屏幕输出HTTPFS_HOME等值。
另外一种基于REST的API实现,分为两种一种是Hortonworks提供的WebHDFS默认的与Hadoop集成,一种是Cloudera 提供的HttpFS需要安装独立的HttpFS服务。 本篇文章主要介绍如何使用WebHdfs和HttpFS方式访问HDFS。 4.HttpFS访问HDFS ---- 我们使用同样的webhdfs访问HDFS的代码,这里只需要将访问地址修改为HttpFS服务所在的服务器ip及端口即可。 1.HttpFs服务 [lg874s3pkv.jpeg] 由于Fayson使用的是AWS服务器,所以ip-172-31-6-148.fayson.com对应的公网IP地址为:52.221.198.3,HttpFS HttpFS提供的是一个独立的服务,在访问HDFS时只需要确保执行访问的节点和HttpFS服务所在节点的网络和端口是通的即可。 使用HttpFS访问HDFS时不需要考虑集群是否是高可用状态。
core-site.xml中自定义配置: hadoop.proxyuser.hue.hosts=* hadoop.proxyuser.hue.groups=* 如果集群是NAMENODE HA,则需要安装httpfs ,webhdfs不能自动感知切hdfs-site.xml里面配的高可用信息. yum install hadoop-httpfs ln -s /usr/hdp/current/hadoop-httpfs /etc/rc.d/init.d/hadoop-httpfs /etc/init.d/hadoop-httpfs core-site.xml里面添加自定义属性(hdp) <property> <name >hadoop.proxyuser.httpfs.groups</name> <value>*</value> </property> <property> <name>hadoop.proxyuser.httpfs.hosts
libexec/httpfs-config.sh&kms-config.sh: 分别对应webhdfs和kms(Key Management Service)的配置信息。 etc/hadoop/httpfs-env.sh&kms-env.sh:具体的webhdfs和kms相关的环境变量信息,比如日志存储路径,pid存储路径等。 httpfs.sh 作用: 启动/停止webhdfs,主要是提供一个基于HTTP的RESTful操作接口,基本包括hdfs文件系统的所有命令。 比如端口号配置信息为HTTPFS_HTTP_PORT默认为14000,pid存储文件为CATALINA_PID默认/tmp/httpfs.pid httpfs.sh命令简单介绍 启动/停止服务: httpfs.sh 配置httpfs相关环境变量,比如pid的存储路径,log日志的存储路径等。
/property> <property> <name>hadoop.proxyuser.hdfs.groups</name> <value>*</value> </property> 4.3httpfs-site.xml 文件,加入配置 vim httpfs-site.xml 增加以下内容 <property> <name>hadoop.proxyuser.root.hosts</name> <value -- HUE --> <property> <name>httpfs.proxyuser.hue.hosts</name> <value>*</value> </property> <property > <name>httpfs.proxyuser.hue.groups</name> <value>*</value> </property> 4.4分发配置文件 scp hdfs-site.xml slave1:/usr/hadoop-2.10.2/etc/hadoop scp httpfs-site.xml slave2:/usr/hadoop-2.10.2/etc/hadoop 4.5重新启动
不推荐使用httpfs.authentication.*配置, 在HttpFS中使用hadoop.http.authentication.*配置。 如果同时设置了两个配置,则 httpfs.authentication.*配置对兼容有效。
xiaosi@yoona:~/opt/hadoop-2.7.3/etc/hadoop$ ls capacity-scheduler.xml hadoop-env.sh httpfs-log4j.properties log4j.properties mapred-site.xml.template configuration.xsl hadoop-metrics2.properties httpfs-signature.secret log4j.properties slaves container-executor.cfg hadoop-metrics.properties httpfs-site.xml kms-log4j.properties mapred-site.xml yarn-env.sh hadoop-env.sh httpfs-env.sh
# Enter the filesystem uri fs_defaultfs=hdfs://ambari-ttt-master:8020 # Use WebHdfs/HttpFs # Domain should be the NameNode or HttpFs host. # Default port is 14000 for HttpFs.
summer hadoop]# # 4.修改配置文件 [root@summer hadoop]# ls capacity-scheduler.xml hadoop-env.sh httpfs-env.sh mapred-env.sh ssl-server.xml.example configuration.xsl hadoop-metrics2.properties httpfs-log4j.properties kms-log4j.properties mapred-queues.xml.template yarn-env.cmd container-executor.cfg hadoop-metrics.properties httpfs-signature.secret mapred-site.xml.template yarn-env.sh core-site.xml hadoop-policy.xml httpfs-site.xml
—允许通过httpfs方式访问hdfs的主机名 --> <property> <name>hadoop.proxyuser.root.hosts</name> <value>*</value> </property —允许通过httpfs方式访问hdfs的用户组 --> <property> <name>hadoop.proxyuser.root.groups</name> <value>*</value> </property
] # Enter the filesystem uri fs_defaultfs=hdfs://localhost:8020 # Use WebHdfs/HttpFs # Domain should be the NameNode or HttpFs host.
>mapred.local.dir</name> <value>file:/hadoop/mapred/local</value> <final>true</final> </property> 配置httpfs-site.xml 添加 httpfs的选项 <property> <name>hadoop.proxyuser.root.hosts</name> <value>192.168.216.131</value> </property hsfs namenode-format 启动hdfs执行: start-dfs.sh 开启 hadoop dfs服务 ; 启动Yarn 开启 yarn资源管理服务: start-yarn.sh; 启动httpfs 开启 httpfs服务 httpfs.sh start 使得对外可以提高 http的restful接口服务 9)测试 安装结果验证 验证hdfs 在各台机器执行 jps看进程是否都已经启动了 [root
SUCCESS [01:05 min] [INFO] Apache Hadoop HttpFS ............................... 13.2.7 遇到问题 main: [mkdir] Created dir: /opt/hadoop-2.7.3-src/hadoop-hdfs-project/hadoop-hdfs-httpfs bin/apache-tomcat-6.0.44.tar.gz [get] To: /opt/hadoop-2.7.3-src/hadoop-hdfs-project/hadoop-hdfs-httpfs apache-tomcat-6.0.44.tar.gz [root@hadron ~]# mkdir -p /opt/hadoop-2.7.3-src/hadoop-hdfs-project/hadoop-hdfs-httpfs root@hadron ~]# mv apache-tomcat-6.0.44.tar.gz /opt/hadoop-2.7.3-src/hadoop-hdfs-project/hadoop-hdfs-httpfs
6、删除NameService后,可以看到,NameNode、JournalNode和Failover Controller都需要重启,某种程度上来说,这些角色属于服务端,而DataNode和HttpFS 3 总结 1、通过CM启用/禁用Federation,都会瞬间停止依赖HDFS的服务,重启DataNode和HttpFS(非滚动重启),一定程度上会影响业务系统的正常使用,目前暂时没有办法能够人为的控制启停服务