docker搭建cdh单机模拟环境

出于学习研究的需要,需要在我的机器上搭建一个cdh环境,自从转投docker之后,就很少用vmware等虚拟机了,所以尝试着用docker去搭一套cdh环境。以下是具体步骤。

  • 拉取cdh镜像

    1
    docker pull cloudera/quickstart
  • 启动容器

    1
    docker run --name cdh -d --hostname=quickstart.cloudera --privileged=true -t -i -p 8888:8888 -p 8020:8020 -p 8022:8022 -p 7180:7180 -p 21050:21050 -p 50070:50070 -p 50075:50075 -p 50010:50010 -p 50020:50020 -p 8890:8890 -p 60010:60010 -p 10002:10002 -p 25010:25010 -p 25020:25020 -p 18088:18088 -p 8088:8088 -p 19888:19888 -p 7187:7187 -p 11000:11000 cloudera/quickstart /usr/bin/docker-quickstart

    参数解释:

    • —hostname:cdh5分布式指定一个域名

    • —privileged:给予容器内的root用户以真正的root权限

    • -t -i:让docker分配一个伪终端并绑定到容器的标准输入上并保持打开

    • CDH全家桶端口众多,端口的用途参看下表,按需开放

      | 组件 | 端口号 | 端口用途 |
      | ——————————————- | ——— | ———————————————————————————— |
      | Cloudera Management Service | 8087 | Activity Monitor Web UI 端口 |
      | Cloudera Management Service | 9999 | Activity Monitor 侦听端口 |
      | Cloudera Management Service | 9998 | Activity Monitor 喷嘴端口 |
      | Cloudera Management Service | 10101 | 警报:侦听端口 |
      | Cloudera Management Service | 7184 | 事件发布端口 |
      | Cloudera Management Service | 7185 | 事件查询端口 |
      | Cloudera Management Service | 8084 | Event Server Web UI 端口 |
      | Cloudera Management Service | 8091 | Host Monitor Web UI 端口 |
      | Cloudera Management Service | 9995 | Host Monitor 侦听端口 |
      | Cloudera Management Service | 9994 | Host Monitor 喷嘴端口 |
      | Cloudera Management Service | 7186 | Navigator 审核服务器端口 |
      | Cloudera Management Service | 8089 | Navigator Audit Server Web UI 端 |
      | Cloudera Management Service | 7187 | Navigator Metadata Server 端口 |
      | Cloudera Management Service | 5678 | Reports Manager 服务器端口 |
      | Cloudera Management Service | 8083 | Reports Manager Web UI 端口 |
      | Cloudera Management Service | 8086 | Service Monitor Web UI 端口 |
      | Cloudera Management Service | 9997 | Service Monitor 侦听端口 |
      | Cloudera Management Service | 9996 | Service Monitor 喷嘴端口 |
      | zookeeper | 2181 | 客户端端口 |
      | zookeeper | 3181 | 仲裁端口 |
      | zookeeper | 4181 | 选举端口 |
      | zookeeper | 9010 | JMX 远程端口 |
      | yarn | 10020 | MapReduce JobHistory Server 端口 |
      | yarn | 19888 | MapReduce JobHistory Web 应用程序 HTTP 端口 |
      | yarn | 19890 | MapReduce JobHistory Web 应用程序 HTTPS 端口 (TLS/SSL) |
      | yarn | 10033 | MapReduce JobHistory Server 管理接口端口 |
      | yarn | 8042 | NodeManager Web 应用程序 HTTP 端口 |
      | yarn | 8044 | NodeManager Web 应用程序 HTTPS 端口 (TLS/SSL) |
      | yarn | 8041 | NodeManager IPC 地址 |
      | yarn | 8040 | Localizer 端口 |
      | yarn | 8032 | ResourceManager 地址 |
      | yarn | 8030 | 调度程序地址 |
      | yarn | 8031 | 资源追踪器地址 |
      | yarn | 8033 | 管理地址 |
      | yarn | 8088 | ResourceManager Web 应用程序 HTTP 端口 |
      | yarn | 8090 | ResourceManager Web 应用程序 HTTPS 端口 (TLS/SSL) |
      | Kafka | 9092 | TCP Port |
      | Kafka | 9393 | JMX Port |
      | Kafka | 9394 | |
      | Kafka | 9093 | TLS/SSL Port |
      | Kafka | 24042 | HTTP Metric Report Port |
      | Hive | 9083 | Hive Metastore 服务器端口 |
      | Hive | 10000 | HiveServer2 端口 |
      | Hive | 10002 | HiveServer2 WebUI Port |
      | Hive | 50111 | WebHCat Server 端口 |
      | HDFS | 50020 | DataNode 协议端口 |
      | HDFS | 50010 | DataNode 收发器端口 |
      | HDFS | 50075 | DataNode HTTP Web UI 端口 |
      | HDFS | 50475 | 安全 DataNode Web UI 端口 (TLS/SSL) |
      | HDFS | 14000 | REST 端口 |
      | HDFS | 14001 | 管理端口 |
      | HDFS | 8485 | JournalNode RPC 端口 |
      | HDFS | 8480 | JournalNode HTTP 端口 |
      | HDFS | 8481 | 安全 JournalNode Web UI 端口 (TLS/SSL) |
      | HDFS | 2049 | NFS Gateway 服务器端口 |
      | HDFS | 4242 | NFS Gateway MountD 端口 |
      | HDFS | 111 | 端口映射(或 Rpcbind)端口 |
      | HDFS | 8020 | NameNode 端口 |
      | HDFS | 8022 | NameNode 服务 RPC 端口 |
      | HDFS | 50070 | NameNode Web UI 端口 |
      | HDFS | 50470 | 安全 NameNode Web UI 端口 (TLS/SSL) |
      | HDFS | 50090 | SecondaryNameNode Web UI 端口 |
      | HDFS | 50495 | 安全 SecondaryNameNode Web UI 端口 (TLS/SSL) |
      | Hbase | 20550 | HBase REST 服务器端口 |
      | Hbase | 8085 | HBase REST Server Web UI 端口 |
      | Hbase | 9090 | HBase Thrift 服务器端口 |
      | Hbase | 9095 | HBase Thrift 服务器 Web UI 端口 |
      | Hbase | 60000 | HBase Master 端口 |
      | Hbase | 60010 | HBase Master Web UI 端口 |
      | Hbase | 60020 | HBase Region Server 端口 |
      | Hbase | 60030 | HBase Region Server Web UI 端口 |
      | spark | 7337 | Spark Shuffle Service Port |
      | spark | 18088 | History Server WebUI Port |
      | oozie | 11000 | Oozie HTTP 端口 |
      | oozie | 11001 | Oozie 管理端口 |
      | oozie | 25 | Oozie 电子邮件操作 SMTP 端口 |
      | Solr | 8983 | Solr HTTP 端口 |
      | Solr | 8984 | Solr 管理端口 |
      | Hue | 8888 | Hue HTTP端口 |

  • 启动cm服务

    1
    /home/cloudera/cloudera-manager --express --force

    在docker内部输入命令启动cm。这一步很慢要耐心等待,最后访问http://127.0.0.1:7180进入cm管理页面,如果页面里提示时钟偏差,那么需要在容器里开启ntp

    1
    service ntpd start
  • 验证

    在cm里启动hdfs,hive,均能成功启停。通过http://127.0.0.1:50070/查看hdfs namenode情况。