Note_Logistics_Day04

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
简介: Note_Logistics_Day04

stypora-copy-images-to: img

typora-root-url: ./

Logistics_Day04:业务服务器和大数据服务器

01-[复习]-上次课程内容回顾

主要讲解2个方面内容:物流项目业务数据(数据库部署)和OGG 实时采集Oracle数据库表的数据。

1、物流项目业务数据
  实际物流快递公司来说,有很多业务系统,使用不同类型数据库存储数据,在此仅仅以2个业务系统为例
  - 物流系统Logistics
    使用Oracle数据库
  - CRM系统客户关系管理系统
    使用MySQL数据库
  统一采用Docker容器部署业务数据库,为了方便学习业务:业务数据实时采集
  【针对上述2个业务系统数据,进行实时增量采集,分别使用不同采集框架:】
    - 物流系统Logistics,Oracle数据库使用OGG采集
    - CRM系统,MySQL数据库使用Canal采集
    【将OGG和Canal采用Docker容器部署框架,简化运维,环境构建】
  【node1.itcast.cn虚拟机上,有3个容器Container】
  - mysql 容器:运行MySQL数据库
  - canal-server 容器:运行Canal Server服务,采集MySQL数据
  - myoracle 容器:运行Oracle数据库和OGG服务框架,采集数据
2、OGG 实时采集Oracle数据库表的数据
  - OGG 是什么,功能是啥
  - 基本原理
    源端SRC:捕获Oracle数据库日志数据
      MGR(管理者)、EXTRACT(提取进程)、本地缓存(Local TrailFile)、Pump进程(发送数据到目标端)
    目标端DST:解析日志数据,发送目标系统
      GR(管理者)、Collector(收集进程)、远程缓存(Remote TrailFile)、Replicat进程(复制进程,解析数据,发送Kafka或者其他)
  - 启动Oracle数据库和OGG服务,测试数据实时采集

02-[了解]-第4天:课程内容提纲

主要讲解:如何将业务系统(仅仅以物流系统Logistics和客户关系管理系统CRM为例)实时增量采集数据到分布式消息队列Kafka(1个业务系统存储1个Topic:一对一)。

  • 、MySQL数据库(CRM系统):使用Canal框架实时采集
1)、Canal 实时采集MySQL数据库表数据【掌握】
  原理架构
  配置
  高可用HA集群,新版本
  使用测试
2)、大数据服务相关说明
  基于CM安装部署CDH,单机伪分布式
  CM安装CDH架构原理
3)、扩展:
  Oracle和MySQL数据库表数据实时同步,还有其他框架,比如flume,Maxwell

03-理解]-Canal 数据同步之MySQL binlog日志

Canal是阿里巴巴开发数据实时同步框架,原理与OGG基本类似,都是捕获数据库日志数据,进行解析,将其发送到目标端(比如Kafka 消息队列)。新版Canal 1.1版本

针对MySQL数据库来说,日志数据:binlog日志,二进制日志。

binlog中存储四种类型日志数据:插入insert、更新update、删除delete和清空truncate

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6FDQii8l-1621504158590)(/img/1612326012096.png)]

默认情况下,MySQL数据库没有开启binlog日志,向表中CUDT操作时,不会记录日志到文件中。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-I96KHfjI-1621504158592)(/img/1615781586606.png)]

[root@node1 ~]# docker exec -it mysql /bin/bash
root@8b5cd2152ed9:/# 
root@8b5cd2152ed9:/# more /etc/mysql/my.cnf
## 相关配置解析:
## [mysqld]
## log-bin=mysql-bin #添加这一行就ok
## binlog-format=ROW #选择row模式
## server_id=1 #配置mysql replaction需要定义,不能和canal的slaveId重复
## expire_logs_days=7 # binlog文件保存7天
## max_binlog_size=500m # 每个binlog日志文件大小

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0T44p2jx-1621504158593)(/img/1615781688969.png)]

root@8b5cd2152ed9:/# mysql -uroot -p123456
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 6
Server version: 5.7.30-log MySQL Community Server (GPL)
Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> 

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-S11omI5y-1621504158593)(/img/1615781803587.png)]

