本篇文章介绍了如何快速建立一个带Pseudo认证的HttpFS。
默认情况下,HttpFS假设Hadoop的配置文件(core-site.xml & hdfs-site.xml)在HttpFS配置目录中。
如果文件不在,增加 httpfs-site.xml文件,然后用httpfs.hadoop.config.dir属性设置本地的Hadoop配置文件目录。
【HttpFS服务器不一定在已存在的Hadoop集中的节点上?】
编辑Hadoop core-site.xml文件,将要运行HttpFS服务器的Unix 用户作为代理用户。例如:
重要的:使用将要用来启动HttpFS Server的Unix用户代替#HTTPFSUSER#。
你需要重新启动Hadoop以使代理用户配置生效。
使用bin/httpfs.sh 脚本启动/停止HttpFS。例如:
注意:不用任何参数调用这个脚本将列出所有可用的参数(start,stop,run等等)。Httpfs.sh脚本是tomcat的catalina.sh脚本的封装,在运行tomcat之前设置了环境变量和运行HttpFS Server 的java系统需求。
- ~ $ curl -i "http://<HTTPFSHOSTNAME>:14000?user.name=babu&op=homedir"
- HTTP/1.1 200 OK
- Content-Type: application/json
- Transfer-Encoding: chunked
- {"homeDir":"http:\/\/<HTTPFS_HOST>:14000\/user\/babu"}
可以在tomcat/conf中配置内置的tomcat。
HttpFS在server.xml文件中预配置了HTTP端口14000和Admin端口14001。
Tomcat的日志预配置在HttpFS的logs/目录中。
下面是用到的环境变量(需要设置在HttpFS的conf/httpfs-env.sh脚本中):
HttFS支持doc/hadoop/hadoop-hdfs-httpfs/httpfs-default.html中所列出的属性,可以配置在HttpFS的配置目录conf/httpfs-site.xml配置文件中。
将配置文件目录中的httpfs-env.sh文件中的HTTPFS_SSL_ENABLED设置为true可以配置HttpFS工作在SSL之上。
此外,下面的两个属性可以被设置(显示的是默认值):
在HttpFS的tomcat/conf目录中,用ssl_server.xml文件替换server.xml文件。
你需要为HttpFS服务器创建一个SSL证书。就像httpfsUnix用户,使用java keytool命令创建一个SSL证书:
在这个命令的交互过程中,你将会被问一些问题。它将创建keystore 文件,这个文件将被命名为.keystore ,存放在httpfs用户目录下边。
你为keystorepassword输入的密码密闭匹配环境变量HTTPFS_SSL_KEYSTORE_PASS的值,这个环境变量在httpfs-env.sh脚本中设置。
What is your first and last name? 这个问题的答案必须是运行HttpFS Server的机器的hostname。
这时启动HttpFS,应该工作在HTTPS上。
使用Hadoop文件系统API或者Hadoop FS Shell的时候,用swebhdfs://scheme。如果使用自签名的证书的话,确认JVM是拥有包括SSL证书的公钥。