This is an automated email from the ASF dual-hosted git repository.

wuzhiguo pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/bigtop-manager.git


The following commit(s) were added to refs/heads/main by this push:
     new c7611383 BIGTOP-4264: Adjust cluster create command (#103)
c7611383 is described below

commit c7611383c2a5b7141c8b8a11ad07c502b2bfcb88
Author: Zhiguo Wu <[email protected]>
AuthorDate: Wed Nov 13 13:28:11 2024 +0800

    BIGTOP-4264: Adjust cluster create command (#103)
---
 .../agent/executor/AbstractCommandExecutor.java    |  1 -
 .../executor/CacheFileUpdateCommandExecutor.java   |  3 +-
 .../src/main/resources/application.yml             | 13 ++----
 .../manager/common/config/ApplicationConfig.java   |  9 +---
 .../common/config/application/GrpcConfig.java      | 27 ------------
 .../common/message/entity/payload/BasePayload.java |  4 +-
 .../bigtop/manager/dao/po/HostComponentPO.java     |  4 ++
 .../org/apache/bigtop/manager/dao/po/JobPO.java    |  8 ++--
 .../org/apache/bigtop/manager/dao/po/StagePO.java  | 16 ++++----
 .../org/apache/bigtop/manager/dao/po/TaskPO.java   | 36 +++++++---------
 .../main/resources/mapper/mysql/ClusterMapper.xml  |  4 +-
 .../resources/mapper/mysql/HostComponentMapper.xml |  2 +-
 .../mapper/postgresql/HostComponentMapper.xml      |  2 +-
 .../src/main/resources/proto/command.proto         |  8 ++--
 .../command/factory/host/HostAddJobFactory.java    | 48 ----------------------
 .../server/command/job/AbstractServiceJob.java     |  5 ---
 .../server/command/job/ClusterCreateJob.java       |  2 +-
 .../command/stage/AbstractComponentStage.java      |  7 ++--
 .../server/command/stage/AbstractStage.java        | 12 ++++--
 .../server/command/stage/CacheFileUpdateStage.java | 27 ++++--------
 .../server/command/stage/ComponentCheckStage.java  |  5 ++-
 .../command/stage/ComponentConfigureStage.java     |  5 ++-
 .../command/stage/ComponentInstallStage.java       |  5 ++-
 .../server/command/stage/ComponentStartStage.java  |  5 ++-
 .../server/command/stage/ComponentStopStage.java   |  5 ++-
 .../server/command/stage/HostCheckStage.java       | 20 ++-------
 .../manager/server/command/stage/StageContext.java | 21 ++--------
 .../server/command/task/AbstractComponentTask.java |  4 --
 .../manager/server/command/task/AbstractTask.java  |  8 ++--
 .../server/command/task/CacheFileUpdateTask.java   | 14 +------
 .../server/command/task/ComponentCheckTask.java    |  3 +-
 .../command/task/ComponentConfigureTask.java       |  3 +-
 .../server/command/task/ComponentInstallTask.java  |  5 ++-
 .../server/command/task/ComponentStartTask.java    |  5 ++-
 .../server/command/task/ComponentStopTask.java     |  5 ++-
 .../manager/server/command/task/HostCheckTask.java |  5 +--
 .../manager/server/command/task/TaskContext.java   |  7 +---
 .../command/validator/ClusterCreateValidator.java  |  2 +-
 .../bigtop/manager/server/grpc/GrpcClient.java     | 24 ++++-------
 .../server/model/converter/HostConverter.java      | 10 +++--
 .../bigtop/manager/server/model/dto/HostDTO.java   |  7 ++++
 .../server/scheduler/ComponentStatusScheduler.java |  4 +-
 .../server/scheduler/HostInfoScheduler.java        |  5 ++-
 .../server/service/impl/CommandServiceImpl.java    | 12 ++----
 .../server/service/impl/HostServiceImpl.java       |  4 +-
 .../server/service/impl/JobServiceImpl.java        |  4 +-
 .../server/service/impl/TaskLogServiceImpl.java    | 11 ++++-
 .../src/main/resources/application.yml             |  5 ---
 .../src/main/resources/ddl/MySQL-DDL-CREATE.sql    |  4 +-
 .../main/resources/ddl/PostgreSQL-DDL-CREATE.sql   |  4 +-
 50 files changed, 159 insertions(+), 300 deletions(-)

diff --git 
a/bigtop-manager-agent/src/main/java/org/apache/bigtop/manager/agent/executor/AbstractCommandExecutor.java
 
b/bigtop-manager-agent/src/main/java/org/apache/bigtop/manager/agent/executor/AbstractCommandExecutor.java
index a295d21f..a0412805 100644
--- 
a/bigtop-manager-agent/src/main/java/org/apache/bigtop/manager/agent/executor/AbstractCommandExecutor.java
+++ 
b/bigtop-manager-agent/src/main/java/org/apache/bigtop/manager/agent/executor/AbstractCommandExecutor.java
@@ -52,7 +52,6 @@ public abstract class AbstractCommandExecutor implements 
CommandExecutor {
             log.error("Run command failed, {}", request, e);
         }
 
-        commandReplyBuilder.setHostname(request.getHostname());
         commandReplyBuilder.setTaskId(request.getTaskId());
         return commandReplyBuilder.build();
     }
diff --git 
a/bigtop-manager-agent/src/main/java/org/apache/bigtop/manager/agent/executor/CacheFileUpdateCommandExecutor.java
 
b/bigtop-manager-agent/src/main/java/org/apache/bigtop/manager/agent/executor/CacheFileUpdateCommandExecutor.java
index 11528691..28fd8ae5 100644
--- 
a/bigtop-manager-agent/src/main/java/org/apache/bigtop/manager/agent/executor/CacheFileUpdateCommandExecutor.java
+++ 
b/bigtop-manager-agent/src/main/java/org/apache/bigtop/manager/agent/executor/CacheFileUpdateCommandExecutor.java
@@ -80,7 +80,6 @@ public class CacheFileUpdateCommandExecutor extends 
AbstractCommandExecutor {
         JsonUtils.writeToFile(cacheDir + CLUSTER_INFO, 
cacheMessagePayload.getClusterInfo());
 
         commandReplyBuilder.setCode(MessageConstants.SUCCESS_CODE);
-        commandReplyBuilder.setResult(
-                MessageFormat.format("Host [{0}] cached successful!!!", 
commandRequest.getHostname()));
+        commandReplyBuilder.setResult("Successfully cached files");
     }
 }
diff --git a/bigtop-manager-agent/src/main/resources/application.yml 
b/bigtop-manager-agent/src/main/resources/application.yml
index 41356a20..ee8a251e 100644
--- a/bigtop-manager-agent/src/main/resources/application.yml
+++ b/bigtop-manager-agent/src/main/resources/application.yml
@@ -17,11 +17,6 @@
 # under the License.
 #
 
-bigtop:
-  manager:
-    grpc:
-      port: 8835
-
 spring:
   banner:
     charset: utf-8
@@ -30,13 +25,13 @@ spring:
   main:
     banner-mode: log
 
-grpc:
-  server:
-    port: ${bigtop.manager.grpc.port}
-
 server:
   port: 8081
 
+grpc:
+  server:
+    port: 8835
+
 logging:
   level:
     org:
diff --git 
a/bigtop-manager-common/src/main/java/org/apache/bigtop/manager/common/config/ApplicationConfig.java
 
b/bigtop-manager-common/src/main/java/org/apache/bigtop/manager/common/config/ApplicationConfig.java
index 80e1d9e8..77d8ab58 100644
--- 
a/bigtop-manager-common/src/main/java/org/apache/bigtop/manager/common/config/ApplicationConfig.java
+++ 
b/bigtop-manager-common/src/main/java/org/apache/bigtop/manager/common/config/ApplicationConfig.java
@@ -18,10 +18,7 @@
  */
 package org.apache.bigtop.manager.common.config;
 
-import org.apache.bigtop.manager.common.config.application.GrpcConfig;
-
 import org.springframework.boot.context.properties.ConfigurationProperties;
-import org.springframework.boot.context.properties.NestedConfigurationProperty;
 import org.springframework.context.annotation.Configuration;
 
 import lombok.Data;
@@ -29,8 +26,4 @@ import lombok.Data;
 @Data
 @Configuration
 @ConfigurationProperties(prefix = "bigtop.manager")
-public class ApplicationConfig {
-
-    @NestedConfigurationProperty
-    private GrpcConfig grpc;
-}
+public class ApplicationConfig {}
diff --git 
a/bigtop-manager-common/src/main/java/org/apache/bigtop/manager/common/config/application/GrpcConfig.java
 