可以查看MySQL数据库binlog日志文件存储目录

root@8b5cd2152ed9: ~# cd /var/lib/mysql
root@8b5cd2152ed9:/var/lib/mysql# ls -l
total 205364
-rw-r-----. 1 mysql mysql       56 May 29  2020 auto.cnf
-rw-------. 1 mysql mysql     1676 May 29  2020 ca-key.pem
-rw-r--r--. 1 mysql mysql     1112 May 29  2020 ca.pem
drwxr-x---. 2 mysql mysql       20 Jul  4  2020 canal_tsdb
-rw-r--r--. 1 mysql mysql     1112 May 29  2020 client-cert.pem
-rw-------. 1 mysql mysql     1676 May 29  2020 client-key.pem
drwxr-x---. 2 mysql mysql      186 Jul  4  2020 crm
-rw-r-----. 1 mysql mysql      576 Mar 13 08:50 ib_buffer_pool
-rw-r-----. 1 mysql mysql 50331648 Mar 15 02:18 ib_logfile0
-rw-r-----. 1 mysql mysql 50331648 Mar 15 02:18 ib_logfile1
-rw-r-----. 1 mysql mysql 79691776 Mar 15 02:18 ibdata1
-rw-r-----. 1 mysql mysql 12582912 Mar 15 02:22 ibtmp1
drwxr-x---. 2 mysql mysql     4096 May 29  2020 mysql
-rw-r-----. 1 mysql mysql 17271182 Mar 13 16:47 mysql-bin.000004
-rw-r-----. 1 mysql mysql      177 Mar 13 08:50 mysql-bin.000005
-rw-r-----. 1 mysql mysql      154 Mar 15 02:18 mysql-bin.000006
-rw-r-----. 1 mysql mysql       57 Mar 15 02:18 mysql-bin.index
drwxr-x---. 2 mysql mysql     8192 May 29  2020 performance_schema
-rw-------. 1 mysql mysql     1680 May 29  2020 private_key.pem
-rw-r--r--. 1 mysql mysql      452 May 29  2020 public_key.pem
-rw-r--r--. 1 mysql mysql     1112 May 29  2020 server-cert.pem
-rw-------. 1 mysql mysql     1676 May 29  2020 server-key.pem
drwxr-x---. 2 mysql mysql     8192 May 29  2020 sys
drwxr-x---. 2 mysql mysql       60 May 29  2020 test

04-[理解]-Canal 数据同步之工作原理

Canal [kə’næl],译意为水道/管道/沟渠,主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mlpZgGHi-1621504158594)(/img/1612334014005.png)]

Canal起源于,阿里巴巴杭州和美国机房数据同步备份,衍生框架,目前支持功能与版本如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-STmWvExv-1621504158595)(/img/1615790940107.png)]

Canal框架原理,参考MySQL数据主从复制原理

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DXKIP8Ip-1621504158595)(/img/1612334597112.png)]

  • 1)、MySQL master 将数据变更写入二进制日志( binary log, 其中记录叫做二进制日志事件binary log events,可以通过 show binlog events 进行查看);变更数据,记录日志:biglog
  • 2)、MySQL slave 将 master 的 binary log events 拷贝到它的中继日志(relay log);IO 线程,获取binlog
  • 3)、MySQL slave 重放 relay log 中事件,将数据变更反映它自己的数据;SQL线程,执行语句

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3TtCN1Vo-1621504158596)(/img/1612334674650.png)]

  • 1)、canal 模拟 MySQL slave 的交互协议,伪装自己为 MySQL slave ,向 MySQL master 发送dump 协议
  • 2)、MySQL master 收到 dump 请求,开始推送 binary log 给 slave (即 canal )
  • 3)、canal 解析 binary log 对象(原始为 byte 流);

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HBya9mJv-1621504158598)(/img/1612334913065.png)]

上图中功能,属于Canal新版才有的(解析binlog日志,发送到Kafka消息队列)。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-C3kyA6q7-1621504158599)(/img/1615791603097.png)]

05-[理解]-Canal 数据同步之Canal 架构

