【微服务链路追踪】windows下zipkin持久化数据到ES后没有生成依赖关系dependencies问题

windows下springCloud整合zipkin持久化数据到ES后没有生成依赖关系dependencies问题



前言

在之前的文章中,我们通过将数据持久化到mysql得到了trace链路信息和依赖信息;当我们将zipkin数据持久化到elasticSearch,在zipkin UI页面却只看到了trace链路信息,没有生成依赖关系dependencies,这是什么原因呢,今天我们就一起一探究竟,把zipkin数据持久化到elasticSearch后的依赖关系图也弄出来。

通过查阅资料得知,zipkin会在es中创建以zipkin开头日期结尾的index,并且默认以天为单位分割,使用该存储模式时,zipkin中的依赖信息会无法显示,需要通过zipkin-dependencies工具包计算得出。找到了解决方案,我们就开干。

一、安装启动zipkin-dependencies服务

1.jar包下载地址:

https://github.com/openzipkin/zipkin-dependencies
拉到Versions,找到latest released job,下载最新jar包:
在这里插入图片描述
下载得到最新稳定版本的jar包zipkin-dependencies-2.6.4.jar。

2.启动zipkin-dependencies服务

windows下命令:

java  -jar zipkin-dependencies-2.6.4.jar --STORAGE_TYPE=elasticsearch --ES_HOSTS=localhost:9200

不出意外的出现报错,说参数未设置,具体如下:
在这里插入图片描述
查阅猿友的博文得知windows下需要配置环境变量才行,不能直接在命令上加参数。

3.设置环境变量

因为zip-dependencies源码中获取参数的方式是获取环境变量中的参数值:System.getenv(“STORAGE_TYPE”),因此需要将参数设置在环境变量中。windows下无法直接启动jar包,需要设置环境变量:
STORAGE_TYPE:elasticsearch
ES_HOSTS:localhost:9200
保存后,再次启动服务,启动命令:

java -Dserver.port=8181 -Dspark.testing.memory=1024000000 -jar zipkin-dependencies-2.6.4.jar

参数说明:
-Dserver.port:设置端口号;
-Dspark.testing.memory:设置spark分析使用内存,最小不能少于512M=51210241024=536870912;
然后再次启动,然后就发现又报错了,应该是生成依赖关系用到hadoop服务,而本地没有hadoop的环境,具体如下:
在这里插入图片描述
缺少hadoop环境,需要下载安装hadoop,没办法,没有就安装呗,硬着头皮往下走。

二、hadoop下载安装

1.下载hadoop安装包

选择Hadoop3.1.0版本
安装包下载地址:
https://archive.apache.org/dist/hadoop/common/hadoop-3.1.0/hadoop-3.1.0.tar.gz
Windows环境安装所需的bin文件包(我们这里选择3.1.0):
1、可以打开地址:https://gitee.com/nkuhyx/winutils ,里面选 3.1.0。
2、或者直接下载:https://gitee.com/tttzzzqqq/apache-hadoop-3.1.0-winutils。

2.配置hadoop环境变量

控制面板\所有控制面板项\系统\高级系统设置
HADOOP_HOME:D:\hadoop-3.1.0
path里面追加上: %HADOOP_HOME%\bin

3.检查环境变量是否配置成功

命令:hadoop version
在这里插入图片描述
可以看到hadoop版本号信息,说明安装配置成功。

4.修改Hadoop的配置文件

(1)配置 core-site.xml 文件
先在 D:/hadoop-3.1.0/data/ 目录下建 tmp 文件夹,
修改 core-site.xml 文件,文件路径:\hadoop-3.1.0\etc\hadoop\core-site.xml

<configuration>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/D:/hadoop-3.1.0/data/tmp</value>
    </property>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://localhost:9000</value>
    </property>
</configuration>

(2)修改mapred-site.xml 文件
文件路径:\hadoop-3.1.0\etc\hadoop\mapred-site.xml

<configuration>
    <property>
       <name>mapreduce.framework.name</name>
       <value>yarn</value>
    </property>
    <property>
       <name>mapred.job.tracker</name>
       <value>hdfs://localhost:9001</value>
    </property>
</configuration>

(3)修改yarn-site.xml 文件

<configuration>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    <property>
        <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
        <value>org.apache.hahoop.mapred.ShuffleHandler</value>
    </property>
