用于测试管理Hadoop集群的命令行界面
项目描述
为在Hadoop集群上测试代码而提供的docker化设置。
安装
hadoop-test-cluster 可在PyPI上找到
$ pip install hadoop-test-cluster
您也可以从github的源代码进行安装
$ pip install git+https://github.com/jcrist/hadoop-test-cluster.git
概述
为了测试目的,提供了一种使用docker设置迷你Hadoop集群的基础设施。提供了两种基本镜像
cdh5:提供Hadoop 2.6的CDH5安装
cdh6:提供Hadoop 3.0的CDH6安装
这两个镜像都可以使用两种不同的配置运行
simple:使用simple身份验证(Unix用户权限)
kerberos 使用kerberos进行身份验证
每个集群都有三个容器
一个运行hdfs-namenode和yarn-resourcemanager以及Kerberos守护进程的master节点。
一个运行hdfs-datanode和yarn-nodemanager的worker节点
一个用于与集群交互的edge节点
还创建了一个用户账户用于测试目的
登录: testuser
密码: testpass
对于kerberos设置,此用户的关键表已放置在/home/testuser/testuser.keytab,因此您可以像kinit -kt /home/testuser/testuser.keytab testuser一样轻松地进行kinit
还创建了一个用于与kadmin一起使用的管理员Kerberos主名称
登录: admin/admin
密码: adminpass
端口
完整地址取决于您的docker-machine驱动程序的IP地址,可以在以下位置找到
$ docker-machine inspect --format {{.Driver.IPAddress}})
NameNode RPC: 9000
NameNode Webui: 50070
ResourceManager Webui: 8088
Kerberos KDC: 88
kerberos Kadmin: 749
DataNode 网页界面: 50075
NodeManager 网页界面: 8042
htcluster 命令行工具
要使用任一集群,请使用 htcluster 工具。这是一个围绕 docker-compose 的薄包装,包含快速执行大多数常见操作的实用程序。
$ htcluster --help
usage: htcluster [--help] [--version] command ...
Manage hadoop test clusters
positional arguments:
command
startup Start up a hadoop cluster.
login Login to a node in the cluster.
exec Execute a command on the node as a user
shutdown Shutdown the cluster and remove the containers.
compose Forward commands to docker-compose
kerbenv Output environment variables to setup kerberos locally. Intended
use is to eval the output in bash: eval $(htcluster kerbenv)
optional arguments:
--help, -h Show this help message then exit
--version Show version then exit
启动集群
以简单身份验证启动 CDH5 集群
$ htcluster startup --image cdh5 --config simple
以 kerberos 身份验证启动 CDH6 集群
$ htcluster startup --image cdh6 --config kerberos
启动集群,将当前目录挂载到 ~/workdir
$ htcluster startup --image cdh5 --mount .:workdir
登录到边缘节点
$ htcluster login
作为边缘节点上的用户运行命令
$ htcluster exec -- myscript.sh some other args
关闭集群
$ htcluster shutdown
从 Docker 外部使用 Kerberos 进行身份验证
在 kerberized 集群中,webui 由 kerberos 保护,因此除非您正确配置 kerberos,否则您的浏览器无法访问。这是可行的,但需要几个步骤
Kerberos/SPNEGO 要求请求的 URL 与主机域名匹配。最简单的方法是修改您的 /etc/hosts 并添加一行 master.example.com
# Add a line to /etc/hosts pointing master.example.com to your docker-machine # driver ip address. # Note that you probably need to run this command as a super user. $ echo "$(docker-machine inspect --format {{.Driver.IPAddress}}) master.example.com" >> /etc/hosts
您必须在本地安装 kinit。您可能已经安装了它,否则它通常可以通过大多数软件包管理器获得。
您需要告诉 kerberos 该域的 krb5.conf 的位置。这通过一个环境变量完成。为了方便起见,htcluster 有一个命令来做这件事
$ eval $(htcluster kerbenv)
此时,您应该能够以 testuser 身份运行 kinit
$ kinit testuser@EXAMPLE.COM
要访问浏览器中的 kerberos 保护的页面,您需要进行一些(简单的)配置。请参阅 [Cloudera 的此文档](https://www.cloudera.com/documentation/enterprise/5-9-x/topics/cdh_sg_browser_access_kerberos_protected_url.html),了解您浏览器所需的配置信息。
由于环境变量仅适用于在环境中启动的进程,您有以下三种选择
从添加了环境变量的外壳中重新启动浏览器
手动为 HTTP/master.example.com 实体获取票据。请注意,这将删除您的其他票据,但如果您只想查看网页,则工作正常
$ kinit -S HTTP/master.example.com testuser
使用 curl 进行首次身份验证,此时您缓存中已有适当的票据,浏览器身份验证将正常工作。请注意,您的 curl 版本必须支持 GSS-API。
$ curl -V # Check your version of curl supports GSS-API curl 7.59.0 (x86_64-apple-darwin17.2.0) libcurl/7.59.0 SecureTransport zlib/1.2.11 Release-Date: 2018-03-14 Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtsp smb smbs smtp smtps telnet tftp Features: AsynchDNS IPv6 Largefile GSS-API Kerberos SPNEGO NTLM NTLM_WB SSL libz UnixSockets $ curl --negotiate -u : http://master.example.com:50070 # get a HTTP ticket for master.example.com
执行上述操作之一后,您应该能够从浏览器访问任何页面。
项目详情
下载文件
下载适合您平台的项目文件。如果您不确定选择哪个,请了解有关 安装包 的更多信息。
源分布
构建分布
哈希值 for hadoop_test_cluster-0.1.0-py2.py3-none-any.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 91f272e237e35d2328a435e49357e146f29ac5641663f158445786f10ddee52b |
|
MD5 | da2b95ded520a6807b7ead531d76143c |
|
BLAKE2b-256 | 35dab00b1afc5f343cac01eef31171c228e829e25c85aee8f21a6193165abb49 |