Canal框架使用Java语言编写,启动服务Server,每个服务配置多个实例Instance,如下结构所示:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-C9RVKebs-1621504158599)(/img/1615791782074.png)]

  • 1)、Canal Server 代表一个 Canal 运行实例,对应于一个 JVM;
  • 2)、Instance 对应于一个数据队列 (1个 Canal Server 对应 1…n 个 Instance)
  • 监控某个数据库database binlog日志,需要将数据,发送到Kafka消息队列和Es索引index
  • 发送到Kafka,称为1个实例:instance(binlog -> instance -> kafka)
  • 发送到Es,称为1个实例:instance(binlog -> instance -> es)
  • 3)、Instance下的子模块
  • eventParser: 数据源接入,模拟 slave 协议和 master 进行交互,协议解析
  • eventSink: ParserStore 链接器,进行数据过滤,加工,分发的工作
  • eventStore:数据存储
  • metaManager:增量订阅 & 消费信息管理器

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-a7ZAZRkH-1621504158600)(/img/1612335671638.png)]

总结:CanalServer来说,启动1个服务,运行多个instance实例(每个实例对应一个sink),每个实例instance包含四个部分:eventParse、eventSink、eventStore、metaManager

EventParser在向MySQL发送dump命令之前会先从Log Position中获取上次解析成功的位置(如果是第一次启动,则获取初始指定位置或者当前数据段binlog位点)。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Q08a3L02-1621504158600)(/img/1541350-fac30bd74fa204d5.png)]

  • 1)、EventSink起到一个类似channel的功能,可以对数据进行过滤、分发/路由(1:n)、归并(n:1)和加
    工。EventSink是连接EventParser和EventStore的桥梁
  • 2)、EventStore实现模式是内存模式,内存结构为环形队列,由三个指针(Put、Get和Ack)标识数据
    存储和读取的位置。

06-[掌握]-Canal 数据同步之Docker 安装部署

Canal 1.1.x版本开始,支持Docker容器部署,所以本项目中,采用Docker容器部署CanalServer。

node1.itcast.cn机器上安装部署CanalServer,首先搜索获取canal镜像,然后pull拉取镜像,最后创建容器

文档:https://github.com/alibaba/canal/wiki/Docker-QuickStart

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gXtie3od-1621504158601)(/img/1615792713761.png)]

Canal的好处在于对业务代码没有侵入,因为是基于监听binlog日志去进行同步数据的。实时性也能做到准实时,其实是很多企业一种比较常见的数据同步的方案。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MQWcPVwG-1621504158601)(/img/1612336004227.png)]

具体安装部署,已经完成,只需要启动CanalServer容器即可,再启动Server服务,但是需要掌握如何配置,以及一些参数含义。

# 拉取镜像
docker pull canal/canal-server:v1.1.2
# 创建容器
docker run -d --name canal-server \
-e canal.instance.master.address=192.168.88.10:3306 \
-e canal.instance.dbUsername=root \
-e canal.instance.dbPassword=123456 \
-p 11111:11111 \
canal/canal-server:v1.1.2
# 进入容器
docker exec -it canal-server /bin/bash
# 切换到canal-server安装目录bin下,重启服务
[root@28888fad98c9 admin]# cd canal-server/bin/
[root@28888fad98c9 bin]# ./restart.sh 
[root@28888fad98c9 bin]# jps
305 CanalLauncher
321 Jps

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6P6uufvI-1621504158602)(/img/1615793128774.png)]

接下来,查看CanalServer配置:

  • 1)、CanalServer配置文件:canal-server/conf/canal.properties

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rLOWhs7X-1621504158603)(/img/1615793313924.png)]

  • 2)、Instance实例配置文件:canal-server/conf/example/instance.properties

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JWIB0bbB-1621504158603)(/img/1615793419104.png)]

启动node2.itcast.cn中Kafka消息队列,准备测试,看是否将MySQL表数据实时同步到Kafka中。

07-[理解]-Canal 数据同步之CRM数据同步Kafka

测试Canal功能,首先启动MySQL数据库,然后启动Kafka消息队列,最后启动CanalServer服务。

