华为云用户手册

  • Java Java API主要由org.apache.oozie.client.OozieClient提供。 表1 接口介绍 方法 说明 public String run(Properties conf) 运行job public void start(String jobId) 启动指定的job public String submit(Properties conf) 提交job public void kill(String jobId) 删除指定的job public void suspend(String jobId) 暂停指定的job public void resume(String jobId) 恢复指定的job public WorkflowJob getJobInfo(String jobId) 获取Job信息 父主题: 常用API介绍
  • Oozie样例工程介绍 MRS样例工程获取地址为https://github.com/huaweicloud/huaweicloud-mrs-example,切换分支为与MRS集群相匹配的版本分支,然后下载压缩包到本地后解压,即可获取各组件对应的样例代码工程。 当前MRS提供以下Oozie相关样例工程: 表1 HOozie相关样例工程 样例工程位置 描述 oozie-examples/ooziesecurity-examples/OozieMapReduceExample Oozie提交MapReduce任务示例程序。 本示例演示了如何通过Java API提交MapReduce作业和查询作业状态,对网站的日志文件进行离线分析。 oozie-examples/ooziesecurity-examples/OozieSparkHBaseExample 使用Oozie调度Spark访问HBase的示例程序。 oozie-examples/ooziesecurity-examples/OozieSparkHiveExample 使用Oozie调度Spark访问Hive的示例程序。 父主题: 概述
  • 参数解释 FS Action节点中包含的各参数及其含义,请参见表1。 表1 参数含义 参数 含义 name FS活动的名称 delete 删除指定的文件和目录的标签 move 将文件从源目录移动到目标目录的标签 chmod 修改文件或目录权限的标签 path 当前文件路径 source 源文件路径 target 目标文件路径 permissions 权限字符串 “${变量名}”表示:该值来自job.properties所定义。 例如:${nameNode}表示的就是“hdfs://hacluster”。(可参见job.properties)
  • 参数解释 MapReduce Action节点中包含的各参数及其含义,请参见表1。 表1 参数含义 参数 含义 name map-reduce action的名称 resourceManager MapReduce ResourceManager地址 name-node HDFS NameNode地址 queueName 任务处理时使用的MapReduce队列名 mapred.mapper.class Mapper类名 mapred.reducer.class Reducer类名 mapred.input.dir MapReduce处理数据的输入目录 mapred.output.dir MapReduce处理后结果数据输出目录 mapred.map.tasks MapReduce map任务个数 “${变量名}”表示:该值来自job.properties所定义。 例如:${nameNode}表示的就是“hdfs://hacluster”。(可参见job.properties)
  • 参数解释 “coordinator.xml”中包含的各参数及其含义,请参见表1。 表1 参数含义 参数 含义 frequency 流程定时执行的时间间隔 start 定时流程任务启动时间 end 定时流程任务终止时间 workflowAppUri Workflow流程任务在HDFS上的存放路径 resourceManager MapReduce ResourceManager地址 queueName 任务处理时使用的Mapreduce队列名 nameNode HDFS NameNode地址 “${变量名}”表示:该值来自job.properties所定义。 例如:${nameNode}表示的就是“hdfs://hacluster”。(可参见job.properties)
  • 开发流程 本文档主要基于java API对Oozie进行应用开发。 开发流程中各阶段的说明如图1和表1所示。 图1 Oozie应用程序开发流程 表1 Oozie应用开发的流程说明 阶段 说明 参考文档 了解基本概念 在开始开发应用前,需要了解Oozie的基本概念,了解场景需求等。 常用概念 准备开发和运行环境 Oozie的应用程序当前推荐使用Java语言进行开发。可使用IDEA工具。 准备开发和运行环境 准备工程 Oozie提供了不同场景下的样例程序,您可以导入样例工程进行程序学习。 下载并导入样例工程 准备安全认证 如果您使用的是安全集群,需要进行安全认证。 准备安全认证代码 根据场景开发工程 提供了Java语言的样例工程。 开发程序 编译并运行程序 指导用户将开发好的程序编译并提交运行。 调测程序 查看程序运行结果 程序运行结果会写在用户指定的路径下。用户还可以通过UI查看应用运行情况。 调测程序 父主题: 概述
  • 参数解释 “job.properties”文件中包含的各参数及其含义,请参见表1。 表1 参数含义 参数 含义 nameNode HDFS NameNode集群地址 resourceManager Yarn ResourceManager地址 queueName 流程任务处理时使用的MapReduce队列名 dataLoadRoot 流程任务所在目录名 oozie.coord.application.path Coordinator流程任务在HDFS上的存放路径 start 定时流程任务启动时间 end 定时流程任务终止时间 workflowAppUri Workflow流程任务在HDFS上的存放路径 可以根据业务需要,以“key=values”的格式自定义参数及值。
  • 样例代码 nameNode=hdfs://haclusterresourceManager=10.1.130.10:26004queueName=QueueAdataLoadRoot=examplesoozie.coord.application.path=${nameNode}/user/oozie_cli/${dataLoadRoot}/apps/dataLoadstart=2013-04-02T00:00Zend=2014-04-02T00:00ZworkflowAppUri=${nameNode}/user/oozie_cli/${dataLoadRoot}/apps/dataLoad
  • 开发流程 工作流配置文件“workflow.xml”(“coordinator.xml”是对工作流进行调度,“bundle.xml”是对一组coordinator进行管理)与“job.properties”。 如果有实现代码,需要开发对应的jar包,例如Java Action;如果是Hive,则需要开发SQL文件。 上传配置文件与jar包(包括依赖的jar包)到HDFS,上传的路径取决于“workflow.xml”中的“oozie.wf.application.path”配置的路径。 提供三种方式对工作流进行操作,详情请参见更多信息。 Shell命令 Java API Hue Oozie客户端提供了比较完整的examples示例供用户参考,包括各种类型的Action,以及Coordinator以及Bundle的使用。以客户端安装目录为“/opt/client”为例,examples具体目录为“/opt/client/Oozie/oozie-client-*/examples”。 如下通过一个Mapreduce工作流的示例演示如何配置,并通过Shell命令调用。
  • 规划MapReduce访问多组件样例程序数据 创建HDFS数据文件。 在Linux系统中新建文本文件,将待处理的数据复制到文件中。例如将场景说明中log1.txt中的内容复制保存到data.txt。 执行以下命令进入HDFS客户端目录并认证用户。 cd HDFS客户端安装目录 source bigdata_env kinit 组件业务用户(该用户需要具有操作HDFS的权限,首次认证需要修改密码) 在HDFS上创建一个文件夹“/tmp/examples/multi-components/mapreduce/input/”,并上传data.txt到此目录,操作如下: 在HDFS客户端使用以下命令创建目录。 hdfs dfs -mkdir -p /tmp/examples/multi-components/mapreduce/input/ 执行以下命令上传文件至HDFS。 hdfs dfs -put local_filepath/data.txt /tmp/examples/multi-components/mapreduce/input/ 创建HBase表并插入数据。 执行以下命令进入HBase客户端。 cd HBase客户端安装目录 source bigdata_env kinit 组件业务用户 hbase shell 执行以下命令在HBase shell交互窗口创建数据表table1,该表有一个列族cf。 create 'table1', 'cf' 执行以下命令插入一条rowkey为1、列名为cid、数据值为123的数据。 put 'table1', '1', 'cf:cid', '123' 执行以下命令退出HBase客户端。 quit 创建Hive表并载入数据。 使用以下命令进入Hive客户端。 cd Hive客户端安装目录 source bigdata_env kinit 组件业务用户 beeline 执行以下命令在Hive beeline交互窗口创建数据表person,该表有3个字段:name/gender/stayTime。 CREATE TABLE person(name STRING, gender STRING, stayTime INT) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' stored as textfile; 执行以下命令在Hive beeline交互窗口加载数据文件。 LOAD DATA INPATH '/tmp/examples/multi-components/mapreduce/input/' OVERWRITE INTO TABLE person; 执行命令!q退出。 由于Hive加载数据将HDFS对应数据目录清空,所以需再次执行1。
  • 场景说明 在安全集群环境下,各个组件之间的相互通信不能够简单的互通,而需要在通信之前进行相互认证,以确保通信的安全性。 用户在开发Oozie应用程序时,某些场景下需要Oozie与Hadoop、Hive等之间进行通信。那么Oozie应用程序中需要写入安全认证代码,确保Oozie程序能够正常运行。 安全认证有两种方式: 命令行认证: 提交Oozie应用程序运行前,在Oozie客户端执行如下命令获得认证。 kinit 组件业务用户 代码认证(Kerberos安全认证): 通过获取客户端的principal和keytab文件在应用程序中进行认证,用于Kerberos安全认证的keytab文件和principal文件您可以联系管理员创建并获取,具体使用方法在样例代码中会有详细说明。 目前样例代码统一调用LoginUtil类进行安全认证,支持Oracle JAVA平台和IBM JAVA平台。 代码示例中请根据实际情况,修改“USERNAME”为实际用户名,例如“developuser”。 private static void login(String keytabFilePath, String krb5FilePath, String user) throws IOException { Configuration conf = new Configuration(); conf.set(KERBEROS_PRINCIPAL, user); conf.set(KEYTAB_FILE, keytabFilePath); conf.set(HADOOP_SECURITY_AUTHENTICATION, "kerberos"); conf.set(HADOOP_SECURITY_AUTHORIZATION, "true"); /* * if need to connect zk, please provide jaas info about zk. of course, * you can do it as below: * System.setProperty("java.security.auth.login.config", confDirPath + * "jaas.conf"); but the demo can help you more : Note: if this process * will connect more than one zk cluster, the demo may be not proper. you * can contact us for more help */ LoginUtil.setJaasConf(ZOOKEEPER_DEFAULT_LOGIN_CONTEXT_NAME, user, keytabFilePath); LoginUtil.setZookeeperServerPrincipal(ZOOKEEPER_DEFAULT_SERVER_PRINCIPAL); LoginUtil.login(user, keytabFilePath, krb5FilePath, conf); }
  • 规划MapReduce统计样例程序数据 将待处理的日志文件放置在HDFS系统中。 在Linux系统中新建文本文件,将待处理的数据复制到文件中。例如将典型场景说明中log1.txt中的内容复制保存到input_data1.txt,将log2.txt中的内容复制保存到input_data2.txt。 在HDFS上建立一个文件夹“/tmp/input”,并上传input_data1.txt,input_data2.txt到此目录,操作如下: 执行以下命令进入HDFS客户端目录并认证用户。 cd HDFS客户端安装目录 source bigdata_env kinit 组件业务用户 (该用户需要具有操作HDFS的权限,首次认证需要修改密码) 执行以下命令创建“/tmp/input”目录。 hdfs dfs -mkdir /tmp/input 执行以下命令将已准备好的文件上传至HDFS客户端的“/tmp/input”目录下。 hdfs dfs -put local_filepath/input_data1.txt /tmp/input hdfs dfs -put local_filepath/input_data2.txt /tmp/input
  • 常用概念 流程定义文件 描述业务逻辑的XML文件,包括“workflow.xml”、“coordinator.xml”、“bundle.xml”三类,最终由Oozie引擎解析并执行。 流程属性文件 流程运行期间的参数配置文件,对应文件名为“job.properties”,每个流程定义有且仅有一个该属性文件。 keytab文件 存放用户信息的密钥文件。在安全模式下,应用程序采用此密钥文件进行API方式认证。 Client 客户端直接面向用户,可通过Java API、Shell API、 REST API或者Web UI访问Oozie服务端。 Oozie WebUI界面 通过https://Oozie服务器IP:21003/oozie登录Oozie WebUI界面。 父主题: 概述
  • Oozie简介 Oozie是一个用来管理Hadoop job任务的工作流引擎,Oozie流程基于有向无环图(Directed Acyclical Graph)来定义和描述,支持多种工作流模式及流程定时触发机制。易扩展、易维护、可靠性高,与Hadoop生态系统各组件紧密结合。 Oozie流程的三种类型: Workflow 描述一个完整业务的基本流程。 Coordinator Coordinator流程构建在Workflow流程之上,实现了对Workflow流程的定时触发、按条件触发功能。 Bundle Bundle流程构建在Coordinator流程之上,提供对多个Coordinator流程的统一调度、控制和管理功能。 Oozie主要特点: 支持分发、聚合、选择等工作流程模式。 与Hadoop生态系统各组件紧密结合。 流程变量支持参数化。 支持流程定时触发。 自带一个Web Console,提供了流程查看、流程监控、日志查看等功能。
  • MapReduce样例工程介绍 MRS样例工程获取地址为https://github.com/huaweicloud/huaweicloud-mrs-example,切换分支为与MRS集群相匹配的版本分支,然后下载压缩包到本地后解压,即可获取各组件对应的样例代码工程。 当前MRS提供以下MapReduce相关样例工程: 表1 MapReduce相关样例工程 样例工程位置 描述 mapreduce-example-security MapReduce统计数据的应用开发示例: 提供了一个MapReduce统计数据的应用开发示例,通过类CollectionMapper实现数据分析、处理,并输出满足用户需要的数据信息。 相关样例介绍请参见MapReduce统计样例程序。 MapReduce作业访问多组件的应用开发示例: 以MapReduce访问HDFS、HBase、Hive为例,介绍如何编写MapReduce作业访问多个服务组件。帮助用户理解认证、配置加载等关键使用方式。 相关样例介绍请参见MapReduce访问多组件样例程序。 父主题: 概述
  • 问题 向YARN服务器提交MapReduce任务后,客户端提示如下信息后长时间无响应。 16/03/03 16:44:56 INFO hdfs.DFSClient: Created HDFS_DELEGATION_TOKEN token 44 for admin on ha-hdfs:hacluster16/03/03 16:44:56 INFO security.TokenCache: Got dt for hdfs://hacluster; Kind: HDFS_DELEGATION_TOKEN, Service: ha-hdfs:hacluster,Ident: (HDFS_DELEGATION_TOKEN token 44 for admin)16/03/03 16:44:56 INFO client.ConfiguredRMFailoverProxyProvider: Failing over to 5316/03/03 16:44:57 INFO input.FileInputFormat: Total input files to process : 20016/03/03 16:44:57 INFO mapreduce.JobSubmitter: number of splits:20016/03/03 16:44:57 INFO mapreduce.JobSubmitter: Submitting tokens for job: job_1456738266914_000516/03/03 16:44:57 INFO mapreduce.JobSubmitter: Kind: HDFS_DELEGATION_TOKEN, Service: ha-hdfs:hacluster,Ident: (HDFS_DELEGATION_TOKEN token 44 for admin)16/03/03 16:44:57 INFO impl.YarnClientImpl: Submitted application application_1456738266914_000516/03/03 16:44:57 INFO mapreduce.Job: The url to track the job: https://linux2:8090/proxy/application_1456738266914_0005/16/03/03 16:44:57 INFO mapreduce.Job: Running job: job_1456738266914_0005
  • 功能介绍 统计日志文件中本周末网购停留总时间超过2个小时的女性网民信息。 主要分为三个部分: 从原文件中筛选女性网民上网时间数据信息,通过类CollectionMapper继承Mapper抽象类实现。 汇总每个女性上网时间,并输出时间大于两个小时的女性网民信息,通过类CollectionReducer继承Reducer抽象类实现。 main方法提供建立一个MapReduce job,并提交MapReduce作业到hadoop集群。
  • 功能介绍 主要分为三个部分: 从HDFS原文件中抽取name信息,查询HBase、Hive相关数据,并进行数据拼接,通过类MultiComponentMapper继承Mapper抽象类实现。 获取拼接后的数据取最后一条输出到HBase、HDFS,通过类MultiComponentReducer继承Reducer抽象类实现。 main方法提供建立一个MapReduce job,并提交MapReduce作业到Hadoop集群。
  • 场景说明 假定用户有某个周末网民网购停留时间的日志文本,基于某些业务要求,要求开发MapReduce应用程序实现如下功能: 统计日志文件中本周末网购停留总时间超过2个小时的女性网民信息。 周末两天的日志文件第一列为姓名,第二列为性别,第三列为本次停留时间,单位为分钟,分隔符为“,”。 log1.txt:周六网民停留日志 LiuYang,female,20YuanJing,male,10GuoYijun,male,5CaiXuyu,female,50Liyuan,male,20FangBo,female,50LiuYang,female,20YuanJing,male,10GuoYijun,male,50CaiXuyu,female,50FangBo,female,60 log2.txt:周日网民停留日志 LiuYang,female,20YuanJing,male,10CaiXuyu,female,50FangBo,female,50GuoYijun,male,5CaiXuyu,female,50Liyuan,male,20CaiXuyu,female,50FangBo,female,50LiuYang,female,20YuanJing,male,10FangBo,female,50GuoYijun,male,50CaiXuyu,female,50FangBo,female,60
  • 场景说明 该样例以MapReduce访问HDFS、HBase、Hive为例,介绍如何编写MapReduce作业访问多个服务组件。帮助用户理解认证、配置加载等关键使用方式。 该样例逻辑过程如下: 以HDFS文本文件为输入数据: log1.txt:数据输入文件 YuanJing,male,10GuoYijun,male,5 Map阶段: 获取输入数据的一行并提取姓名信息。 查询HBase一条数据。 查询Hive一条数据。 将HBase查询结果与Hive查询结果进行拼接作为Map输出。 Reduce阶段: 获取Map输出中的最后一条数据。 将数据输出到HBase。 将数据保存到HDFS。
  • 在进行应用开发时,要准备的开发和运行环境如表1所示。 表1 开发环境 准备项 说明 操作系统 开发环境:Windows系统,支持Windows 7以上版本。 运行环境:Windows系统或Linux系统。 如需在本地调测程序,运行环境需要和集群业务平面网络互通。 安装和配置IntelliJ IDEA 开发环境的基本配置,建议使用2019.1或其他兼容版本。 说明: 若使用IBM JDK,请确保IntelliJ IDEA中的JDK配置为IBM JDK。 若使用Oracle JDK,请确保IntelliJ IDEA中的JDK配置为Oracle JDK。 若使用Open JDK,请确保IntelliJ IDEA中的JDK配置为Open JDK。 不同的IntelliJ IDEA不要使用相同的workspace和相同路径下的示例工程 安装Maven 开发环境基本配置。用于项目管理,贯穿软件开发生命周期。 安装JDK 开发和运行环境的基本配置,版本要求如下: 服务端和客户端仅支持集群自带的OpenJDK,不允许替换。 对于客户应用需引用SDK类的Jar包运行在客户应用进程中的: X86客户端: Oracle JDK:支持1.8版本; IBM JDK:支持1.8.0.7.20和1.8.0.6.15版本。 ARM客户端: OpenJDK:支持1.8.0_272版本(集群自带JDK,可通过集群客户端安装目录中“JDK”文件夹下获取)。 毕昇JDK:支持1.8.0_272版本。 说明: 基于安全考虑,服务端只支持TLS V1.2及以上的加密协议。 IBM JDK默认只支持TLS V1.0,若使用IBM JDK,请配置启动参数“com.ibm.jsse2.overrideDefaultTLS”为“true”,设置后可以同时支持TLS V1.0/V1.1/V1.2,详情可参考https://www.ibm.com/support/knowledgecenter/zh/SSYKE2_8.0.0/com.ibm.java.security.component.80.doc/security-component/jsse2Docs/matchsslcontext_tls.html#matchsslcontext_tls。 毕昇JDK详细信息可参考https://www.hikunpeng.com/zh/developer/devkit/compiler/jdk。 7-zip 用于解压“*.zip”和“*.rar”文件,支持7-Zip 16.04版本。
  • 代码样例 如下是写数据的代码片段: // Alter the table, adding a column with a default value.// Note: after altering the table, the table needs to be re-opened.AlterTableOptions ato = new AlterTableOptions();ato.addColumn("added", org.apache.kudu.Type.DOUBLE, DEFAULT_DOUBLE);client.alterTable(tableName, ato); 示例代码中,AlterTableOptions是要修改表属性的集合,这里往表里新增加了一列。
  • MapReduce简介 Hadoop MapReduce是一个使用简易的并行计算软件框架,基于它写出来的应用程序能够运行在由上千个服务器组成的大型集群上,并以一种可靠容错的方式并行处理上T级别的数据集。 一个MapReduce作业(application/job)通常会把输入的数据集切分为若干独立的数据块,由map任务(task)以完全并行的方式来处理。框架会对map的输出先进行排序,然后把结果输入给reduce任务,最后返回给客户端。通常作业的输入和输出都会被存储在文件系统中。整个框架负责任务的调度和监控,以及重新执行已经失败的任务。 MapReduce主要特点如下: 大规模并行计算 适用于大型数据集 高容错性和高可靠性 合理的资源调度
  • 场景说明 访问安全集群环境中的服务,需要先通过Kerberos安全认证。所以Kudu应用程序中需要有安全认证代码,确保Kudu程序能够正常运行。 安全认证有两种方式: 命令行认证: 提交Kudu应用程序运行前,在Kudu客户端执行如下命令进行认证。 kinit 组件业务用户 该方式仅适用于Linux操作系统,且安装了Kudu的客户端。 代码认证: 通过获取客户端的principal和keytab文件进行认证。
  • 代码样例 如下是建立连接代码片段: // 创建Kudu连接对象KuduClient client = new KuduClient.KuduClientBuilder(KUDU_MASTERS).build(); 示例代码中,KUDU_MASTERS为kudu集群的masters地址列表,例如:192.168.0.100:7051, 192.168.0.101:7051, 192.168.0.102:7051。格式为地址:端口,中间用半角逗号隔开;生产上建议使用长连接对象。
  • Master Master是中心管理节点,负责管理所有的tablet、tablet server以及副本之间的关联关系。同一时间集群中只有一个acting master(leader master),如果leader master挂了,一个新的master会通过Raft算法选举出来。所有的master数据都存放在一个tablet中,这个tablet会被复制到所有的candidate master上;tablet server会定期向master发送心跳。
  • 开发流程 开发流程中各阶段的说明如图1和表1所示。 图1 Kudu应用程序开发流程 表1 Kudu应用开发的流程说明 阶段 说明 参考文档 了解基本概念 在开始开发应用前,需要了解Kudu的基本概念。 常用概念 准备开发和运行环境 Kudu的应用程序支持多种语言进行开发,一般使用Java为主,推荐使用Eclipse 或者IntelliJ IDEA工具,请根据指导完成开发环境配置。 准备开发和运行环境 根据场景开发工程 提供样例工程,帮助用户快速了解Kudu各部件的编程接口。 开发程序 查看程序运行结果 指导用户将开发好的程序编译提交运行并查看结果。 调测程序 父主题: 概述
  • Kafka样例工程介绍 MRS样例工程获取地址为https://github.com/huaweicloud/huaweicloud-mrs-example,切换分支为与MRS集群相匹配的版本分支,然后下载压缩包到本地后解压,即可获取各组件对应的样例代码工程。 当前MRS提供以下Kafka相关样例工程: 表1 Kafka相关样例工程 样例工程位置 描述 kafka-examples 单线程生产数据,相关样例请参考Producer API样例。 单线程消费数据,相关样例请参考Consumer API样例。 多线程生产数据,相关样例请参考多线程Producer样例。 多线程消费数据,相关样例请参考多线程Consumer样例。 基于KafkaStreams实现WordCount,相关样例请参考KafkaStreams样例 父主题: 概述
  • Kudu简介 Kudu是专为Apache Hadoop平台开发的列式存储管理器,具有Hadoop生态系统应用程序的共同技术特性:在通用的商用硬件上运行,可水平扩展,提供高可用性。 Kudu的设计具有以下优点: 能够快速处理OLAP工作负载。 支持与MapReduce,Spark和其他Hadoop生态系统组件集成。 与Apache Impala的紧密集成,使其成为将HDFS与Apache Parquet结合使用的更好选择。 提供强大而灵活的一致性模型,允许您根据每个请求选择一致性要求,包括用于严格可序列化的一致性的选项。 提供同时运行顺序读写和随机读写的良好性能。 易于管理。 高可用性。Master和TServer采用raft算法,该算法可确保只要副本总数的一半以上可用,tablet就可以进行读写操作。例如,如果3个副本中有2个副本或5个副本中有3个副本可用,则tablet可用。即使主tablet出现故障,也可以通过只读的副tablet提供读取服务。 支持结构化数据模型。 通过结合所有以上属性,Kudu的目标是支持在当前Hadoop存储技术上难以实现或无法实现的应用。 Kudu的应用场景有: 需要最终用户立即使用新到达数据的报告型应用。 同时支持大量历史数据查询和细粒度查询的时序应用。 使用预测模型并基于所有历史数据定期刷新预测模型来做出实时决策的应用。
  • 解决步骤 检查工程conf目录下“producer.properties”中配置的“bootstrap.servers”配置值中访问的IP和端口是否正确: 如果IP与Kafka集群部署的业务IP不一致,那么需要修改为当前集群正确的IP地址。 如果配置中的端口为21007(Kafka安全模式端口),那么修改该端口为9092(Kafka普通模式端口)。 检查网络是否正常,确保当前机器能够正常访问Kafka集群。
共100000条