b/bigtop-manager-common/src/main/java/org/apache/bigtop/manager/common/config/application/GrpcConfig.java
deleted file mode 100644
index 4f6c774a..00000000
--- 
a/bigtop-manager-common/src/main/java/org/apache/bigtop/manager/common/config/application/GrpcConfig.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *    https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.bigtop.manager.common.config.application;
-
-import lombok.Data;
-
-@Data
-public class GrpcConfig {
-
-    private Integer port;
-}
diff --git 
a/bigtop-manager-common/src/main/java/org/apache/bigtop/manager/common/message/entity/payload/BasePayload.java
 
b/bigtop-manager-common/src/main/java/org/apache/bigtop/manager/common/message/entity/payload/BasePayload.java
index 79475070..b1faa21e 100644
--- 
a/bigtop-manager-common/src/main/java/org/apache/bigtop/manager/common/message/entity/payload/BasePayload.java
+++ 
b/bigtop-manager-common/src/main/java/org/apache/bigtop/manager/common/message/entity/payload/BasePayload.java
@@ -20,8 +20,10 @@ package 
org.apache.bigtop.manager.common.message.entity.payload;
 
 import lombok.Data;
 
+import java.util.UUID;
+
 @Data
 public class BasePayload {
 
-    private String hostname;
+    private final String requestId = 
UUID.randomUUID().toString().replaceAll("-", "");
 }
diff --git 
a/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/po/HostComponentPO.java
 
b/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/po/HostComponentPO.java
index accf5d38..0ac214b8 100644
--- 
a/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/po/HostComponentPO.java
+++ 
b/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/po/HostComponentPO.java
@@ -92,4 +92,8 @@ public class HostComponentPO extends BasePO implements 
Serializable {
     @Transient
     @Column(name = "hostname")
     private String hostname;
+
+    @Transient
+    @Column(name = "grpc_port")
+    private Integer grpcPort;
 }
diff --git 
a/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/po/JobPO.java 
b/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/po/JobPO.java
index 22938e28..d787c3ff 100644
--- 
a/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/po/JobPO.java
+++ 
b/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/po/JobPO.java
@@ -25,7 +25,6 @@ import lombok.ToString;
 import jakarta.persistence.Column;
 import jakarta.persistence.Id;
 import jakarta.persistence.Lob;
-import jakarta.persistence.OneToMany;
 import jakarta.persistence.Table;
 import java.io.Serializable;
 import java.util.List;