针对物流项目来说,以客户关系管理系统CRM,同步MySQL数据库表的数据。

  • 1)、插入数据测试
-- 插入数据INSERT
INSERT INTO `crm_address` VALUES (10001, '葛秋红', null, '17*******47', '恒大影城南侧小金庄', '130903', null, '2020-02-02 18:51:39', '2020-02-02 18:51:39', null);

插入数据到MySQL数据库表,Kafka中数据:

{
  "data": [
    {
      "id": "10001",
      "name": "葛秋红",
      "tel": null,
      "mobile": "17*******47",
      "detail_addr": "恒大影城南侧小金庄",
      "area_id": "130903",
      "gis_addr": null,
      "cdt": "2020-02-02 18:51:39",
      "udt": "2020-02-02 18:51:39",
      "remark": null
    }
  ],
  "database": "crm",
  "es": 1615794443000,
  "id": 2,
  "isDdl": false,
  "mysqlType": {
    "id": "bigint(20)",
    "name": "varchar(50)",
    "tel": "varchar(20)",
    "mobile": "varchar(20)",
    "detail_addr": "varchar(100)",
    "area_id": "bigint(20)",
    "gis_addr": "varchar(20)",
    "cdt": "datetime",
    "udt": "datetime",
    "remark": "varchar(100)"
  },
  "old": null,
  "sql": "",
  "sqlType": {
    "id": -5,
    "name": 12,
    "tel": 12,
    "mobile": 12,
    "detail_addr": 12,
    "area_id": -5,
    "gis_addr": 12,
    "cdt": 93,
    "udt": 93,
    "remark": 12
  },
  "table": "crm_address",
  "ts": 1615794443644,
  "type": "INSERT"
}
  • 2)、更新数据

更新MySQL数据库表的数据,查看Kafka中数据格式:

{
  "data": [
    {
      "id": "1245",
      "name": "贝贝",
      "tel": null,
      "mobile": "18*******57",
      "detail_addr": "美林家装广场3号门(晓东村涵馨公寓对面)",
      "area_id": "530111",
      "gis_addr": null,
      "cdt": "2020-02-02 18:51:00",
      "udt": "2020-02-02 18:51:00",
      "remark": null
    }
  ],
  "database": "crm",
  "es": 1621498703000,
  "id": 3,
  "isDdl": false,
  "mysqlType": {
    "id": "bigint(20)",
    "name": "varchar(50)",
    "tel": "varchar(20)",
    "mobile": "varchar(20)",
    "detail_addr": "varchar(100)",
    "area_id": "bigint(20)",
    "gis_addr": "varchar(20)",
    "cdt": "datetime",
    "udt": "datetime",
    "remark": "varchar(100)"
  },
  "old": [
    {
      "name": "贝贝婆婆"
    }
  ],
  "sql": "",
  "sqlType": {
    "id": -5,
    "name": 12,
    "tel": 12,
    "mobile": 12,
    "detail_addr": 12,
    "area_id": -5,
    "gis_addr": 12,
    "cdt": 93,
    "udt": 93,
    "remark": 12
  },
  "table": "crm_address",
  "ts": 1621498703502,
  "type": "UPDATE"
}
  • 3)、删除数据测试

删除MySQL数据库表的数据,查看Kafka中数据:

{
  "data": [
    {
      "id": "10001",
      "name": "葛红红",
      "tel": null,
      "mobile": "17*******47",
      "detail_addr": "恒大影城南侧小金庄",
      "area_id": "130903",
      "gis_addr": null,
      "cdt": "2020-02-02 18:51:39",
      "udt": "2020-02-02 18:51:39",
      "remark": null
    }
  ],
  "database": "crm",
  "es": 1615794586000,
  "id": 4,
  "isDdl": false,
  "mysqlType": {
    "id": "bigint(20)",
    "name": "varchar(50)",
    "tel": "varchar(20)",
    "mobile": "varchar(20)",
    "detail_addr": "varchar(100)",
    "area_id": "bigint(20)",
    "gis_addr": "varchar(20)",
    "cdt": "datetime",
    "udt": "datetime",
    "remark": "varchar(100)"
  },
  "old": null,
  "sql": "",
  "sqlType": {
    "id": -5,
    "name": 12,
    "tel": 12,
    "mobile": 12,
    "detail_addr": 12,
    "area_id": -5,
    "gis_addr": 12,
    "cdt": 93,
    "udt": 93,
    "remark": 12
  },
  "table": "crm_address",
  "ts": 1615794586746,
  "type": "DELETE"
}

