从零开始实施推荐系统的落地部署——23.推荐系统案例(十三)部署canal的心得体会
这次部署canal花了很长时间,总会有一些原因造成部署不成功,现在我已经部署成功,总结一下我之前部署不成功的原因和解决办法。
1. 环境配置的原因:
启动elasticsearch,查看日志发现分配的ip分配出现错误,正常使用的ip是192.168.56.102,而不是66.66.66.102.在查看/etc/hosts,发现之前配置2个ip,避免出错,把66.66.66.0的网段删除。也可以在配置里指定设置好network.host: 192.168.56.102。
2. 启动canel-adapter出现的情况:
出现es failed的原因是根据在elasticsearch的配置elasticsearch.yml设置为node.name: es和canal-adapter/conf/application.yml的name: es有关系。Canal-1.1.5搭配elasticsearch-7.6.2设置为node.name: es7和name: es7,这样的设置能让配置找到canal-adapter/conf/es7/shop.yml,正常启动。如果是Canal-1.1.5搭配elasticsearch-6设置为node.name: es和name: es。但是canal-1.1.4设置不同,原本不能支持elasticsearch-7,经过重新编译后,可以支持elasticsearch-7,但是canal-adapter/conf目录里面没有es7,即使拷贝一个es7也无法使用。只能跟elasticsearch-6一样,设置为node.name: es和name: es即可正常使用。
出现上面的情况,是因为使用编译过的canal-1.1.4,要在shop.yml的配置里添加_type: _doc,不添加是以为在elasticsearch-7里会自动添加。因为在elasticsearch-7创建索引shop时不需要添加_doc,会自动添加。这是elasticsearch-7新的特性。
3. 在canal-1.1.5启动正常,还能全量同步数据到elasticsearch-7.6.2,但是在修改mysql的数据做增量测试时,出现下面的情况:
登录https://github.com/alibaba/canal/issues/2873发现有人也出现过这种情况,能全量同步,不能增量同步。也有人在这个帖子下面说:“https://abcops.cn/1279.html 我按照这个教程来了 全量和增量都可以了”,但是我打不开这个网址。还有人解释了这个原因:“配置的参数试了遍,怀疑是es7x.etl.ESEtlService 没有调用,因为adapter已经检测到binlog里的insert事件了。java不懂呀,不然直接debug了,应该是1.1.5在某个条件下才调用es7x.etl.ESEtlService”。因为canal-1.1.5是测试版,为了避免麻烦,选择canal-1.1.4。不选择canal-1.1.3是因为canal-1.1.4以上的版本多语言新增【Python客户端】。而我做这个推荐系统想尽可能使用python完成。
昨晚只通过修改mysql的数据来测试canal-1.1.4能增量同步,只修改3条数据,查询同步3条,以为不能全量同步。电脑没有关闭,去睡觉。今天发现mysql的全量数据同步到elasticsearch-7.6.2里。可以通过Kibana的Dev Tools里输入GET /shop/_search或在linux系统使用curl http://192.168.56.102:8081/etl/es/shop.yml -X POST查看相关数据信息。如:
Mysql的全量数据是16条,上面说明数据全量导入到ES。可能是因为分配mas2虚拟机的配置是2C4G,mysql,elasticsearch-7.6.2和canal-1.1.4的都配置在一起,资源有限导致同步数据的时间变慢吧。虽然部署canal花了很多时间,但个人感觉还是值得,收获满满。
- 点赞
- 收藏
- 关注作者
评论(0)