如何部署Oracle Linux 10.x CMAK?
- By : Will
- Category : Apache-Hadoop
Apache-Hadoop
1 基础知识
2 最佳实践
2.1 软件环境
2.1.1 Kafka集群环境
如果你尚未部署Kafka集群环境,请参阅如下链接,
2.1.2 部署JDK环境
请参阅以下方法安装openJDK 11以上版本,
https://www.cmdschool.org/archives/13105
由于本章不设置环境变量,你可以使用如下命令检查JDK的安装,
/usr/java/jdk-11.0.2/bin/java -version
命令显示如下,
openjdk version "11.0.2" 2019-01-15 OpenJDK Runtime Environment 18.9 (build 11.0.2+9) OpenJDK 64-Bit Server VM 18.9 (build 11.0.2+9, mixed mode)
2.2 安装前的准备
2.2.1 下载软件包
cd ~ wget https://github.com/yahoo/CMAK/releases/download/3.0.0.5/cmak-3.0.0.5.zip
如果需要其他版本,请从以下链接下载,
https://github.com/yahoo/CMAK/releases
2.2.2 解压软件包
cd ~ unzip cmak-3.0.0.5.zip
2.2 部署软件包
2.2.1 配置运行用户
groupadd cmak
useradd -g cmak -d /var/lib/cmak cmak
2.2.2 部署软件包到目录
cd ~
mv cmak-3.0.0.5 /usr/
chown cmak:cmak -R /usr/cmak-3.0.0.5/
chmod 775 -R /usr/cmak-3.0.0.5/
ln -s /usr/cmak-3.0.0.5/conf/ /etc/cmak
ln -s /usr/cmak-3.0.0.5/logs/ /var/log/cmak
mkdir /var/run/cmak
chown cmak:cmak /var/run/cmak
2.2.3 配置环境变量
vim /etc/profile.d/cmak.sh
2.2.1 配置运行用户
groupadd cmak useradd -g cmak -d /var/lib/cmak cmak
2.2.2 部署软件包到目录
cd ~ mv cmak-3.0.0.5 /usr/ chown cmak:cmak -R /usr/cmak-3.0.0.5/ chmod 775 -R /usr/cmak-3.0.0.5/ ln -s /usr/cmak-3.0.0.5/conf/ /etc/cmak ln -s /usr/cmak-3.0.0.5/logs/ /var/log/cmak mkdir /var/run/cmak chown cmak:cmak /var/run/cmak
2.2.3 配置环境变量
vim /etc/profile.d/cmak.sh
输入如下配置,
export CMAK_HOME=/usr/cmak-3.0.0.5
export PATH=${CMAK_HOME}/bin:$PATH
配置完成后,可使用如下命令导入环境变量,
source /etc/profile
然后可以使用如下命令检查环境变量的配置,
cmak -h
可见如下显示,
Usage: [options]
-h | -help print this message
-v | -verbose this runner is chattier
-d | -debug enable debug output for the launcher script
-no-version-check Don't run the java version check.
-main Define a custom main class
-jvm-debug Turn on JVM debugging, open at the given port.
# java version (default: java from PATH, currently java version "1.8.0_121")
-java-home alternate JAVA_HOME
# jvm options and output control
JAVA_OPTS environment variable, if unset uses ""
-Dkey=val pass -Dkey=val directly to the java runtime
-J-X pass option -X directly to the java runtime
(-J is stripped)
# special option
-- To stop parsing built-in commands from the rest of the command-line.
e.g.) enabling debug and sending -d as app argument
$ ./start-script -d -- -d
In the case of duplicated or conflicting options, basically the order above
shows precedence: JAVA_OPTS lowest, command line options highest except "--".
Available main classes:
kafka.manager.utils.one10.LogConfig
kafka.manager.utils.two00.LogConfig
kafka.manager.utils.two40.LogConfig
kafka.manager.utils.zero10.LogConfig
kafka.manager.utils.zero11.LogConfig
kafka.manager.utils.zero90.LogConfig
2.3 配置软件包
2.3.1 修改配置文件
cp /etc/cmak/application.conf /etc/cmak/application.conf.default vim /etc/cmak/application.conf
修改如下参数,
kafka-manager.zkhosts="hd01.cmdschool.org:2181,hd02.cmdschool.org:2181,hd03.cmdschool.org:2181"
#kafka-manager.zkhosts=${?ZK_HOSTS}
cmak.zkhosts="hd01.cmdschool.org:2181,hd02.cmdschool.org:2181,hd03.cmdschool.org:2181"
#cmak.zkhosts=${?ZK_HOSTS}
http.port = 8080
pidfile.path = "/var/run/cmak/cmak.pid"
2.3.2 测试服务运行
su - cmak -c 'JAVA_HOME=/usr/java/jdk-11.0.2;cd /usr/cmak-3.0.0.5/;/usr/cmak-3.0.0.5/bin/cmak -Dconfig.file=/etc/cmak/application.conf'
如果看到如下信息,则启动成功,
#... 2026-03-19 10:32:49,633 - [INFO] k.m.a.KafkaManagerActor - Updating internal state... 2026-03-19 10:32:49,686 - [INFO] p.c.s.AkkaHttpServer - Listening for HTTP on /0:0:0:0:0:0:0:0:8080 #...
看到以上提示后,如果需要结束程序请按下【CTRL+C】即可结束程序,如果需要排错,可以使用如下命令查看日志文件,
tail -f /var/log/cmak/application.log
然后,如果你需要查看启动的进程,请使用如下命令,
pgrep -u cmak java -a
可见如下显示,
216103 /usr/java/jdk-11.0.2/bin/java -Duser.dir=/usr/cmak-3.0.0.5 -Dconfig.file=/etc/cmak/application.conf -Dhttp.port=8080 -cp /usr/cmak-3.0.0.5/lib/../conf/:/usr/cmak-3.0.0.5/lib/cmak.cmak-3.0.0.5-sans-externalized.jar:/usr/cmak-3.0.0.5/lib/org.apache.commons.commons-lang3-3.6.jar:/usr/cmak-3.0.0.5/lib/javax.inject.javax.inject-1.jar:/usr/cmak-3.0.0.5/lib/io.netty.netty-common-4.1.42.Final.jar:/usr/cmak-3.0.0.5/lib/com.fasterxml.jackson.core.jackson-core-2.10.0.jar:/usr/cmak-3.0.0.5/lib/com.fasterxml.jackson.datatype.jackson-datatype-jsr310-2.8.11.jar:/usr/cmak-3.0.0.5/lib/org.scalaz.scalaz-core_2.12-7.2.27.jar:/usr/cmak-3.0.0.5/lib/com.typesafe.play.play_2.12-2.6.21.jar:/usr/cmak-3.0.0.5/lib/io.netty.netty-buffer-4.1.42.Final.jar:/usr/cmak-3.0.0.5/lib/com.yammer.metrics.metrics-core-2.2.0.jar:/usr/cmak-3.0.0.5/lib/com.fasterxml.jackson.datatype.jackson-datatype-jdk8-2.10.0.jar:/usr/cmak-3.0.0.5/lib/org.webjars.requirejs-2.3.5.jar:/usr/cmak-3.0.0.5/lib/org.apache.curator.curator-client-2.12.0.jar:/usr/cmak-3.0.0.5/lib/io.netty.netty-handler-4.1.42.Final.jar:/usr/cmak-3.0.0.5/lib/com.typesafe.play.play-functional_2.12-2.6.12.jar:/usr/cmak-3.0.0.5/lib/commons-codec.commons-codec-1.11.jar:/usr/cmak-3.0.0.5/lib/com.beachape.enumeratum-macros_2.12-1.5.9.jar:/usr/cmak-3.0.0.5/lib/javax.transaction.jta-1.1.jar:/usr/cmak-3.0.0.5/lib/org.webjars.popper.js-1.14.3.jar:/usr/cmak-3.0.0.5/lib/org.json4s.json4s-scalap_2.12-3.6.5.jar:/usr/cmak-3.0.0.5/lib/io.netty.netty-resolver-4.1.42.Final.jar:/usr/cmak-3.0.0.5/lib/com.typesafe.play.play-server_2.12-2.6.21.jar:/usr/cmak-3.0.0.5/lib/org.apache.kafka.connect-json-2.2.0.jar:/usr/cmak-3.0.0.5/lib/org.slf4j.jul-to-slf4j-1.7.25.jar:/usr/cmak-3.0.0.5/lib/org.typelevel.macro-compat_2.12-1.1.1.jar:/usr/cmak-3.0.0.5/lib/org.reactivestreams.reactive-streams-1.0.2.jar:/usr/cmak-3.0.0.5/lib/com.typesafe.play.filters-helpers_2.12-2.6.21.jar:/usr/cmak-3.0.0.5/lib/com.fasterxml.jackson.core.jackson-annotations-2.10.0.jar:/usr/cmak-3.0.0.5/lib/ch.qos.logback.logback-classic-1.2.3.jar:/usr/cmak-3.0.0.5/lib/com.typesafe.play.play-streams_2.12-2.6.21.jar:/usr/cmak-3.0.0.5/lib/org.rocksdb.rocksdbjni-5.15.10.jar:/usr/cmak-3.0.0.5/lib/org.apache.zookeeper.zookeeper-jute-3.5.6.jar:/usr/cmak-3.0.0.5/lib/org.webjars.webjars-play_2.12-2.6.3.jar:/usr/cmak-3.0.0.5/lib/javax.activation.javax.activation-api-1.2.0.jar:/usr/cmak-3.0.0.5/lib/com.google.code.findbugs.jsr305-3.0.2.jar:/usr/cmak-3.0.0.5/lib/org.slf4j.jcl-over-slf4j-1.7.25.jar:/usr/cmak-3.0.0.5/lib/joda-time.joda-time-2.9.9.jar:/usr/cmak-3.0.0.5/lib/io.netty.netty-transport-4.1.42.Final.jar:/usr/cmak-3.0.0.5/lib/com.typesafe.play.build-link-2.6.21.jar:/usr/cmak-3.0.0.5/lib/org.apache.zookeeper.zookeeper-3.5.6.jar:/usr/cmak-3.0.0.5/lib/org.apache.curator.curator-recipes-2.12.0.jar:/usr/cmak-3.0.0.5/lib/org.scala-lang.modules.scala-parser-combinators_2.12-1.1.1.jar:/usr/cmak-3.0.0.5/lib/io.netty.netty-codec-4.1.42.Final.jar:/usr/cmak-3.0.0.5/lib/org.lz4.lz4-java-1.6.0.jar:/usr/cmak-3.0.0.5/lib/org.json4s.json4s-scalaz_2.12-3.6.5.jar:/usr/cmak-3.0.0.5/lib/com.typesafe.play.play-logback_2.12-2.6.21.jar:/usr/cmak-3.0.0.5/lib/org.apache.kafka.kafka-streams-2.2.0.jar:/usr/cmak-3.0.0.5/lib/com.google.guava.guava-23.6.1-jre.jar:/usr/cmak-3.0.0.5/lib/org.scala-lang.scala-reflect-2.12.10.jar:/usr/cmak-3.0.0.5/lib/org.webjars.bootstrap-4.3.1.jar:/usr/cmak-3.0.0.5/lib/com.typesafe.akka.akka-slf4j_2.12-2.5.19.jar:/usr/cmak-3.0.0.5/lib/com.typesafe.play.play-json_2.12-2.6.12.jar:/usr/cmak-3.0.0.5/lib/com.typesafe.play.play-netty-utils-2.6.21.jar:/usr/cmak-3.0.0.5/lib/com.google.j2objc.j2objc-annotations-1.1.jar:/usr/cmak-3.0.0.5/lib/com.typesafe.akka.akka-http-core_2.12-10.0.15.jar:/usr/cmak-3.0.0.5/lib/org.webjars.json-20121008-1.jar:/usr/cmak-3.0.0.5/lib/org.json4s.json4s-ast_2.12-3.6.5.jar:/usr/cmak-3.0.0.5/lib/com.beachape.enumeratum_2.12-1.5.13.jar:/usr/cmak-3.0.0.5/lib/org.clapper.grizzled-slf4j_2.12-1.3.3.jar:/usr/cmak-3.0.0.5/lib/io.netty.netty-transport-native-unix-common-4.1.42.Final.jar:/usr/cmak-3.0.0.5/lib/org.scala-lang.modules.scala-collection-compat_2.12-2.1.2.jar:/usr/cmak-3.0.0.5/lib/com.google.errorprone.error_prone_annotations-2.1.3.jar:/usr/cmak-3.0.0.5/lib/org.webjars.dustjs-linkedin-2.7.2.jar:/usr/cmak-3.0.0.5/lib/com.fasterxml.jackson.module.jackson-module-scala_2.12-2.10.0.jar:/usr/cmak-3.0.0.5/lib/commons-cli.commons-cli-1.4.jar:/usr/cmak-3.0.0.5/lib/com.typesafe.play.play-exceptions-2.6.21.jar:/usr/cmak-3.0.0.5/lib/com.github.ben-manes.caffeine.caffeine-2.6.2.jar:/usr/cmak-3.0.0.5/lib/org.webjars.octicons-4.3.0.jar:/usr/cmak-3.0.0.5/lib/com.fasterxml.jackson.dataformat.jackson-dataformat-csv-2.10.0.jar:/usr/cmak-3.0.0.5/lib/org.webjars.underscorejs-1.9.0.jar:/usr/cmak-3.0.0.5/lib/com.adrianhurt.play-bootstrap-core_2.12-1.4-P26.jar:/usr/cmak-3.0.0.5/lib/org.codehaus.mojo.animal-sniffer-annotations-1.14.jar:/usr/cmak-3.0.0.5/lib/org.xerial.snappy.snappy-java-1.1.7.3.jar:/usr/cmak-3.0.0.5/lib/com.fasterxml.jackson.module.jackson-module-paranamer-2.10.0.jar:/usr/cmak-3.0.0.5/lib/org.checkerframework.checker-compat-qual-2.0.0.jar:/usr/cmak-3.0.0.5/lib/org.apache.kafka.connect-api-2.2.0.jar:/usr/cmak-3.0.0.5/lib/com.typesafe.akka.akka-protobuf_2.12-2.5.19.jar:/usr/cmak-3.0.0.5/lib/com.typesafe.play.twirl-api_2.12-1.3.15.jar:/usr/cmak-3.0.0.5/lib/org.apache.yetus.audience-annotations-0.5.0.jar:/usr/cmak-3.0.0.5/lib/org.slf4j.slf4j-api-1.7.28.jar:/usr/cmak-3.0.0.5/lib/com.typesafe.config-1.3.3.jar:/usr/cmak-3.0.0.5/lib/org.slf4j.log4j-over-slf4j-1.7.25.jar:/usr/cmak-3.0.0.5/lib/org.scala-lang.modules.scala-xml_2.12-1.0.6.jar:/usr/cmak-3.0.0.5/lib/org.json4s.json4s-core_2.12-3.6.5.jar:/usr/cmak-3.0.0.5/lib/org.apache.commons.commons-compress-1.9.jar:/usr/cmak-3.0.0.5/lib/com.typesafe.ssl-config-core_2.12-0.3.6.jar:/usr/cmak-3.0.0.5/lib/com.github.luben.zstd-jni-1.4.3-1.jar:/usr/cmak-3.0.0.5/lib/org.apache.curator.curator-framework-2.12.0.jar:/usr/cmak-3.0.0.5/lib/org.webjars.webjars-locator-0.32-1.jar:/usr/cmak-3.0.0.5/lib/com.typesafe.akka.akka-stream_2.12-2.5.19.jar:/usr/cmak-3.0.0.5/lib/org.scala-lang.modules.scala-java8-compat_2.12-0.9.0.jar:/usr/cmak-3.0.0.5/lib/org.apache.kafka.kafka-clients-2.4.0.jar:/usr/cmak-3.0.0.5/lib/com.thoughtworks.paranamer.paranamer-2.8.jar:/usr/cmak-3.0.0.5/lib/org.json4s.json4s-jackson_2.12-3.6.5.jar:/usr/cmak-3.0.0.5/lib/com.typesafe.akka.akka-parsing_2.12-10.0.15.jar:/usr/cmak-3.0.0.5/lib/org.apache.kafka.kafka_2.12-2.4.0.jar:/usr/cmak-3.0.0.5/lib/org.webjars.jquery-3.3.1-2.jar:/usr/cmak-3.0.0.5/lib/javax.xml.bind.jaxb-api-2.3.1.jar:/usr/cmak-3.0.0.5/lib/org.webjars.backbonejs-1.3.3.jar:/usr/cmak-3.0.0.5/lib/io.netty.netty-transport-native-epoll-4.1.42.Final.jar:/usr/cmak-3.0.0.5/lib/net.sf.jopt-simple.jopt-simple-5.0.4.jar:/usr/cmak-3.0.0.5/lib/com.typesafe.scala-logging.scala-logging_2.12-3.9.2.jar:/usr/cmak-3.0.0.5/lib/com.adrianhurt.play-bootstrap_2.12-1.4-P26-B4.jar:/usr/cmak-3.0.0.5/lib/com.typesafe.play.play-akka-http-server_2.12-2.6.21.jar:/usr/cmak-3.0.0.5/lib/com.unboundid.unboundid-ldapsdk-4.0.9.jar:/usr/cmak-3.0.0.5/lib/ch.qos.logback.logback-core-1.2.3.jar:/usr/cmak-3.0.0.5/lib/org.webjars.webjars-locator-core-0.35.jar:/usr/cmak-3.0.0.5/lib/io.jsonwebtoken.jjwt-0.7.0.jar:/usr/cmak-3.0.0.5/lib/org.scala-lang.scala-library-2.12.10.jar:/usr/cmak-3.0.0.5/lib/com.typesafe.akka.akka-actor_2.12-2.5.19.jar:/usr/cmak-3.0.0.5/lib/com.fasterxml.jackson.core.jackson-databind-2.10.0.jar:/usr/cmak-3.0.0.5/lib/cmak.cmak-3.0.0.5-assets.jar play.core.server.ProdServerStart
可使用如下命令查看倾听的端口,
ss -antp | grep -f<(pgrep -u cmak java)
可见如下显示,
LISTEN 0 100 *:8080 *:* users:(("java",pid=216103,fd=128))
ESTAB 0 0 [::ffff:10.168.0.101]:59706 [::ffff:10.168.0.103]:2181 users:(("java",pid=216103,fd=123))
根据以上端口需要,你可能需要执行命令添加如下端口,
firewall-cmd --permanent --add-port 8080/tcp firewall-cmd --reload firewall-cmd --list-all
2.3.3 配置服务启动
vim /etc/systemd/system/cmak.service
加入如下脚本,
[Unit] Description=CMAK Service After=syslog.target network.target [Service] Type=simple User=cmak Group=cmak Environment="JAVA_HOME=/usr/java/jdk-11.0.2" WorkingDirectory=/usr/cmak-3.0.0.5 ExecStartPre=+/usr/bin/sh -c 'mkdir -p /var/run/cmak;chown cmak:cmak /var/run/cmak;chmod 775 /var/run/cmak' ExecStart=/usr/cmak-3.0.0.5/bin/cmak -Dconfig.file=/etc/cmak/application.conf ExecStop=/usr/bin/kill -SIGINT $MAINPID PIDFile=/var/run/cmak/cmak.pid Restart=on-success RestartSec=5 [Install] WantedBy=multi-user.target
保存配置后,你需要重载服务使配置生效,
systemctl daemon-reload
然后,请使用如下命令启动服务并设置自启动,
systemctl start cmak.service systemctl status cmak.service systemctl enable cmak.service
2.3.4 登录管理页面
http://cmak.cmdschool.org:8080
由于界面配置相对简单,详细的配置请自行摸索,本章不再详述,另外如下错误需要注意,
没有评论