可以发现,Canal数据同步实时性很高,针对插入数据:INSERT、更新数据:UPDATE和删除数据:DELETE

  • 4)、清空表数据测试
  • 执行DDL语句:TRUNCATE TABLE crm_address ;
{
  "data": null,
  "database": "crm",
  "es": 1615794718000,
  "id": 5,
  "isDdl": true,
  "mysqlType": null,
  "old": null,
  "sql": "/* ApplicationName\u003dDBeaver 6.3.4 - SQLEditor \u003cScript-4.sql\u003e */ TRUNCATE TABLE crm_address",
  "sqlType": null,
  "table": "crm_address",
  "ts": 1615794719249,
  "type": "TRUNCATE"
}

08-[了解]-Canal 数据同步之集群高可用HA

Canal 1.1.4 版本开始,提供集群高可用HA,运行2个CanalServer服务,一个为Active,一个为Standby,当Active宕掉以后,Standby接收工作,继续进行数据实时同步功能。

  • 1)、首先,Canal集群同步数据数据流转示意图:
    业务系统 -> MySQL(业务主库) -> Canal 集群 -> Kafak Topic -> 实时应用程序 :统计分析 -> Redis

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iVTTeJox-1621504158604)(/img/1612338707148.png)]

Canal 集群高可用如何实现的,如下图所示,核心点2个:

  • 1)、CanalServer服务启动2个:running(active)、Standby
  • 2)、依赖Zookeeper监控CanalServer状态,并且存储状态

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2EBODxki-1621504158604)(/img/1612338755220.png)]

比如CanalServer中有2个Instance实例时,高可用集群如何工作:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-X06i19BO-1621504158605)(/img/1612338926977.png)]

09-[扩展]-数据实时同步之Flume 实时采集同步

如何将业务服务器业务数据(MySQL和Oracle数据库)实时同步到Kafka消息队列,分别使用Canal和OGG框架,也可以使用前面学习Flume Agent 实时采集。

首先,回顾Flume Agent组成结构:三个部分组成

  • 1)、Source数据源,从哪里获取
    | source -> push 推送 -> channel
  • 2)、Channel管道,缓冲数据
  • 3)、Sink终端,将数据写入到哪里去
    | sink <- pull 拉取 <- channel

所以,Flume框架完全可以实时获取数据库日志文件数据,经过解析,最终写入Kafka

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1iZcXwHM-1621504158605)(/img/DevGuide_image00.png)]

伟大网友实现自定义FlumeSource,从数据库实时获取数据,模块:flume-ng-sql-source

网址:https://github.com/keedio/flume-ng-sql-source

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-n2zYRez3-1621504158606)(/img/1615799282413.png)]

10-[扩展]-数据实时同步之Maxwell 实时采集同步

在大数据领域中,除了Canal以外,国外提供框架:Maxwell,轻量级,专门针对MySQL数据库数据实时同步到Kafka消息队列(数据都是JSON格式数据)。

1、官网:
  http://maxwells-daemon.io/
2、源码:
  https://github.com/zendesk/maxwell    

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zdl28EY8-1621504158606)(/img/1615734115490.png)]

Maxwell文档:http://maxwells-daemon.io/quickstart/

mysql> insert into `test`.`maxwell` set id = 1, daemon = 'Stanislaw Lem';
  maxwell: {
    "database": "test",
    "table": "maxwell",
    "type": "insert",
    "ts": 1449786310,
    "xid": 940752,
    "commit": true,
    "data": { "id":1, "daemon": "Stanislaw Lem" }
  }
 mysql> update test.maxwell set daemon = 'firebus!  firebus!' where id = 1;
  maxwell: {
    "database": "test",
    "table": "maxwell",
    "type": "update",
    "ts": 1449786341,
    "xid": 940786,
    "commit": true,
    "data": {"id":1, "daemon": "Firebus!  Firebus!"},
    "old":  {"daemon": "Stanislaw Lem"}
  }

