
# 调测Kafka应用
#### 前提条件
- 客户端本地能登录MRS服务的弹性云服务器，登录方式详见"弹性云服务器《用户指南》"中"入门 \> 登录弹性云服务器"的SSH登录方式。
- 样例工程在已经通过Maven编译。
 
#### 示例：Maven工程打包到Linux下运行样例
1. 执行**mvn package生成**jar包，在工程目录target目录下获取，比如:kafka-examples-1.6.0.jar。
2. 执行**mvn dependency:copy-dependencies -DoutputDirectory=kafka-examples-lib -DincludeScope=compile**，导出kafka样例工程依赖的jar包，比如放到kafka-examples-lib目录。
3. 在第一步指定的目录下生成一个Jar包和一个存放lib的文件夹。 ![](https://support.huaweicloud.com/devg-mrs/zh-cn_image_0250982514.jpg)
   
4. 将刚才生成的依赖库文件夹（此处为"kafka-examples-lib"）拷贝到MRS服务的某个Linux环境上任意目录下，例如："/opt/example"，然后将刚才生成的jar包拷贝到"/opt/example/kafka-examples-lib"目录下。
5. 将样例工程的conf目录拷贝到与依赖库文件夹同级目录下，即"/opt/example"目录下，并创建logs目录，用于记录jar包运行日志。
6. 切换到root用户，将拷贝进去的conf，kafka-examples-lib，logs目录修改为omm：wheel用户组所有，执行以下命令切换用户。 **sudo su - root**
   **chown -R omm:wheel /opt/example/\***
   ![](https://support.huaweicloud.com/devg-mrs/zh-cn_image_0250982642.jpg)
   
7. 切换为omm用户，进入拷贝目录下"/opt/example"，首先确保conf目录下和依赖库文件目录下的所有文件，对当前用户均具有可读权限；同时保证已安装jdk并已设置java相关环境变量，然后执行命令，如java -cp .:/opt/example/conf:/opt/example/kafka-examples-lib/* com.huawei.bigdata.kafka.example.Producer，运行样例工程。
   **su - omm**
   **chmod 750 /opt/example**
   **cd /opt/example**
   **java -cp .:/opt/example/conf:/opt/example/kafka-examples-lib/\* com.huawei.bigdata.kafka.example.Producer**
   
 
#### 运行结果观察方式
样例程序工程jar包运行结果可以在logs目录下的client.log观察，默认状态下的log4j.properties没有将运行状态输出，若需要观察程序运行的信息，需将log4j.properties按如下方式配置：
```
# 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
#
#    http://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.
kafka.logs.dir=logs
log4j.rootLogger=INFO, stdout, kafkaAppender 
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=[%d] %p %m (%c)%n
log4j.logger.kafka=INFO, kafkaAppender
log4j.appender.kafkaAppender=org.apache.log4j.DailyRollingFileAppender
log4j.appender.kafkaAppender.DatePattern='.'yyyy-MM-dd-HH
log4j.appender.kafkaAppender.File=${kafka.logs.dir}/client.log
log4j.appender.kafkaAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.kafkaAppender.layout.ConversionPattern=[%d] %p %m (%c)%n
# Turn on all our debugging info
#log4j.logger.kafka.producer.async.DefaultEventHandler=DEBUG, kafkaAppender
#log4j.logger.kafka.client.ClientUtils=DEBUG, kafkaAppender
#log4j.logger.kafka.perf=DEBUG, kafkaAppender
#log4j.logger.kafka.perf.ProducerPerformance$ProducerThread=DEBUG, kafkaAppender
#log4j.logger.org.I0Itec.zkclient.ZkClient=DEBUG
```
将kafkaAppender添加到rootLogger，并将日志级别调整到需要观察的级别。
