用于管理用于测试的hadoop集群的cli

hadoop-test-cluster的Python项目详细描述


pypicdh5cdh6

用于在Hadoop集群上测试代码的停靠设置。

安装

hadoop-test-cluster在pypi上可用:

$ pip install hadoop-test-cluster

您也可以从github上的源代码安装:

$ pip install git+https://github.com/jcrist/hadoop-test-cluster.git

概述

为了进行测试,使用 这里有码头工人。提供两个基本图像:

  • cdh5:提供了hadoop 2.6的cdh5安装
  • cdh6:提供了hadoop 3.0的cdh6安装

两个图像都可以使用两种不同的配置运行:

  • simple:使用simple身份验证(Unix用户权限)
  • kerberos使用kerberos进行身份验证

每个群集有三个容器:

  • 一个master节点运行hdfs-namenodeyarn-resourcemanager,以及kerberos守护进程。
  • 一个worker节点运行hdfs-datanodeyarn-nodemanager
  • 一个edge节点,用于与群集进行交互

还为测试目的创建了一个用户帐户:

  • 登录:testuser
  • 密码:testpass

对于kerberos设置,已在 /home/testuser/testuser.keytab,所以您可以很容易地进行扭结,比如kinit -kt /home/testuser/testuser.keytab testuser

还创建了一个管理员kerberos主体,用于kadmin

  • 登录:admin/admin
  • 密码:adminpass

端口

完整地址取决于Docker机器驱动程序的IP地址, 可在以下网址找到:

$ docker-machine inspect --format {{.Driver.IPAddress}})
  • 名称节点rpc:9000
  • namenode webui:50070
  • 资源管理器WebUI:8088
  • kerberos kdc:88
  • kerberos kadmin:749
  • 数据节点WebUI:50075
  • nodemanager webui: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,否则可以从浏览器访问。这是 可行,但需要几步:

  1. 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
    
  2. 必须在本地安装kinit。你可能已经有了,否则 它可以通过大多数包管理器获得。

  3. 您需要告诉kerberos这个域的krb5.conf在哪里。这是 使用环境变量完成。为了方便起见,htcluster有一个 命令执行此操作:

    $eval$(htcluster kerbenv)
  4. 此时,您应该能够以testuser的身份进行kinit:

    $ kinit testuser@EXAMPLE.COM
    
  5. 要在浏览器中访问kerberos安全页,您需要执行以下操作 (简单)配置。参见本文档 云时代](https://www.cloudera.com/documentation/enterprise/5-9-x/topics/cdh_sg_browser_access_kerberos_protected_url.html) 有关浏览器所需内容的信息。

  6. 因为环境变量只对在 环境,这里有三个选项:

    • 从添加环境的shell重新启动浏览器 变量

    • 手动获取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

    在完成这些操作后,您应该能够访问 你的浏览器。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
在java中将字符串转换为音频输入   java如何使用Spring Boot RestTemplate解组json列表   计算机上C++ OpenCV项目转换为OpenCV Android的java步骤   Java Spring Telegraf数据表不工作   openurlconnection与connect之间的java差异?   java Solr字段搜索、通配符和转义字符   java如何使用DLFolderLocalServiceUtil类的getFolders()方法?   尝试用Java编写文件   java连续双缓冲解决方案不起作用   两个数组的Java乘积   java Jackson,如何正确编写自定义反序列化程序   java将布尔标志按一定顺序排列以获得更好的性能是否有意义   java Vaadin无缓冲网格无法关闭   java在MySQL中以同一用户身份同时从不同客户端登录安全吗?   java如何使用安卓asynchttp库   java无法在Android中使用AlarmManager停止服务   java在Hibernate的XML配置文件中指定默认值   Spring启动应用程序中的java内存SQLITE不工作   Java代码无法写入文本文件,