11-[掌握]-大数据服务器之CM安装架构及目录

针对整个物流项目来说,1台虚拟机安装部署大数据环境:基于CM6.2.1安装CDH6.2.1

关于CM功能及CM安装,不再过多赘述,项目还是要注重于业务及数据和实现。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pmOrT8Rt-1621504158607)(/img/1615795864918.png)]

提供虚拟机【node2.itcast.cn】解压后,导入VMWare 软件中,启动虚拟机即可(选择我已移动该虚拟机)

  • 1)、启动之前,设置node2.itcast.cn内存:4GB或者6GB或者8GB即可
  • 2)、第一次启动虚拟机时,很慢很慢很慢,由于启动所有服务(CM安装CDH服务),时间5分钟以上
  • 3)、测试时,需要什么服务,启动什么服务,不要全部启动(耗内存,耗性能,没有任何意义)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-v4RPVxhh-1621504158607)(/img/1615796135090.png)]

架构原理:CM如何安装CDH框架,原理架构是什么?????

  • 1)、CM安装CDH集群时,架构属于主从分布式架构(Master/Slaves)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7vXUUQ5X-1621504158608)(/img/image-20210520171157255.png)]

  • 2)、Cloudera 将所有大数据框架放在某个目录打成包:parcel
  • 首先parcel包,存储在CMServer主机的目录:/opt/cloudera/parcel-repo
  • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OScyTcjk-1621504158608)(/img/1615796586659.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-U00BB7za-1621504158608)(/img/1615796536760.png)]

  • 3)、CMServer服务,将parcel包,分发给所有大数据集群机器:Cloudera Agent
  • 当所有集群机器下载parcel包以后,解压:/opt/cloudera/parcels
  • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SoHUbdDM-1621504158609)(/img/1615796680185.png)]
  • 每个框架安装目录:/opt/cloudera/parcels/CDH/lib/框架名称
  • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RZvX1zLv-1621504158609)(/img/1615796799129.png)]
  • 进入Kafka软件安装目录:/opt/cloudera/parcels/CDH/lib/kafka
  • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-45KHvyMm-1621504158610)(/img/1615796842444.png)]

下图表示使用CM安装CDH架构原理图,多多理解。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sBtLqD6w-1621504158610)(/img/1612340738839.png)]

12-[掌握]-大数据服务器之CDH框架安装细节

当使用CM安装CDH集群以后,可以通过CM界面UI,管理整个集群服务和查看监控运行状态。

  • 第一、框架用户,实际项目中按照大数据各个框架时,不建议使用root用户,创建普通用户。

使用CM安装CDH集群时,针对每个框架(比如,HDFS、MAPREDUCE、YARN等)创建用户,不可以被用于登录操作系统。以框架名称创建用户,所有用户名为框架名称。

  1. 第一点:linux系统:/etc/passwd
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-co3HMgvx-1621504158611)(/img/1615797831875.png)]
  2. 第二点:启动服务,所使使用用户
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-X7GV6SJQ-1621504158611)(/img/1615797948191.png)]
  • 第二、服务配置

使用CM安装CDH组件时,配置分为2类:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5Ov7plcj-1621504158611)(/img/1615798359130.png)]

  1. 第一类、服务端Server配置,启动服务Server时加载配置文件
  • 存储在数据库中,物流项目中配置的是MySQL数据库:scm
  1. [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-W9B3YzHD-1621504158612)(/img/1615798311485.png)]
  2. 第二类、客户端Client配置,客户端连接服务时配置信息
  • 存储在配置文件,在系统目录:/etc/xx/conf,其中xx表示框架名称
  • 以Kafka框架为例:
  1. [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6V6pooCv-1621504158612)(/img/1615798345969.png)]
  • 第三、服务日志

