实时流计算问题汇总与解决方案

        本次大作业的环境涉及到使用Docker搭建一个zookeeper+kafka+storm的集群环境并进行数字大屏可视化展示,在这个过程中不可避免会碰到许多难以预料的问题,下面我将针对在这一过程中遇到的问题进行总结归纳。

一、Docker Desktop安装位置

        Docker安装的位置默认在C盘中且在交互界面中没有提供修改安装路径的方式,为了将其安装在C盘之外的地方,我阅读了Docker的官方文档,并通过控制台安装的方式通过命令参数指定安装的路径,并最终将其安装到了F盘中,详细的参考材料如下:

安装命令:"Docker Desktop Installer.exe" install --installation-dir=<path>,其中需要将<path>修改为自己实际需要安装的位置。

官方文档:Install Docker Desktop on Windows | Docker Docs

二、安装成功后无法运行Docker

首先给出问题展示图:

18be1eab9ec64b0795ba25834af12e61.png

        可以看到提示"WSL Kernel version too low",因此我们需要对WSL的版本进行升级。

        这个问题的解决方法就是在管理员powershell中使用wsl --update进行更新,在完成更新之后使用netsh winsock reset即可。

三、Docker Engine stopped

57d7183ee73a4255af78273fb06d1042.png

        出现这个的原因是没有打开计算机的wls功能,按照下面的方式打开即可:

8eb3667940674ff3b41508ac91189c26.png

四、pull速度太慢

        出现pull的速度太慢一般是由于镜像仓库在国外,通过国内的网络进行下载会出现这种下载速度非常慢的问题,因此,我们只需要设置Docker的下载源为国内源即可。

        下面给出我目前设置的国内源:

"registry-mirrors": [
    "http://hub-mirror.c.163.com"
  ]

8cf1fa7993704dd0a4a4352b27f2a1dd.png

080e5e77270e49cebbe140ccbe3e9cf0.png

五、Docker内存太小导致部分容器无法启动

        在一些时候如果我们开启的容器过多会使用掉大量的内存以及CPU资源,如果我们给WSL设置的内存过小或者给的CPU核数过小,就会出现容器无法打开甚至卡死的问题,那么就需要通过设置给WSL分配的内存大小来解决这个问题。

 

注意:配置这些内容会导致Docker中的容器和镜像丢失!!!

 

1.进入UserProfile目录

        通过CTRL+R会弹出下面的窗口

75856c5283494fec9faa571d320b2b9d.png

        在下面的窗口中输入%UserProfile%即可进入到UserProfile页面中。

        在页面中打开.wslconfig文件(如果没有的话就创建这个文件)

cbf06073d4e64ea5aacaf8e85c0b7006.png

之后可以看到下面的内容(没有的话就将下面的内容复制进去):

05c63f92fe904ca58df6ff17f818d7cb.png

[wsl2]
memory=4GB
processors=8
swap=0
localhostForwarding=true


        可以分别看到有4个可调节的参数项,memory是设置WSL的内存大小的,processors是设置给WSL分配的最大CPU核心数。

        重启电脑即可。

再次注意:配置这些内容会导致Docker中的容器和镜像丢失!!!

六、nimbus找不到zookeeper

        如果你使用的是wurstmeister/kafka你可能就会出现这个问题。

        首先可以先进入到nimbus中

2a96275b5ee8411ba7e1cc23302095b2.png

        通过配置storm中的配置文件我们可以看到下面的内容:

20cf7b64c8994ae78afc44efdc804589.png

        可以看到这个文件中对storm.zookepper.servers指定的名字叫做zookeeper并且目前我还没有发现有什么地方可以修改这个设置,所以在实际搭建集群的时候可以将zookeeper容器的名称就指定为zookeeper。

七、supervisor找不到nimbus

        和上面的问题一样,在storm镜像的配置文件中已经写定了nimbus的名字就叫nimbus所以如果你的nimbus容器命名成了其他的名称就会出现找不到的问题。

2f36169caa734b6b9aa0d2a83c9593e7.png

八、在主机连接不到kafka

        如果在Java中使用Local模式连接kafka出现连接不上kafka的情况可能是由于在创建kafka容器的时候没有正确的将本机主机的IP地址指定到docker容器的配置中。

        下面是我的kafka配置,注意将IP地址改为你实际的IP地址:

cfd8c99c49ee417e960ade70e97ea4c6.png

九、storm本地模式莫名中断

        其实出现中断的原因特别简单。

下面是使用本地模式提交拓扑的一段代码:

// 本地模式运行
LocalCluster localCluster = new LocalCluster();
localCluster.submitTopology("StockTopology", config, topology);
// 在本地运行10秒钟
Thread.sleep(10000);
// 停止本地集群
localCluster.killTopology("StockTopology");
localCluster.shutdown();

        可以看到指定了Thread.sleep(10000),这行代码的作用是阻止程序继续向下运行到localCluster.shutdown()从而终止集群,因此如果这个sleep的时间设置的太小就会出现莫名的程序中断,所以注意将这个数值修改大一些。

 

 

  • 20
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值