本页面介绍如何在使用伪认证的Hadoop集群上快速设置HttpFS并采用伪认证方式。
~ $ tar xzf httpfs-3.4.1.tar.gz
默认情况下,HttpFS假定Hadoop配置文件(core-site.xml & hdfs-site.xml)位于HttpFS配置目录中。
如果不是这种情况,请将httpfs.hadoop.config.dir属性添加到httpfs-site.xml文件中,并将其设置为Hadoop配置目录的位置。
编辑Hadoop core-site.xml 并定义将作为代理用户运行HttpFS服务器的Unix用户。例如:
<property>
<name>hadoop.proxyuser.#HTTPFSUSER#.hosts</name>
<value>httpfs-host.foo.com</value>
</property>
<property>
<name>hadoop.proxyuser.#HTTPFSUSER#.groups</name>
<value>*</value>
</property>
重要提示:将#HTTPFSUSER#替换为将要启动HttpFS服务器的Unix用户。
您需要重启Hadoop才能使代理用户配置生效。
要启动/停止HttpFS,请使用hdfs --daemon start|stop httpfs。例如:
hadoop-3.4.1 $ hdfs --daemon start httpfs
注意:脚本 httpfs.sh 已弃用。现在它只是 hdfs httpfs 的一个包装器。
$ curl -sS 'http://<HTTPFSHOSTNAME>:14000/webhdfs/v1?op=gethomedirectory&user.name=hdfs'
{"Path":"\/user\/hdfs"}
HttpFS 预配置HTTP端口为14000。
HttpFS支持在HttpFS的etc/hadoop/httpfs-site.xml配置文件中设置以下配置属性。
在etc/hadoop/httpfs-site.xml中启用SSL:
<property>
<name>httpfs.ssl.enabled</name>
<value>true</value>
<description>
Whether SSL is enabled. Default is false, i.e. disabled.
</description>
</property>
配置 etc/hadoop/ssl-server.xml 文件并设置适当的值,例如:
<property>
<name>ssl.server.keystore.location</name>
<value>${user.home}/.keystore</value>
<description>Keystore to be used. Must be specified.
</description>
</property>
<property>
<name>ssl.server.keystore.password</name>
<value></value>
<description>Must be specified.</description>
</property>
<property>
<name>ssl.server.keystore.keypassword</name>
<value></value>
<description>Must be specified.</description>
</property>
SSL密码可以通过凭证提供程序进行保护。请参阅Credential Provider API。
您需要为HttpFS服务器创建SSL证书。以httpfs Unix用户身份,使用Java keytool命令创建SSL证书:
$ keytool -genkey -alias jetty -keyalg RSA
你将在交互式提示中被询问一系列问题。它将创建密钥库文件,该文件将被命名为.keystore并位于httpfs用户的主目录中。
您为“keystore password”输入的密码必须与配置目录中ssl-server.xml文件内设置的属性ssl.server.keystore.password值相匹配。
“你的名字和姓氏是什么?”(即“CN”)的答案必须是运行HttpFS Server的主机的主机名。
启动HttpFS。它应该通过HTTPS工作。
使用Hadoop的FileSystem API或Hadoop FS shell时,请采用swebhdfs://协议方案。若使用自签名证书,请确保JVM已加载包含SSL证书公钥的信任库。有关客户端设置的更多信息,请参阅SSL Configurations for SWebHDFS。
注意:某些旧版SSL客户端可能使用HttpFS服务器不支持的弱密码套件。建议升级SSL客户端。
以下环境变量已被弃用。请设置相应的配置属性替代。
| 环境变量 | 配置属性 | 配置文件 |
|---|---|---|
| HTTPFS_HTTP_HOSTNAME | httpfs.http.hostname | httpfs-site.xml |
| HTTPFS_HTTP端口 | httpfs.http.port | httpfs-site.xml |
| HTTPFS_MAX_HTTP_HEADER_SIZE | hadoop.http.max.request.header.size 和 hadoop.http.max.response.header.size | httpfs-site.xml |
| HTTPFS最大线程数 | hadoop.http.max.threads | httpfs-site.xml |
| HTTPFS_SSL_ENABLED | httpfs.ssl.enabled | httpfs-site.xml |
| HTTPFS_SSL密钥库文件 | ssl.server.keystore.location | ssl-server.xml |
| HTTPFS_SSL_KEYSTORE_PASS | ssl.server.keystore.password | ssl-server.xml |
| 名称 | 描述 |
|---|---|
| /conf | 显示配置属性 |
| /jmx | Java JMX管理接口 |
| /logLevel | 获取或设置每个类的日志级别 |
| /logs | 显示日志文件 |
| /stacks | 显示JVM堆栈信息 |
| /static/index.html | The static home page |
| /prof | 异步性能分析器端点 |
要控制对servlet /conf、/jmx、/logLevel、/logs、/stacks和/prof的访问权限,请在httpfs-site.xml中配置以下属性:
<property>
<name>hadoop.security.authorization</name>
<value>true</value>
<description>Is service-level authorization enabled?</description>
</property>
<property>
<name>hadoop.security.instrumentation.requires.admin</name>
<value>true</value>
<description>
Indicates if administrator ACLs are required to access
instrumentation servlets (JMX, METRICS, CONF, STACKS, PROF).
</description>
</property>
<property>
<name>httpfs.http.administrators</name>
<value></value>
<description>ACL for the admins, this configuration is used to control
who can access the default servlets for HttpFS server. The value
should be a comma separated list of users and groups. The user list
comes first and is separated by a space followed by the group list,
e.g. "user1,user2 group1,group2". Both users and groups are optional,
so "user1", " group1", "", "user1 group1", "user1,user2 group1,group2"
are all valid (note the leading space in " group1"). '*' grants access
to all users and groups, e.g. '*', '* ' and ' *' are all valid.
</description>
</property>