</configuration>

(4)修改hdfs-site.xml 文件
在D:\hadoop-3.1.0\目录下创建data文件夹;
在data文件夹中(D:\hadoop-3.1.0\data)创建datanode和namenode文件夹还有tmp文件夹。
在这里插入图片描述
hdfs-site.xml 文件路径:\hadoop-3.1.0\etc\hadoop\hdfs-site.xml

<configuration>
    <!-- 这个参数设置为1,因为是单机版hadoop -->
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>/D:/hadoop-3.1.0/data/namenode</value>
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>/D:/hadoop-3.1.0/data/datanode</value>
    </property>
</configuration>

(5)修改hadoop-env.cmd 文件
文件路径:\hadoop-3.1.0\etc\hadoop\hadoop-env.cmd,打开后快捷键(ctrl+f),输入@rem The java implementation to use查找到,在set JAVA_HOME那一行将自己的JAVA_HOME路径配置上去:

set JAVA_HOME=D:\Java\jdk-8u202

在这里插入图片描述
(6)修改hadoop-env.sh文件
文件路径:\hadoop-3.1.0\etc\hadoop\hadoop-env.sh
使用快捷键(ctrl+f)查找export JAVA_HOME,找到相应的位置,替换配置自己jdk安装路径:

export JAVA_HOME=D:\Java\jdk-8u202

在这里插入图片描述

三.启动Hadoop服务

1.格式化namenode

在cmd中进入到D:\hadoop-3.1.0\bin路径
命令:hdfs namenode -format
在这里插入图片描述

2.开启hdfs服务

然后再进入到D:\hadoop-3.1.0\sbin路径
命令:start-dfs.cmd
会跳出两个窗口,不要关闭!

3.开启yarn服务

命令:start-yarn.cmd
在这里插入图片描述
当然也可以用命令:start-all.cmd ,一次性启动所有hadoop相关服务。

4.检查服务是否正常

发现ResourceManager启动报错,具体信息如下:
7
查资料发现,hadoop启动报错:“org/apache/hadoop/yarn/server/timelineservice/collector/TimelineCollectorManager”,主要是缺少timelineCollectorManager的jar包。
解决方案:
将hadoop3.1.0 版本将share\hadoop\yarn\timelineservice\hadoop-yarn-server-timelineservice-3.1.0.jar放到share\hadoop\yarn\lib 下,照做后重新启动服务。

5.查看Hadoop运行的进程

命令:jps
发现成功启动所有服务。
在这里插入图片描述

6.查看Hadoop服务页面

访问namenode和HDFS的页面以及resourcemanager的页面来观察集群是否正常,可以通过访问namenode和HDFS的Web UI界面:http://localhost:9870,以及resourcemanager的页面:http://localhost:8088
在这里插入图片描述
在这里插入图片描述

四.再次启动zipkin-dependencies服务

启动命令:

java -Dserver.port=8181 -Dspark.testing.memory=1024000000 -jar zipkin-dependencies-2.6.4.jar

在这里插入图片描述
这里要注意的是程序只会根据当日的zipkin数据实时计算一次依赖关系,并以索引zipkin:dependency-2023-12-07方式存入es中,然后就退出了,因此要做到实时更新依赖的话需要自己想办法实现周期性执行zipkin-dependencies服务。
再次查看kibana上的es索引信息,发现多了一个:zipkin-dependency-2023-12-07的索引:
在这里插入图片描述

五.访问zipkin UI页查看依赖关系

重新进行微服务接口调用,然后刷新zipkin的页面,查看依赖菜单,终于出现了依赖关系:
在这里插入图片描述


总结

虽然说我们实际用到项目中时,大多数都是在linux环境上安装zipkin服务,但是windows环境下实验也很有意义,毕竟本地操作会方便很多。因为这个问题困扰了我很久,并且在Linux环境使用时也遇到了持久化到es依赖关系无法显示的这个问题,所以特此验证,并记录分享出来,希望对有同样困惑的同学有所帮助!也感谢以下博主的分享。

参考文章:
https://blog.csdn.net/xia296/article/details/108864084
https://blog.csdn.net/LSY_CSDN_/article/details/105126095
https://blog.csdn.net/tttzzzqqq2018/article/details/131928028

  • 16
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值