zoukankan      html  css  js  c++  java
  • 修改cloudera manager的端口号

    最近想在测试机装一个hadoop测试集群debug玩玩,然后就用cloudera manager装吧

    这回使用rpm安装失败了,在网上搜到Cloudera Manager 5和CDH5离线安装说需要用scm_prepare_database.sh去初始化cm的数据库
    然后就索性不用rpm安装,而是直接用tar.gz解压安装

    由于公司不对7180端口放开,而且测试机的iptables命令缺少某些模块导致用不了,无法做端口转发,于是我就跟踪cm-5.10.0/etc/init.d/cloudera-scm-server的shell文件,到cm-5.10.0/share/cmf/bin/cmf-server,看到调用启动了java程序com.cloudera.server.cmf.Main。接着到cm-5.10.0/share/cmf/lib去grep server,找到server-5.10.0.jar,下载到windows本机,修改cm-5.10.0/share/cmf/bin/cmf-server加上调试参数-Xdebug -Xrunjdwp:transport=dt_socket,server=y,address="8282"然后用idea打开远程调试,慢慢走,后来发现还需要下载其他jar包:persist-5.10.0.jar, db-common-5.10.0.jar, commons-dbutils-1.4.jar, 找到打开jetty服务的地方,心想着肯定有初始化端口的地方,后来在com.cloudera.server.cmf.WebServerImpl找到了这段代码:

    int httpPort = ((Long)ScmHandler.getScmConfigValue(ScmParams.HTTP_PORT, stats)).intValue();
    

    ScmParams.HTTP_PORT描述了取得端口号的键是http_port,如果没有这个配置就默认给7180; stats是个map,存放了各种配置,这些配置放在数据库中,用hibernate读出来,数据库、表、数据是用scm_prepare_database.sh创建出来的,其中有个CONFIGS表,插入一条数据就行了

    INSERT INTO `CONFIGS` (`CONFIG_ID`, `ATTR`, `VALUE`, `CONFIG_CONTAINER_ID`) VALUES (4, 'http_port', '8043', 2);
    

    经过docker虚拟机映射出来8001,可以访问了:

  • 相关阅读:
    java中级或者高级面试题分享
    java常使用的框架
    spring的定时器
    ArrayList源码理解
    缓存 Memached
    ORM框架
    Web处理方式
    git使用
    Entity Framework
    .net 学习笔记2
  • 原文地址:https://www.cnblogs.com/lanhj/p/6390088.html
Copyright © 2011-2022 走看看