本页面介绍如何在使用伪认证的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>