@@ -39,9 +38,6 @@ public class JobPO extends BasePO implements Serializable {
     @Column(name = "id")
     private Long id;
 
-    @Column(name = "state", nullable = false)
-    private String state;
-
     @Column(name = "name")
     private String name;
 
@@ -49,10 +45,12 @@ public class JobPO extends BasePO implements Serializable {
     @Column(name = "context", nullable = false)
     private String context;
 
+    @Column(name = "state", nullable = false)
+    private String state;
+
     @Column(name = "cluster_id")
     private Long clusterId;
 
     @ToString.Exclude
-    @OneToMany(mappedBy = "jobPO")
     private List<StagePO> stages;
 }
diff --git 
a/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/po/StagePO.java
 
b/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/po/StagePO.java
index dd17195c..b2f8cdaf 100644
--- 
a/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/po/StagePO.java
+++ 
b/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/po/StagePO.java
@@ -40,12 +40,6 @@ public class StagePO extends BasePO implements Serializable {
     @Column(name = "name", nullable = false)
     private String name;
 
-    @Column(name = "state", nullable = false)
-    private String state;
-
-    @Column(name = "order")
-    private Integer order;
-
     @Column(name = "service_name")
     private String serviceName;
 
@@ -55,12 +49,18 @@ public class StagePO extends BasePO implements Serializable 
{
     @Column(name = "context")
     private String context;
 
-    @Column(name = "job_id", nullable = false)
-    private Long jobId;
+    @Column(name = "order")
+    private Integer order;
+
+    @Column(name = "state", nullable = false)
+    private String state;
 
     @Column(name = "cluster_id")
     private Long clusterId;
 
+    @Column(name = "job_id", nullable = false)
+    private Long jobId;
+
     @ToString.Exclude
     private List<TaskPO> tasks;
 }
diff --git 
a/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/po/TaskPO.java 
b/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/po/TaskPO.java
index 7fad4631..bb22edd0 100644
--- 
a/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/po/TaskPO.java
+++ 
b/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/po/TaskPO.java
@@ -38,15 +38,15 @@ public class TaskPO extends BasePO implements Serializable {
     @Column(name = "name")
     private String name;
 
-    @Column(name = "context", nullable = false)
-    private String context;
-
-    @Column(name = "state")
-    private String state;
+    @Column(name = "hostname")
+    private String hostname;
 
     @Column(name = "service_name")
     private String serviceName;
 
+    @Column(name = "service_user")
+    private String serviceUser;
+
     @Column(name = "component_name")
     private String componentName;
 
@@ -56,27 +56,21 @@ public class TaskPO extends BasePO implements Serializable {
     @Column(name = "custom_command")
     private String customCommand;
 
-    @Column(name = "hostname")
-    private String hostname;
-
-    @Column(name = "stack_name")
-    private String stackName;
-
-    @Column(name = "stack_version")
-    private String stackVersion;
-
-    @Column(name = "service_user")
-    private String serviceUser;
-
     @Column(name = "content")
     private String content;
 
-    @Column(name = "stage_id")
-    private Long stageId;
+    @Column(name = "context", nullable = false)
+    private String context;
 
-    @Column(name = "job_id")
-    private Long jobId;
+    @Column(name = "state")
+    private String state;
 
     @Column(name = "cluster_id")
     private Long clusterId;
+
+    @Column(name = "job_id")
+    private Long jobId;
+
+    @Column(name = "stage_id")
+    private Long stageId;
 }
diff --git 
a/bigtop-manager-dao/src/main/resources/mapper/mysql/ClusterMapper.xml 
b/bigtop-manager-dao/src/main/resources/mapper/mysql/ClusterMapper.xml
index a691861b..b3dc0141 100644
--- a/bigtop-manager-dao/src/main/resources/mapper/mysql/ClusterMapper.xml
+++ b/bigtop-manager-dao/src/main/resources/mapper/mysql/ClusterMapper.xml
@@ -24,10 +24,10 @@
 <mapper namespace="org.apache.bigtop.manager.dao.repository.ClusterDao">
 
     <sql id="baseColumns">
-        id, name, desc, type, user_group, root_dir, status
+        id, name, `desc`, type, user_group, root_dir, status
     </sql>
     <sql id="baseColumnsV2">
-        ${alias}.id, ${alias}.name, ${alias}.desc, ${alias}.type, 
${alias}.user_group, ${alias}.root_dir, ${alias}.status
+        ${alias}.id, ${alias}.name, ${alias}.`desc`, ${alias}.type, 
${alias}.user_group, ${alias}.root_dir, ${alias}.status
     </sql>
 
     <select id="findDetailsById" 
resultType="org.apache.bigtop.manager.dao.po.ClusterPO">
diff --git 
a/bigtop-manager-dao/src/main/resources/mapper/mysql/HostComponentMapper.xml 
b/bigtop-manager-dao/src/main/resources/mapper/mysql/HostComponentMapper.xml
index 9f906104..9410a0f8 100644
--- a/bigtop-manager-dao/src/main/resources/mapper/mysql/HostComponentMapper.xml
+++ b/bigtop-manager-dao/src/main/resources/mapper/mysql/HostComponentMapper.xml
@@ -201,7 +201,7 @@
         <include refid="baseColumnsV2">
             <property name="alias" value="hc"/>
         </include>
-        
,ser.service_name,ser.service_user,clu.root_dir,c.component_name,c.command_script,hst.hostname
+        
,ser.service_name,ser.service_user,clu.root_dir,c.component_name,c.command_script,hst.hostname,
 hst.grpc_port
         from
         host_component hc
         inner join host hst
diff --git 
a/bigtop-manager-dao/src/main/resources/mapper/postgresql/HostComponentMapper.xml
 
b/bigtop-manager-dao/src/main/resources/mapper/postgresql/HostComponentMapper.xml
index ada7d947..705c4d35 100644
--- 
a/bigtop-manager-dao/src/main/resources/mapper/postgresql/HostComponentMapper.xml
+++ 
b/bigtop-manager-dao/src/main/resources/mapper/postgresql/HostComponentMapper.xml
@@ -201,7 +201,7 @@
         <include refid="baseColumnsV2">
             <property name="alias" value="hc"/>
         </include>
-        
,ser.service_name,ser.service_user,clu.root_dir,c.component_name,c.command_script,hst.hostname
+        
,ser.service_name,ser.service_user,clu.root_dir,c.component_name,c.command_script,hst.hostname,
 hst.grpc_port
         from
         host_component hc
         inner join host hst
diff --git a/bigtop-manager-grpc/src/main/resources/proto/command.proto 
b/bigtop-manager-grpc/src/main/resources/proto/command.proto
index e008c6b0..e1c1b747 100644
--- a/bigtop-manager-grpc/src/main/resources/proto/command.proto
+++ b/bigtop-manager-grpc/src/main/resources/proto/command.proto
@@ -34,14 +34,12 @@ enum CommandType {
 
 message CommandRequest {
   string payload = 1;
-  string hostname = 2;
-  int64 task_id = 3;
-  CommandType type = 4;
+  int64 task_id = 2;
+  CommandType type = 3;
 }
 
 message CommandReply {
   int32 code = 1;
   string result = 2;
-  string hostname = 3;
-  int64 task_id = 4;
+  int64 task_id = 3;
 }
\ No newline at end of file
diff --git 
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/factory/host/HostAddJobFactory.java
 
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/factory/host/HostAddJobFactory.java
deleted file mode 100644
index fe7a06c8..00000000
--- 
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/factory/host/HostAddJobFactory.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *    https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.bigtop.manager.server.command.factory.host;
-
-import org.apache.bigtop.manager.common.enums.Command;
-import org.apache.bigtop.manager.server.command.CommandIdentifier;
-import org.apache.bigtop.manager.server.command.job.HostAddJob;
-import org.apache.bigtop.manager.server.command.job.Job;
-import org.apache.bigtop.manager.server.command.job.JobContext;
-import org.apache.bigtop.manager.server.enums.CommandLevel;
-
-import org.springframework.beans.factory.config.ConfigurableBeanFactory;
-import org.springframework.context.annotation.Scope;
-import org.springframework.stereotype.Component;
-
-import lombok.extern.slf4j.Slf4j;
-
-@Slf4j
-@Component
-@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
-public class HostAddJobFactory extends AbstractHostJobFactory {
-
-    @Override
-    public CommandIdentifier getCommandIdentifier() {
-        return new CommandIdentifier(CommandLevel.HOST, Command.INSTALL);
-    }
-
-    @Override
-    public Job createJob(JobContext jobContext) {
-        return new HostAddJob(jobContext);
-    }
-}
diff --git 
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/job/AbstractServiceJob.java
 
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/job/AbstractServiceJob.java
index 9014fada..c2c69d0b 100644
--- 
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/job/AbstractServiceJob.java
+++ 
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/job/AbstractServiceJob.java
@@ -88,9 +88,6 @@ public abstract class AbstractServiceJob extends AbstractJob {
 
         stageContext.setServiceDTO(serviceDTO);
         stageContext.setComponentDTO(componentDTO);
-        stageContext.setStackName(stackName);
-        stageContext.setStackVersion(stackVersion);
-        stageContext.setHostnames(hostnames);
 
         return stageContext;
     }
@@ -164,8 +161,6 @@ public abstract class AbstractServiceJob extends 
AbstractJob {
 
     protected void createCacheStage() {
         StageContext stageContext = 
StageContext.fromPayload(JsonUtils.writeAsString(jobContext.getCommandDTO()));
-        stageContext.setStackName(stackName);
-        stageContext.setStackVersion(stackVersion);
         stages.add(new CacheFileUpdateStage(stageContext));
     }
 
diff --git 
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/job/ClusterCreateJob.java
 
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/job/ClusterCreateJob.java
index dc81e8ab..ebf67db4 100644
--- 
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/job/ClusterCreateJob.java
+++ 
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/job/ClusterCreateJob.java
@@ -88,7 +88,7 @@ public class ClusterCreateJob extends AbstractJob {
             clusterPO = ClusterConverter.INSTANCE.fromDTO2PO(clusterDTO);
         }
 
-        clusterPO.setStatus(HealthyStatusEnum.UNHEALTHY.getCode());
+        clusterPO.setStatus(HealthyStatusEnum.HEALTHY.getCode());
         clusterDao.save(clusterPO);
     }
 
diff --git 
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/stage/AbstractComponentStage.java
 
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/stage/AbstractComponentStage.java
index 3c9da086..3398d76f 100644
--- 
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/stage/AbstractComponentStage.java
+++ 
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/stage/AbstractComponentStage.java
@@ -23,6 +23,7 @@ import org.apache.bigtop.manager.dao.repository.ClusterDao;
 import org.apache.bigtop.manager.server.command.task.TaskContext;
 import org.apache.bigtop.manager.server.holder.SpringContextHolder;
 import org.apache.bigtop.manager.server.model.dto.ComponentDTO;
+import org.apache.bigtop.manager.server.model.dto.HostDTO;
 import org.apache.bigtop.manager.server.model.dto.ServiceDTO;
 
 import java.util.HashMap;
@@ -60,17 +61,15 @@ public abstract class AbstractComponentStage extends 
AbstractStage {
         return stageContext.getComponentDTO().getComponentName();
     }
 
-    protected TaskContext createTaskContext(String hostname) {
+    protected TaskContext createTaskContext(HostDTO hostDTO) {
         ServiceDTO serviceDTO = stageContext.getServiceDTO();
         ComponentDTO componentDTO = stageContext.getComponentDTO();
 
         TaskContext taskContext = new TaskContext();
-        taskContext.setHostname(hostname);
+        taskContext.setHostDTO(hostDTO);
         taskContext.setClusterId(clusterPO.getId());
         taskContext.setClusterName(clusterPO.getName());
         taskContext.setServiceName(serviceDTO.getServiceName());
-        taskContext.setStackName(stageContext.getStackName());
-        taskContext.setStackVersion(stageContext.getStackVersion());
         taskContext.setComponentName(componentDTO.getComponentName());
         taskContext.setComponentDisplayName(componentDTO.getDisplayName());
         taskContext.setServiceUser(serviceDTO.getServiceUser());
diff --git 
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/stage/AbstractStage.java
 
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/stage/AbstractStage.java
index 07259a39..9dfaf003 100644
--- 
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/stage/AbstractStage.java
+++ 
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/stage/AbstractStage.java
@@ -21,9 +21,12 @@ package org.apache.bigtop.manager.server.command.stage;
 import org.apache.bigtop.manager.common.enums.JobState;
 import org.apache.bigtop.manager.common.utils.JsonUtils;
 import org.apache.bigtop.manager.dao.po.StagePO;
+import org.apache.bigtop.manager.dao.repository.HostDao;
 import org.apache.bigtop.manager.dao.repository.StageDao;
 import org.apache.bigtop.manager.server.command.task.Task;
 import org.apache.bigtop.manager.server.holder.SpringContextHolder;
+import org.apache.bigtop.manager.server.model.converter.HostConverter;
+import org.apache.bigtop.manager.server.model.dto.HostDTO;
 
 import lombok.extern.slf4j.Slf4j;
 
@@ -35,6 +38,7 @@ import java.util.concurrent.CompletableFuture;
 public abstract class AbstractStage implements Stage {
 
     protected StageDao stageDao;
+    protected HostDao hostDao;
 
     protected StageContext stageContext;
     protected List<Task> tasks;
@@ -52,18 +56,20 @@ public abstract class AbstractStage implements Stage {
 
         beforeCreateTasks();
 
-        for (String hostname : stageContext.getHostnames()) {
-            tasks.add(createTask(hostname));
+        List<HostDTO> hostDTOList = 
HostConverter.INSTANCE.fromPO2DTO(hostDao.findByIds(stageContext.getHostIds()));
+        for (HostDTO hostDTO : hostDTOList) {
+            tasks.add(createTask(hostDTO));
         }
     }
 
     protected void injectBeans() {
         this.stageDao = SpringContextHolder.getBean(StageDao.class);
+        this.hostDao = SpringContextHolder.getBean(HostDao.class);
     }
 
     protected abstract void beforeCreateTasks();
 
-    protected abstract Task createTask(String hostname);
+    protected abstract Task createTask(HostDTO hostDTO);
 
     protected String getServiceName() {
         return "cluster";
diff --git 
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/stage/CacheFileUpdateStage.java
 
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/stage/CacheFileUpdateStage.java
index 37d8f40d..1e2b7081 100644
--- 
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/stage/CacheFileUpdateStage.java
+++ 
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/stage/CacheFileUpdateStage.java
@@ -20,11 +20,10 @@ package org.apache.bigtop.manager.server.command.stage;
 
 import org.apache.bigtop.manager.common.enums.Command;
 import org.apache.bigtop.manager.dao.po.HostPO;
-import org.apache.bigtop.manager.dao.repository.HostDao;
 import org.apache.bigtop.manager.server.command.task.CacheFileUpdateTask;
 import org.apache.bigtop.manager.server.command.task.Task;
 import org.apache.bigtop.manager.server.command.task.TaskContext;
-import org.apache.bigtop.manager.server.holder.SpringContextHolder;
+import org.apache.bigtop.manager.server.model.dto.HostDTO;
 
 import java.util.ArrayList;
 import java.util.HashMap;
@@ -33,8 +32,6 @@ import java.util.Map;
 
 public class CacheFileUpdateStage extends AbstractStage {
 
-    private HostDao hostDao;
-
     public CacheFileUpdateStage(StageContext stageContext) {
         super(stageContext);
     }
@@ -42,34 +39,30 @@ public class CacheFileUpdateStage extends AbstractStage {
     @Override
     protected void injectBeans() {
         super.injectBeans();
-
-        this.hostDao = SpringContextHolder.getBean(HostDao.class);
     }
 
     @Override
     protected void beforeCreateTasks() {
-        List<String> hostnames = new ArrayList<>();
+        List<Long> hostIds = new ArrayList<>();
 
         if (stageContext.getClusterId() == null) {
-            hostnames.addAll(stageContext.getHostnames());
+            hostIds.addAll(stageContext.getHostIds() == null ? List.of() : 
stageContext.getHostIds());
         } else {
-            hostnames.addAll(stageContext.getHostnames() == null ? List.of() : 
stageContext.getHostnames());
-            
hostnames.addAll(hostDao.findAllByClusterId(stageContext.getClusterId()).stream()
-                    .map(HostPO::getHostname)
+            hostIds.addAll(stageContext.getHostIds() == null ? List.of() : 
stageContext.getHostIds());
+            
hostIds.addAll(hostDao.findAllByClusterId(stageContext.getClusterId()).stream()
+                    .map(HostPO::getId)
                     .toList());
         }
 
-        stageContext.setHostnames(hostnames);
+        stageContext.setHostIds(hostIds);
     }
 
     @Override
-    protected Task createTask(String hostname) {
+    protected Task createTask(HostDTO hostDTO) {
         TaskContext taskContext = new TaskContext();
-        taskContext.setHostname(hostname);
+        taskContext.setHostDTO(hostDTO);
         taskContext.setClusterId(stageContext.getClusterId());
         taskContext.setClusterName(stageContext.getClusterName());
-        taskContext.setStackName(stageContext.getStackName());
-        taskContext.setStackVersion(stageContext.getStackVersion());
         taskContext.setServiceName("cluster");
         taskContext.setServiceUser("root");
         taskContext.setComponentName("agent");
@@ -78,8 +71,6 @@ public class CacheFileUpdateStage extends AbstractStage {
         taskContext.setCustomCommand("update_cache_files");
 
         Map<String, Object> properties = new HashMap<>();
-        properties.put("repoInfoList", stageContext.getRepoInfoList());
-        properties.put("hostnames", stageContext.getHostnames());
         taskContext.setProperties(properties);
 
         return new CacheFileUpdateTask(taskContext);
diff --git 
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/stage/ComponentCheckStage.java
 
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/stage/ComponentCheckStage.java
index 7498ce7d..75970261 100644
--- 
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/stage/ComponentCheckStage.java
+++ 
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/stage/ComponentCheckStage.java
@@ -20,6 +20,7 @@ package org.apache.bigtop.manager.server.command.stage;
 
 import org.apache.bigtop.manager.server.command.task.ComponentCheckTask;
 import org.apache.bigtop.manager.server.command.task.Task;
+import org.apache.bigtop.manager.server.model.dto.HostDTO;
 
 public class ComponentCheckStage extends AbstractComponentStage {
 
@@ -28,8 +29,8 @@ public class ComponentCheckStage extends 
AbstractComponentStage {
     }
 
     @Override
-    protected Task createTask(String hostname) {
-        return new ComponentCheckTask(createTaskContext(hostname));
+    protected Task createTask(HostDTO hostDTO) {
+        return new ComponentCheckTask(createTaskContext(hostDTO));
     }
 
     @Override
diff --git 
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/stage/ComponentConfigureStage.java
 
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/stage/ComponentConfigureStage.java
index 08eea2ad..d1aa4519 100644
--- 
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/stage/ComponentConfigureStage.java
+++ 
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/stage/ComponentConfigureStage.java
@@ -20,6 +20,7 @@ package org.apache.bigtop.manager.server.command.stage;
 
 import org.apache.bigtop.manager.server.command.task.ComponentConfigureTask;
 import org.apache.bigtop.manager.server.command.task.Task;
+import org.apache.bigtop.manager.server.model.dto.HostDTO;
 
 public class ComponentConfigureStage extends AbstractComponentStage {
 
@@ -28,8 +29,8 @@ public class ComponentConfigureStage extends 
AbstractComponentStage {
     }
 
     @Override
-    protected Task createTask(String hostname) {
-        return new ComponentConfigureTask(createTaskContext(hostname));
+    protected Task createTask(HostDTO hostDTO) {
+        return new ComponentConfigureTask(createTaskContext(hostDTO));
     }
 
     @Override
diff --git 
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/stage/ComponentInstallStage.java
 
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/stage/ComponentInstallStage.java
index 57fe9c74..512420bd 100644
--- 
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/stage/ComponentInstallStage.java
+++ 
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/stage/ComponentInstallStage.java
@@ -20,6 +20,7 @@ package org.apache.bigtop.manager.server.command.stage;
 
 import org.apache.bigtop.manager.server.command.task.ComponentInstallTask;
 import org.apache.bigtop.manager.server.command.task.Task;
+import org.apache.bigtop.manager.server.model.dto.HostDTO;
 
 public class ComponentInstallStage extends AbstractComponentStage {
 
@@ -28,8 +29,8 @@ public class ComponentInstallStage extends 
AbstractComponentStage {
     }
 
     @Override
-    protected Task createTask(String hostname) {
-        return new ComponentInstallTask(createTaskContext(hostname));
+    protected Task createTask(HostDTO hostDTO) {
+        return new ComponentInstallTask(createTaskContext(hostDTO));
     }
 
     @Override
diff --git 
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/stage/ComponentStartStage.java
 
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/stage/ComponentStartStage.java
index 00f67f8a..fffef483 100644
--- 
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/stage/ComponentStartStage.java
+++ 
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/stage/ComponentStartStage.java
@@ -20,6 +20,7 @@ package org.apache.bigtop.manager.server.command.stage;
 
 import org.apache.bigtop.manager.server.command.task.ComponentStartTask;
 import org.apache.bigtop.manager.server.command.task.Task;
+import org.apache.bigtop.manager.server.model.dto.HostDTO;
 
 public class ComponentStartStage extends AbstractComponentStage {
 
@@ -28,8 +29,8 @@ public class ComponentStartStage extends 
AbstractComponentStage {
     }
 
     @Override
-    protected Task createTask(String hostname) {
-        return new ComponentStartTask(createTaskContext(hostname));
+    protected Task createTask(HostDTO hostDTO) {
+        return new ComponentStartTask(createTaskContext(hostDTO));
     }
 
     @Override
diff --git 
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/stage/ComponentStopStage.java
 
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/stage/ComponentStopStage.java
index b3678150..8133f106 100644
--- 
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/stage/ComponentStopStage.java
+++ 
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/stage/ComponentStopStage.java
@@ -20,6 +20,7 @@ package org.apache.bigtop.manager.server.command.stage;
 
 import org.apache.bigtop.manager.server.command.task.ComponentStopTask;
 import org.apache.bigtop.manager.server.command.task.Task;
+import org.apache.bigtop.manager.server.model.dto.HostDTO;
 
 public class ComponentStopStage extends AbstractComponentStage {
 
@@ -28,8 +29,8 @@ public class ComponentStopStage extends 
AbstractComponentStage {
     }
 
     @Override
-    protected Task createTask(String hostname) {
-        return new ComponentStopTask(createTaskContext(hostname));
+    protected Task createTask(HostDTO hostDTO) {
+        return new ComponentStopTask(createTaskContext(hostDTO));
     }
 
     @Override
diff --git 
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/stage/HostCheckStage.java
 
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/stage/HostCheckStage.java
index b0f21478..808ea635 100644
--- 
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/stage/HostCheckStage.java
+++ 
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/stage/HostCheckStage.java
@@ -19,17 +19,13 @@
 package org.apache.bigtop.manager.server.command.stage;
 
 import org.apache.bigtop.manager.common.enums.Command;
-import org.apache.bigtop.manager.dao.po.ClusterPO;
-import org.apache.bigtop.manager.dao.repository.ClusterDao;
 import org.apache.bigtop.manager.server.command.task.HostCheckTask;
 import org.apache.bigtop.manager.server.command.task.Task;
 import org.apache.bigtop.manager.server.command.task.TaskContext;
-import org.apache.bigtop.manager.server.holder.SpringContextHolder;
+import org.apache.bigtop.manager.server.model.dto.HostDTO;
 
 public class HostCheckStage extends AbstractStage {
 
-    private ClusterDao clusterDao;
-
     public HostCheckStage(StageContext stageContext) {
         super(stageContext);
     }
@@ -37,25 +33,17 @@ public class HostCheckStage extends AbstractStage {
     @Override
     protected void injectBeans() {
         super.injectBeans();
-
-        this.clusterDao = SpringContextHolder.getBean(ClusterDao.class);
     }
 
     @Override
-    protected void beforeCreateTasks() {
-        if (stageContext.getClusterId() != null) {
-            ClusterPO clusterPO = 
clusterDao.findByIdJoin(stageContext.getClusterId());
-        }
-    }
+    protected void beforeCreateTasks() {}
 
     @Override
-    protected Task createTask(String hostname) {
+    protected Task createTask(HostDTO hostDTO) {
         TaskContext taskContext = new TaskContext();
-        taskContext.setHostname(hostname);
+        taskContext.setHostDTO(hostDTO);
         taskContext.setClusterId(stageContext.getClusterId());
         taskContext.setClusterName(stageContext.getClusterName());
-        taskContext.setStackName(stageContext.getStackName());
-        taskContext.setStackVersion(stageContext.getStackVersion());
         taskContext.setServiceName("cluster");
         taskContext.setServiceUser("root");
         taskContext.setComponentName("agent");
diff --git 
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/stage/StageContext.java
 
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/stage/StageContext.java
index ab7ee7a7..0b23cf00 100644
--- 
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/stage/StageContext.java
+++ 
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/stage/StageContext.java
@@ -21,10 +21,8 @@ package org.apache.bigtop.manager.server.command.stage;
 import org.apache.bigtop.manager.common.utils.JsonUtils;
 import org.apache.bigtop.manager.server.model.dto.CommandDTO;
 import org.apache.bigtop.manager.server.model.dto.ComponentDTO;
-import org.apache.bigtop.manager.server.model.dto.RepoDTO;
 import org.apache.bigtop.manager.server.model.dto.ServiceDTO;
 import org.apache.bigtop.manager.server.model.dto.command.ClusterCommandDTO;
-import org.apache.bigtop.manager.server.model.dto.command.HostCommandDTO;
 
 import lombok.Data;
 
@@ -37,18 +35,12 @@ public class StageContext {
 
     private String clusterName;
 
-    private String stackName;
-
-    private String stackVersion;
-
-    private List<String> hostnames;
+    private List<Long> hostIds;
 
     private ServiceDTO serviceDTO;
 
     private ComponentDTO componentDTO;
 
-    private List<RepoDTO> repoInfoList;
-
     public static StageContext fromPayload(String payload) {
         CommandDTO commandDTO = JsonUtils.readFromString(payload, 
CommandDTO.class);
         return fromCommandDTO(commandDTO);
@@ -72,18 +64,11 @@ public class StageContext {
         ClusterCommandDTO clusterCommand = commandDTO.getClusterCommand();
 
         context.setClusterName(clusterCommand.getName());
-        //        context.setStackName(clusterCommand.getStackName());
-        //        context.setStackVersion(clusterCommand.getStackVersion());
-        //        context.setHostnames(clusterCommand.getHostnames());
-        //        context.setRepoInfoList(clusterCommand.getRepoInfoList());
+        context.setHostIds(clusterCommand.getHostIds());
     }
 
     private static void fromHostCommandPayload(StageContext context, 
CommandDTO commandDTO) {
-        List<HostCommandDTO> hostCommands = commandDTO.getHostCommands();
-
-        List<String> hostnames =
-                
hostCommands.stream().map(HostCommandDTO::getHostname).toList();
-        context.setHostnames(hostnames);
+        // No need to set anything here, we should deal with this in the host 
job factory
     }
 
     private static void fromServiceCommandPayload(StageContext context, 
CommandDTO commandDTO) {
diff --git 
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/task/AbstractComponentTask.java
 
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/task/AbstractComponentTask.java
index de70d595..f5cb082f 100644
--- 
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/task/AbstractComponentTask.java
+++ 
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/task/AbstractComponentTask.java
@@ -59,11 +59,8 @@ public abstract class AbstractComponentTask extends 
AbstractTask {
         commandPayload.setServiceName(taskContext.getServiceName());
         commandPayload.setCommand(getCommand());
         commandPayload.setServiceUser(taskContext.getServiceUser());
-        commandPayload.setStackName(taskContext.getStackName());
-        commandPayload.setStackVersion(taskContext.getStackVersion());
         commandPayload.setComponentName(taskContext.getComponentName());
         commandPayload.setRootDir(taskContext.getRootDir());
-        commandPayload.setHostname(taskContext.getHostname());
 
         Map<String, Object> properties = taskContext.getProperties();
 
@@ -75,7 +72,6 @@ public abstract class AbstractComponentTask extends 
AbstractTask {
 
         CommandRequest.Builder builder = CommandRequest.newBuilder();
         builder.setType(CommandType.COMPONENT);
-        builder.setHostname(taskContext.getHostname());
         builder.setPayload(JsonUtils.writeAsString(commandPayload));
 
         return builder.build();
diff --git 
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/task/AbstractTask.java
 
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/task/AbstractTask.java
index e8767cbb..becfd6ab 100644
--- 
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/task/AbstractTask.java
+++ 
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/task/AbstractTask.java
@@ -30,6 +30,7 @@ import 
org.apache.bigtop.manager.grpc.generated.CommandServiceGrpc;
 import org.apache.bigtop.manager.grpc.utils.ProtobufUtil;
 import org.apache.bigtop.manager.server.grpc.GrpcClient;
 import org.apache.bigtop.manager.server.holder.SpringContextHolder;
+import org.apache.bigtop.manager.server.model.dto.HostDTO;
 
 import lombok.extern.slf4j.Slf4j;
 
@@ -82,8 +83,9 @@ public abstract class AbstractTask implements Task {
             builder.setTaskId(getTaskPO().getId());
             commandRequest = builder.build();
 
+            HostDTO hostDTO = taskContext.getHostDTO();
             CommandServiceGrpc.CommandServiceBlockingStub stub = 
GrpcClient.getBlockingStub(
-                    taskContext.getHostname(), 
CommandServiceGrpc.CommandServiceBlockingStub.class);
+                    hostDTO.getHostname(), hostDTO.getGrpcPort(), 
CommandServiceGrpc.CommandServiceBlockingStub.class);
             CommandReply reply = stub.exec(commandRequest);
 
             taskSuccess = reply != null && reply.getCode() == 
MessageConstants.SUCCESS_CODE;
@@ -133,9 +135,7 @@ public abstract class AbstractTask implements Task {
             taskPO = new TaskPO();
             taskPO.setName(getName());
             taskPO.setContext(JsonUtils.writeAsString(taskContext));
-            taskPO.setStackName(taskContext.getStackName());
-            taskPO.setStackVersion(taskContext.getStackVersion());
-            taskPO.setHostname(taskContext.getHostname());
+            taskPO.setHostname(taskContext.getHostDTO().getHostname());
             taskPO.setServiceName(taskContext.getServiceName());
             taskPO.setServiceUser(taskContext.getServiceUser());
             taskPO.setComponentName(taskContext.getComponentName());
diff --git 
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/task/CacheFileUpdateTask.java
 
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/task/CacheFileUpdateTask.java
index 2265560c..e484f5d8 100644
--- 
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/task/CacheFileUpdateTask.java
+++ 
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/task/CacheFileUpdateTask.java
@@ -18,7 +18,6 @@
  */
 package org.apache.bigtop.manager.server.command.task;
 
-import org.apache.bigtop.manager.common.constants.Constants;
 import org.apache.bigtop.manager.common.enums.Command;
 import 
org.apache.bigtop.manager.common.message.entity.payload.CacheMessagePayload;
 import org.apache.bigtop.manager.common.message.entity.pojo.ClusterInfo;
@@ -47,7 +46,6 @@ import org.apache.bigtop.manager.grpc.generated.CommandType;
 import org.apache.bigtop.manager.server.holder.SpringContextHolder;
 import org.apache.bigtop.manager.server.model.converter.RepoConverter;
 import org.apache.bigtop.manager.server.model.dto.PropertyDTO;
-import org.apache.bigtop.manager.server.model.dto.RepoDTO;
 import org.apache.bigtop.manager.server.utils.StackConfigUtils;
 
 import com.fasterxml.jackson.core.type.TypeReference;
@@ -198,14 +196,8 @@ public class CacheFileUpdateTask extends AbstractTask {
         hostMap = new HashMap<>();
         userMap = new HashMap<>();
         settingsMap = new HashMap<>();
-
-        Map<String, Object> properties = taskContext.getProperties();
-
-        repoList = RepoConverter.INSTANCE.fromDTO2Message((List<RepoDTO>) 
properties.get("repoInfoList"));
+        repoList = new ArrayList<>();
         clusterInfo = new ClusterInfo();
-
-        List<String> hostnames = (List<String>) properties.get("hostnames");
-        hostMap.put(Constants.ALL_HOST_KEY, new HashSet<>(hostnames));
     }
 
     @Override
@@ -221,7 +213,6 @@ public class CacheFileUpdateTask extends AbstractTask {
     @Override
     protected CommandRequest getCommandRequest() {
         CacheMessagePayload messagePayload = new CacheMessagePayload();
-        messagePayload.setHostname(taskContext.getHostname());
         messagePayload.setClusterInfo(clusterInfo);
         messagePayload.setConfigurations(serviceConfigMap);
         messagePayload.setClusterHostInfo(hostMap);
@@ -232,7 +223,6 @@ public class CacheFileUpdateTask extends AbstractTask {
 
         CommandRequest.Builder builder = CommandRequest.newBuilder();
         builder.setType(CommandType.UPDATE_CACHE_FILES);
-        builder.setHostname(taskContext.getHostname());
         builder.setPayload(JsonUtils.writeAsString(messagePayload));
 
         return builder.build();
@@ -240,6 +230,6 @@ public class CacheFileUpdateTask extends AbstractTask {
 
     @Override
     public String getName() {
-        return "Update cache files on " + taskContext.getHostname();
+        return "Update cache files on " + 
taskContext.getHostDTO().getHostname();
     }
 }
diff --git 
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/task/ComponentCheckTask.java
 
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/task/ComponentCheckTask.java
index 121b5b92..e387da4c 100644
--- 
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/task/ComponentCheckTask.java
+++ 
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/task/ComponentCheckTask.java
@@ -33,6 +33,7 @@ public class ComponentCheckTask extends AbstractComponentTask 
{
 
     @Override
     public String getName() {
-        return "Check " + taskContext.getComponentDisplayName() + " on " + 
taskContext.getHostname();
+        return "Check " + taskContext.getComponentDisplayName() + " on "
+                + taskContext.getHostDTO().getHostname();
     }
 }
diff --git 
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/task/ComponentConfigureTask.java
 
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/task/ComponentConfigureTask.java
index 553d35ab..e1873899 100644
--- 
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/task/ComponentConfigureTask.java
+++ 
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/task/ComponentConfigureTask.java
@@ -33,6 +33,7 @@ public class ComponentConfigureTask extends 
AbstractComponentTask {
 
     @Override
     public String getName() {
-        return "Configure " + taskContext.getComponentDisplayName() + " on " + 
taskContext.getHostname();
+        return "Configure " + taskContext.getComponentDisplayName() + " on "
+                + taskContext.getHostDTO().getHostname();
     }
 }
diff --git 
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/task/ComponentInstallTask.java
 
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/task/ComponentInstallTask.java
index 176a8e74..6b9ad227 100644
--- 
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/task/ComponentInstallTask.java
+++ 
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/task/ComponentInstallTask.java
@@ -39,7 +39,7 @@ public class ComponentInstallTask extends 
AbstractComponentTask {
 
         Long clusterId = taskContext.getClusterId();
         String componentName = taskContext.getComponentName();
-        String hostname = taskContext.getHostname();
+        String hostname = taskContext.getHostDTO().getHostname();
         HostComponentPO hostComponentPO =
                 
hostComponentDao.findByClusterIdAndComponentNameAndHostname(clusterId, 
componentName, hostname);
         hostComponentPO.setState(MaintainState.INSTALLED.getName());
@@ -48,6 +48,7 @@ public class ComponentInstallTask extends 
AbstractComponentTask {
 
     @Override
     public String getName() {
-        return "Install " + taskContext.getComponentDisplayName() + " on " + 
taskContext.getHostname();
+        return "Install " + taskContext.getComponentDisplayName() + " on "
+                + taskContext.getHostDTO().getHostname();
     }
 }
diff --git 
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/task/ComponentStartTask.java
 
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/task/ComponentStartTask.java
index aed3898c..0d0b4fb6 100644
--- 
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/task/ComponentStartTask.java
+++ 
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/task/ComponentStartTask.java
@@ -39,7 +39,7 @@ public class ComponentStartTask extends AbstractComponentTask 
{
 
         Long clusterId = taskContext.getClusterId();
         String componentName = taskContext.getComponentName();
-        String hostname = taskContext.getHostname();
+        String hostname = taskContext.getHostDTO().getHostname();
         HostComponentPO hostComponentPO =
                 
hostComponentDao.findByClusterIdAndComponentNameAndHostname(clusterId, 
componentName, hostname);
         hostComponentPO.setState(MaintainState.STARTED.getName());
@@ -48,6 +48,7 @@ public class ComponentStartTask extends AbstractComponentTask 
{
 
     @Override
     public String getName() {
-        return "Start " + taskContext.getComponentDisplayName() + " on " + 
taskContext.getHostname();
+        return "Start " + taskContext.getComponentDisplayName() + " on "
+                + taskContext.getHostDTO().getHostname();
     }
 }
diff --git 
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/task/ComponentStopTask.java
 
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/task/ComponentStopTask.java
index 2b7ea999..06a8626d 100644
--- 
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/task/ComponentStopTask.java
+++ 
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/task/ComponentStopTask.java
@@ -39,7 +39,7 @@ public class ComponentStopTask extends AbstractComponentTask {
 
         Long clusterId = taskContext.getClusterId();
         String componentName = taskContext.getComponentName();
-        String hostname = taskContext.getHostname();
+        String hostname = taskContext.getHostDTO().getHostname();
         HostComponentPO hostComponentPO =
                 
hostComponentDao.findByClusterIdAndComponentNameAndHostname(clusterId, 
componentName, hostname);
         hostComponentPO.setState(MaintainState.STOPPED.getName());
@@ -48,6 +48,7 @@ public class ComponentStopTask extends AbstractComponentTask {
 
     @Override
     public String getName() {
-        return "Stop " + taskContext.getComponentDisplayName() + " on " + 
taskContext.getHostname();
+        return "Stop " + taskContext.getComponentDisplayName() + " on "
+                + taskContext.getHostDTO().getHostname();
     }
 }
diff --git 
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/task/HostCheckTask.java
 
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/task/HostCheckTask.java
index da9a207c..b37b432e 100644
--- 
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/task/HostCheckTask.java
+++ 
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/task/HostCheckTask.java
@@ -42,13 +42,10 @@ public class HostCheckTask extends AbstractTask {
 
     @Override
     protected CommandRequest getCommandRequest() {
-        String hostname = taskContext.getHostname();
         HostCheckPayload messagePayload = new HostCheckPayload();
-        messagePayload.setHostname(hostname);
 
         CommandRequest.Builder builder = CommandRequest.newBuilder();
         builder.setType(CommandType.HOST_CHECK);
-        builder.setHostname(hostname);
         builder.setPayload(JsonUtils.writeAsString(messagePayload));
 
         return builder.build();
@@ -56,6 +53,6 @@ public class HostCheckTask extends AbstractTask {
 
     @Override
     public String getName() {
-        return "Check host " + taskContext.getHostname();
+        return "Check host " + taskContext.getHostDTO().getHostname();
     }
 }
diff --git 
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/task/TaskContext.java
 
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/task/TaskContext.java
index 82b8436d..69bf8715 100644
--- 
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/task/TaskContext.java
+++ 
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/task/TaskContext.java
@@ -19,6 +19,7 @@
 package org.apache.bigtop.manager.server.command.task;
 
 import org.apache.bigtop.manager.common.enums.Command;
+import org.apache.bigtop.manager.server.model.dto.HostDTO;
 
 import lombok.Data;
 
@@ -31,11 +32,7 @@ public class TaskContext {
 
     private String clusterName;
 
-    private String hostname;
-
-    private String stackName;
-
-    private String stackVersion;
+    private HostDTO hostDTO;
 
     private String serviceName;
 
diff --git 
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/validator/ClusterCreateValidator.java
 
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/validator/ClusterCreateValidator.java
index 6c639582..ab255f20 100644
--- 
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/validator/ClusterCreateValidator.java
+++ 
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/command/validator/ClusterCreateValidator.java
@@ -50,7 +50,7 @@ public class ClusterCreateValidator implements 
CommandValidator {
 
         ClusterPO clusterPO = clusterDao.findByName(clusterName);
 
-        if (clusterPO == null) {
+        if (clusterPO != null) {
             throw new ApiException(ApiExceptionEnum.CLUSTER_EXISTS, 
clusterName);
         }
     }
diff --git 
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/grpc/GrpcClient.java
 
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/grpc/GrpcClient.java
index 30acc430..74b6e917 100644
--- 
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/grpc/GrpcClient.java
+++ 
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/grpc/GrpcClient.java
@@ -20,7 +20,6 @@ package org.apache.bigtop.manager.server.grpc;
 
 import org.apache.bigtop.manager.server.enums.ApiExceptionEnum;
 import org.apache.bigtop.manager.server.exception.ApiException;
-import org.apache.bigtop.manager.server.holder.SpringContextHolder;
 
 import io.grpc.CallOptions;
 import io.grpc.Channel;
@@ -48,45 +47,38 @@ public class GrpcClient {
     private static final Map<String, Map<String, AbstractAsyncStub<?>>> 
ASYNC_STUBS = new ConcurrentHashMap<>();
     private static final Map<String, Map<String, AbstractFutureStub<?>>> 
FUTURE_STUBS = new ConcurrentHashMap<>();
 
-    public static ManagedChannel createChannel(String host) {
-        int port = SpringContextHolder.getApplicationContext()
-                .getEnvironment()
-                .getRequiredProperty("bigtop.manager.grpc.port", 
Integer.class);
-        return createChannel(host, port);
-    }
-
     public static Boolean isChannelAlive(String host) {
         ManagedChannel channel = CHANNELS.get(host);
         return channel != null && !channel.isShutdown() && 
!channel.isTerminated();
     }
 
     @SuppressWarnings("unchecked")
-    public static <T extends AbstractBlockingStub<T>> T getBlockingStub(String 
host, Class<T> clazz) {
+    public static <T extends AbstractBlockingStub<T>> T getBlockingStub(String 
host, Integer grpcPort, Class<T> clazz) {
         Map<String, AbstractBlockingStub<?>> innerMap =
                 BLOCKING_STUBS.computeIfAbsent(host, k -> new 
ConcurrentHashMap<>());
         return (T) innerMap.computeIfAbsent(clazz.getName(), k -> {
-            T instance = T.newStub(getFactory(clazz), getChannel(host));
+            T instance = T.newStub(getFactory(clazz), getChannel(host, 
grpcPort));
             log.info("Instance: {} created.", k);
             return instance;
         });
     }
 
     @SuppressWarnings("unchecked")
-    public static <T extends AbstractAsyncStub<T>> T getAsyncStub(String host, 
Class<T> clazz) {
+    public static <T extends AbstractAsyncStub<T>> T getAsyncStub(String host, 
Integer grpcPort, Class<T> clazz) {
         Map<String, AbstractAsyncStub<?>> innerMap = 
ASYNC_STUBS.computeIfAbsent(host, k -> new ConcurrentHashMap<>());
         return (T) innerMap.computeIfAbsent(clazz.getName(), k -> {
-            T instance = T.newStub(getFactory(clazz), getChannel(host));
+            T instance = T.newStub(getFactory(clazz), getChannel(host, 
grpcPort));
             log.info("Instance: {} created.", k);
             return instance;
         });
     }
 
     @SuppressWarnings("unchecked")
-    public static <T extends AbstractFutureStub<T>> T getFutureStub(String 
host, Class<T> clazz) {
+    public static <T extends AbstractFutureStub<T>> T getFutureStub(String 
host, Integer grpcPort, Class<T> clazz) {
         Map<String, AbstractFutureStub<?>> innerMap =
                 FUTURE_STUBS.computeIfAbsent(host, k -> new 
ConcurrentHashMap<>());
         return (T) innerMap.computeIfAbsent(clazz.getName(), k -> {
-            T instance = T.newStub(getFactory(clazz), getChannel(host));
+            T instance = T.newStub(getFactory(clazz), getChannel(host, 
grpcPort));
             log.info("Instance: {} created.", k);
             return instance;
         });
@@ -119,11 +111,11 @@ public class GrpcClient {
         }
     }
 
-    private static ManagedChannel getChannel(String host) {
+    private static ManagedChannel getChannel(String host, Integer grpcPort) {
         if (isChannelAlive(host)) {
             return CHANNELS.get(host);
         } else {
-            return createChannel(host);
+            return createChannel(host, grpcPort);
         }
     }
 
diff --git 
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/converter/HostConverter.java
 
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/converter/HostConverter.java
index cd1bccb0..0b02ce23 100644
--- 
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/converter/HostConverter.java
+++ 
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/converter/HostConverter.java
@@ -37,16 +37,20 @@ public interface HostConverter {
 
     HostDTO fromReq2DTO(HostReq hostReq);
 
+    HostDTO fromPO2DTO(HostPO hostPO);
+
+    List<HostDTO> fromPO2DTO(List<HostPO> hostPOList);
+
     HostVO fromPO2VO(HostPO hostPO);
 
     List<HostVO> fromPO2VO(List<HostPO> hostPOList);
 
-    HostPO fromDTO2POWithoutHostname(HostDTO hostDTO);
+    HostPO fromDTO2PO(HostDTO hostDTO);
 
-    default List<HostPO> fromDTO2POList(HostDTO hostDTO) {
+    default List<HostPO> fromDTO2POListUsingHostnames(HostDTO hostDTO) {
         return hostDTO.getHostnames().stream()
                 .map(hostname -> {
-                    HostPO hostPO = fromDTO2POWithoutHostname(hostDTO);
+                    HostPO hostPO = fromDTO2PO(hostDTO);
                     hostPO.setHostname(hostname);
                     return hostPO;
                 })
diff --git 
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/dto/HostDTO.java
 
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/dto/HostDTO.java
index 945bfd39..6e8ff4f1 100644
--- 
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/dto/HostDTO.java
+++ 
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/dto/HostDTO.java
@@ -24,8 +24,15 @@ import java.util.List;
 
 @Data
 public class HostDTO {
+    // Used when converted from Req
     private List<String> hostnames;
 
+    // Used when converted from PO
+    private Long id;
+
+    // Used when converted from PO
+    private String hostname;
+
     private Long clusterId;
 
     private String sshUser;
diff --git 
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/scheduler/ComponentStatusScheduler.java
 
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/scheduler/ComponentStatusScheduler.java
index 141362c1..aa4c232a 100644
--- 
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/scheduler/ComponentStatusScheduler.java
+++ 
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/scheduler/ComponentStatusScheduler.java
@@ -64,7 +64,9 @@ public class ComponentStatusScheduler {
                     .setStackVersion(hostComponentPO.getStackVersion())
                     .build();
             ComponentStatusServiceGrpc.ComponentStatusServiceBlockingStub 
blockingStub = GrpcClient.getBlockingStub(
-                    hostComponentPO.getHostname(), 
ComponentStatusServiceGrpc.ComponentStatusServiceBlockingStub.class);
+                    hostComponentPO.getHostname(),
+                    hostComponentPO.getGrpcPort(),
+                    
ComponentStatusServiceGrpc.ComponentStatusServiceBlockingStub.class);
             ComponentStatusReply reply = 
blockingStub.getComponentStatus(request);
 
             // Status 0 means the service is running
diff --git 
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/scheduler/HostInfoScheduler.java
 
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/scheduler/HostInfoScheduler.java
index 5f646f19..32dbccd0 100644
--- 
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/scheduler/HostInfoScheduler.java
+++ 
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/scheduler/HostInfoScheduler.java
@@ -53,9 +53,10 @@ public class HostInfoScheduler {
 
     private void getHostInfo(HostPO hostPO) {
         String hostname = hostPO.getHostname();
+        Integer grpcPort = hostPO.getGrpcPort();
         try {
-            HostInfoServiceGrpc.HostInfoServiceBlockingStub stub =
-                    GrpcClient.getBlockingStub(hostname, 
HostInfoServiceGrpc.HostInfoServiceBlockingStub.class);
+            HostInfoServiceGrpc.HostInfoServiceBlockingStub stub = 
GrpcClient.getBlockingStub(
+                    hostname, grpcPort, 
HostInfoServiceGrpc.HostInfoServiceBlockingStub.class);
             HostInfoReply reply = 
stub.getHostInfo(HostInfoRequest.newBuilder().build());
 
             hostPO.setArch(reply.getArch());
diff --git 
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/impl/CommandServiceImpl.java
 
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/impl/CommandServiceImpl.java
index 9ebd0a60..016c37bf 100644
--- 
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/impl/CommandServiceImpl.java
+++ 
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/impl/CommandServiceImpl.java
@@ -91,9 +91,7 @@ public class CommandServiceImpl implements CommandService {
         Long clusterId = job.getJobContext().getCommandDTO().getClusterId();
 
         JobPO jobPO = job.getJobPO();
-        if (clusterId != null) {
-            jobPO.setClusterId(clusterId);
-        }
+        jobPO.setClusterId(clusterId);
         jobPO.setState(JobState.PENDING.getName());
         jobDao.save(jobPO);
         job.loadJobPO(jobPO);
@@ -101,9 +99,7 @@ public class CommandServiceImpl implements CommandService {
         for (int i = 0; i < job.getStages().size(); i++) {
             Stage stage = job.getStages().get(i);
             StagePO stagePO = stage.getStagePO();
-            if (clusterId != null) {
-                stagePO.setClusterId(clusterId);
-            }
+            stagePO.setClusterId(clusterId);
             stagePO.setJobId(jobPO.getId());
             stagePO.setOrder(i + 1);
             stagePO.setState(JobState.PENDING.getName());
@@ -113,9 +109,7 @@ public class CommandServiceImpl implements CommandService {
             for (int j = 0; j < stage.getTasks().size(); j++) {
                 Task task = stage.getTasks().get(j);
                 TaskPO taskPO = task.getTaskPO();
-                if (clusterId != null) {
-                    taskPO.setClusterId(clusterId);
-                }
+                taskPO.setClusterId(clusterId);
                 taskPO.setJobId(jobPO.getId());
                 taskPO.setStageId(stagePO.getId());
                 taskPO.setState(JobState.PENDING.getName());
diff --git 
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/impl/HostServiceImpl.java
 
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/impl/HostServiceImpl.java
index ebfe057c..0e1196cd 100644
--- 
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/impl/HostServiceImpl.java
+++ 
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/impl/HostServiceImpl.java
@@ -80,7 +80,7 @@ public class HostServiceImpl implements HostService {
 
     @Override
     public List<HostVO> add(HostDTO hostDTO) {
-        List<HostPO> hostPOList = 
HostConverter.INSTANCE.fromDTO2POList(hostDTO);
+        List<HostPO> hostPOList = 
HostConverter.INSTANCE.fromDTO2POListUsingHostnames(hostDTO);
         for (HostPO hostPO : hostPOList) {
             hostPO.setStatus(HealthyStatusEnum.UNKNOWN.getCode());
         }
@@ -127,7 +127,7 @@ public class HostServiceImpl implements HostService {
 
     @Override
     public HostVO update(Long id, HostDTO hostDTO) {
-        HostPO hostPO = 
HostConverter.INSTANCE.fromDTO2POWithoutHostname(hostDTO);
+        HostPO hostPO = HostConverter.INSTANCE.fromDTO2PO(hostDTO);
         hostPO.setId(id);
         hostDao.partialUpdateById(hostPO);
         return get(id);
diff --git 
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/impl/JobServiceImpl.java
 
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/impl/JobServiceImpl.java
index 777fec0a..d74ff7e4 100644
--- 
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/impl/JobServiceImpl.java
+++ 
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/impl/JobServiceImpl.java
@@ -159,8 +159,8 @@ public class JobServiceImpl implements JobService {
 
             for (int j = 0; j < stage.getTasks().size(); j++) {
                 Task task = stage.getTasks().get(j);
-                TaskPO taskPO =
-                        findCorrectTaskPO(taskPOList, 
task.getTaskContext().getHostname());
+                TaskPO taskPO = findCorrectTaskPO(
+                        taskPOList, 
task.getTaskContext().getHostDTO().getHostname());
                 if (taskPO == null) {
                     throw new ApiException(ApiExceptionEnum.JOB_NOT_RETRYABLE);
                 }
diff --git 
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/impl/TaskLogServiceImpl.java
 
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/impl/TaskLogServiceImpl.java
index be24d945..acdaf8f3 100644
--- 
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/impl/TaskLogServiceImpl.java
+++ 
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/impl/TaskLogServiceImpl.java
@@ -19,7 +19,9 @@
 package org.apache.bigtop.manager.server.service.impl;
 
 import org.apache.bigtop.manager.common.enums.JobState;
+import org.apache.bigtop.manager.dao.po.HostPO;
 import org.apache.bigtop.manager.dao.po.TaskPO;
+import org.apache.bigtop.manager.dao.repository.HostDao;
 import org.apache.bigtop.manager.dao.repository.TaskDao;
 import org.apache.bigtop.manager.grpc.generated.TaskLogReply;
 import org.apache.bigtop.manager.grpc.generated.TaskLogRequest;
@@ -40,9 +42,14 @@ public class TaskLogServiceImpl implements TaskLogService {
     @Resource
     private TaskDao taskDao;
 
+    @Resource
+    private HostDao hostDao;
+
     public void registerSink(Long taskId, FluxSink<String> sink) {
         TaskPO taskPO = taskDao.findById(taskId);
-        String hostname = taskPO.getHostname();
+        HostPO hostPO = hostDao.findByHostname(taskPO.getHostname());
+        String hostname = hostPO.getHostname();
+        Integer grpcPort = hostPO.getGrpcPort();
 
         if (JobState.fromString(taskPO.getState()) == JobState.PENDING
                 || JobState.fromString(taskPO.getState()) == 
JobState.CANCELED) {
@@ -55,7 +62,7 @@ public class TaskLogServiceImpl implements TaskLogService {
                     .start();
         } else {
             TaskLogServiceGrpc.TaskLogServiceStub asyncStub =
-                    GrpcClient.getAsyncStub(hostname, 
TaskLogServiceGrpc.TaskLogServiceStub.class);
+                    GrpcClient.getAsyncStub(hostname, grpcPort, 
TaskLogServiceGrpc.TaskLogServiceStub.class);
             TaskLogRequest request =
                     TaskLogRequest.newBuilder().setTaskId(taskId).build();
             asyncStub.getLog(request, new LogReader(sink));
diff --git a/bigtop-manager-server/src/main/resources/application.yml 
b/bigtop-manager-server/src/main/resources/application.yml
index 72a70560..9c3a1282 100644
--- a/bigtop-manager-server/src/main/resources/application.yml
+++ b/bigtop-manager-server/src/main/resources/application.yml
@@ -17,11 +17,6 @@
 # under the License.
 #
 
-bigtop:
-  manager:
-    grpc:
-      port: 8835
-
 spring:
   banner:
     charset: utf-8
diff --git a/bigtop-manager-server/src/main/resources/ddl/MySQL-DDL-CREATE.sql 
b/bigtop-manager-server/src/main/resources/ddl/MySQL-DDL-CREATE.sql
index a03fe963..ca8134a4 100644
--- a/bigtop-manager-server/src/main/resources/ddl/MySQL-DDL-CREATE.sql
+++ b/bigtop-manager-server/src/main/resources/ddl/MySQL-DDL-CREATE.sql
@@ -125,7 +125,7 @@ CREATE TABLE `host_component`
 CREATE TABLE `host`
 (
     `id`                   BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
-    `cluster_id`           BIGINT(20) UNSIGNED NOT NULL,
+    `cluster_id`           BIGINT(20) UNSIGNED DEFAULT NULL,
     `hostname`             VARCHAR(255) DEFAULT NULL,
     `ssh_user`             VARCHAR(255) DEFAULT NULL,
     `ssh_port`             INTEGER DEFAULT NULL,
@@ -217,8 +217,6 @@ CREATE TABLE `task`
     `custom_command`  VARCHAR(255),
     `content`         TEXT,
     `context`         TEXT NOT NULL,
-    `stack_name`      VARCHAR(255),
-    `stack_version`   VARCHAR(255),
     `state`           VARCHAR(255),
     `cluster_id`      BIGINT,
     `job_id`          BIGINT,
diff --git 
a/bigtop-manager-server/src/main/resources/ddl/PostgreSQL-DDL-CREATE.sql 
b/bigtop-manager-server/src/main/resources/ddl/PostgreSQL-DDL-CREATE.sql
index 0cddc589..f05d4ef5 100644
--- a/bigtop-manager-server/src/main/resources/ddl/PostgreSQL-DDL-CREATE.sql
+++ b/bigtop-manager-server/src/main/resources/ddl/PostgreSQL-DDL-CREATE.sql
@@ -121,7 +121,7 @@ CREATE INDEX idx_hc_host_id ON host_component (host_id);
 CREATE TABLE host
 (
     id                   BIGINT CHECK (id > 0)         NOT NULL GENERATED 
ALWAYS AS IDENTITY,
-    cluster_id           BIGINT CHECK (cluster_id > 0) NOT NULL,
+    cluster_id           BIGINT DEFAULT NULL,
     hostname             VARCHAR(255) DEFAULT NULL,
     ssh_user             VARCHAR(255) DEFAULT NULL,
     ssh_port             INT DEFAULT NULL,
@@ -222,8 +222,6 @@ CREATE TABLE task
     custom_command VARCHAR(255),
     content        TEXT,
     context        TEXT NOT NULL,
-    stack_name     VARCHAR(255),
-    stack_version  VARCHAR(255),
     state          VARCHAR(255),
     cluster_id     BIGINT,
     job_id         BIGINT,

Reply via email to