HTTPFS 安装步骤及验证

昨天安装hdfs httpfs,遇到了几个问题,总是访问不成功,但在网上也查不到答案,今天总结一下:

一、httpfs是什么?

参考:http://debugo.com/hdfs-httpfs/
官网:http://hadoop.apache.org/docs/r2.5.2/hadoop-hdfs-httpfs/ServerSetup.html
    http://hadoop.apache.org/docs/r2.5.2/hadoop-hdfs-httpfs/index.html
1、httpfs是通过http协议来访问hdfs,自带tomcat容器,在hadoop的 share/hadoop/httpfs/tomcat目录下。
HttpFS是提供REST HTTP接口的服务器,可以支持全部HDFS文件系统操作(读和写),它通过webhdfs REST HTTP API来进行交互。这个功能由cloudera提供给Apache主分支。
HttpFS可以用于在不同的Hadoop版本间传输数据(避免了RPC版本问题),例如使用Hadoop DistCP。
HTTP可以用于访问防火墙内的HDFS集群数据(HttpFS可以作为一个网关角色,是唯一可以穿过防火墙访问内部集群数据的系统)。
HttpFS可以通过HTTP工具(比如curl和wget)和各种编程语言的HTTP包(不局限Java)来访问数据。
webhdfs 客户端文件系统实现可以使用HDFS文件系统命令行命令(如hadoop dfs)以及使用HDFS Java API来访问HttpFS。
HttpFS内置安全特性支持Hadoop伪身份验证和HTTP SPNEGO Kerberos 和其他插件式(pluggable )验证机制。它还提供了Hadoop代理用户的支持。

二、httpfs的配置

准备知识:httpfs相关的配置文件:
etc/hadoop/httpfs-env.sh
etc/hadoop/httpfs-log4j.properties
etc/hadoop/httpfs-site.xml
libexec/httpfs-config.sh     
sbin/httpfs.sh

core-site.xml hdfs-site.xml httpfs-log4j.properties httpfs-site.xml
hadoop-env.sh httpfs-env.sh httpfs-signature.secret log4j.properties

httpfs-signature.secret 将文件内容删除,置为空。
httpfs-site.xml  不需修改;

hadoop-env.sh  设置hadoop环境变量;

httpfs-config.sh  可设置httpfs进程的pid文件的地址
    if [ "${CATALINA_PID}" = "" ]; then
      export CATALINA_PID=/tmp/httpfs.pid
      print "Setting CATALINA_PID:       ${CATALINA_PID}"
    else
      print "Using   CATALINA_PID:       ${CATALINA_PID}"
    fi

httpfs-env.sh     设置java_home 变量
export HTTPFS_LOG=/home/yoyo//yoyo_hdfs_httpfs/logs  日志路径;
export HTTPFS_TEMP=/home/yoyo/yoyo_hdfs_httpfs/temp   tmp文件路径
export HTTPFS_HTTP_PORT=14000           端口号
配置:
1、在集群中的两个 namenode 服务下的core-site.xml文件中添加2个配置项:
 <property>
        <name>hadoop.proxyuser.root.hosts</name>
        <value>*</value>
    </property>
    <property>
        <name>hadoop.proxyuser.root.groups</name>
        <value>*</value>
    </property>
2、其他文件不需要改动
2、重启namenode
3、启动httpfs    sbin/httpfs.sh start

三、验证

http://172.16.5.1:14000/webhdfs/v1?op=LISTSTATUS&user.name=root 启动httpfs,在web浏览器访问查看页面是否有数据.


上传数据:
curl -i -X PUT -T ./httpfs-localhost.2017-10-26.log "http://172.16.160.60:14000/webhdfs/v1/text.txt?op=CREATE&data=true&user.name=root" -H "Content-Type:application/octet-stream"

查看数据:
curl -i -X GET "http://172.16.160.60:14000/webhdfs/v1/text.txt?op=OPEN&user.name=root"

四、报错汇集:

1、405 页面找不到,但是 http://172.16.160.69:14000 能访问,http://172.16.160.69:14000/webhdfs/v1页面访问不到,报404,日志信息:httpfs.log 和 httpfs-catalina.out 信息如下:

    554 INFO Server [][:] Services initialized
    2017-10-26 13:31:42,555  INFO Server [][:]  Server [httpfs] started!, status [NORMAL]
    2017-10-26 13:31:42,564  INFO HttpFSServerWebApp [][:]  Connects to Namenode [hdfs://mycluster]
    2017-10-26 13:31:42,579  INFO Server [][:]  Services destroyed
    2017-10-26 13:31:42,579  INFO Server [][:]  Server [httpfs] shutdown!
    十月 26, 2017 1:31:42 下午 org.apache.catalina.core.StandardContext start
    严重: Error filterStart
    十月 26, 2017 1:31:42 下午 org.apache.catalina.core.StandardContext start
    严重: Context [/webhdfs] startup failed due to previous errors
    十月 26, 2017 1:31:42 下午 org.apache.catalina.loader.WebappClassLoader clearReferencesThreads
    严重: The web application [/webhdfs] appears to have started a thread named [FileWatchdog] but has failed to stop it. This is very likely to create a memory leak.

2、这是权限信息的报错:

    {"RemoteException":{"message":"User: root is not allowed to impersonate httpfs","exception":"RemoteException","javaClassName":"org.apache.hadoop.ipc.RemoteException"}}

 错误原因: 估计和两个namenode集群中的配置文件不一致有关系。没有在core-site.xml配那两个配置项。
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值