使用CM安装CDH组件时,默认启动服务时,日志文件存储目录:/var/log/xx/

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4uTpd3wy-1621504158613)(/img/1615798415864.png)]

  • 第四、切换用户

由于每个框架都有自己用户,所以有时候对框架进行操作时,需要切换到框架用户,比如在HDFS文件系统上创建目录,使用hdfs用户,如下所示切换用户:

# root切换框架用户方式
sudo -u userName
# 举例说明:
[root@node2 ~]# sudo -u hdfs hdfs dfs -mkdir -p /datas
[root@node2 ~]# sudo -u hdfs hdfs dfs -ls

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-f8zhO01u-1621504158613)(/img/1615798634938.png)]

作业:从零搭建Canal实时采集数据

1、Linux操作系统安装MySQL 5.6、5.7、8.x也行
  安装MySQL数据库
2、采用Docker容器部署安装Canal,并且配置
  Docker容器部署Canal
3、搭建Kafka单机版
  JDK、Zookeeper和Kafka
4、联动测试
  向MySQL表中写入数据,Canal实时采集到,Kafka分布式消息队列

`

  • 以Kafka框架为例:

[外链图片转存中…(img-6V6pooCv-1621504158612)]

  • 第三、服务日志

使用CM安装CDH组件时,默认启动服务时,日志文件存储目录:/var/log/xx/

[外链图片转存中…(img-4uTpd3wy-1621504158613)]

  • 第四、切换用户

由于每个框架都有自己用户,所以有时候对框架进行操作时,需要切换到框架用户,比如在HDFS文件系统上创建目录,使用hdfs用户,如下所示切换用户:

# root切换框架用户方式
sudo -u userName
# 举例说明:
[root@node2 ~]# sudo -u hdfs hdfs dfs -mkdir -p /datas
[root@node2 ~]# sudo -u hdfs hdfs dfs -ls

[外链图片转存中…(img-f8zhO01u-1621504158613)]

作业:从零搭建Canal实时采集数据

1、Linux操作系统安装MySQL 5.6、5.7、8.x也行
  安装MySQL数据库
2、采用Docker容器部署安装Canal,并且配置
  Docker容器部署Canal
3、搭建Kafka单机版
  JDK、Zookeeper和Kafka
4、联动测试
  向MySQL表中写入数据,Canal实时采集到,Kafka分布式消息队列


目录
相关文章
|
5月前
|
消息中间件 Oracle 关系型数据库
Note_Logistics_Day03
Note_Logistics_Day03
44 0
SAP RETAIL 维护Plant Profile 报错 - No customer account group assigned to business partner grouping ZNM2
SAP RETAIL 维护Plant Profile 报错 - No customer account group assigned to business partner grouping ZNM2
SAP RETAIL 维护Plant Profile 报错 - No customer account group assigned to business partner grouping ZNM2
SAP RETAIL Allocation Rule based on Material Group(一)
SAP RETAIL Allocation Rule based on Material Group(一)
SAP RETAIL Allocation Rule based on Material Group(一)
SAP RETAIL Allocation Rule based on Material Group(二)
SAP RETAIL Allocation Rule based on Material Group(二)
SAP RETAIL Allocation Rule based on Material Group(二)
PAT (Advanced Level) Practice - 1087 All Roads Lead to Rome(30 分)
PAT (Advanced Level) Practice - 1087 All Roads Lead to Rome(30 分)
99 0
|
供应链
PAT (Advanced Level) Practice - 1079 Total Sales of Supply Chain(25 分)
PAT (Advanced Level) Practice - 1079 Total Sales of Supply Chain(25 分)
136 0
My team and my group in my opportunity and my appointment
My team and my group in my opportunity and my appointment
109 0
My team and my group in my opportunity and my appointment
How my opportunity works - my team and my group
I log on with WANGJER and can see those opportunities not only belong to me but also from my other colleagues. Why?
How my opportunity works - my team and my group
Business Partner Relationship Category in CRM and C4C
Business Partner Relationship Category in CRM and C4C
Business Partner Relationship Category in CRM and C4C
Field creation not permitted in partner development mode
Field creation not permitted in partner development mode
Field creation not permitted in partner development mode