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

  • 拉取cdh镜像

    docker pull cloudera/quickstart
  • 启动容器

    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服务

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

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

    service ntpd start
  • 验证

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