wordpress 去掉头部,windows优化大师和360哪个好,如何自定义wordpress登录,p2p理财网站开发要求docker服务容器化 1 引言2 多个容器间网络联通2.1 单独创建关联2.2 创建时关联 3 服务搭建3.1 镜像清单3.2 容器创建 4 联合实战4.2 flink_sql之kafka到starrocks4.2 flink_sql之mysql到starrocks 5 文献借鉴 1 引言
利用docker可以很效率地搭建服务#xff0c;本文在win1… docker服务容器化 1 引言2 多个容器间网络联通2.1 单独创建关联2.2 创建时关联 3 服务搭建3.1 镜像清单3.2 容器创建 4 联合实战4.2 flink_sql之kafka到starrocks4.2 flink_sql之mysql到starrocks 5 文献借鉴 1 引言
利用docker可以很效率地搭建服务本文在win10下安装docker-desktop从镜像的拉取到容器的创建最后容器间联合使用该过程有很多细节记录和分享在这里共勉。
2 多个容器间网络联通
在docker中可以创建网络作为容器间网络联通媒介网络联通有下面两种方式首先需要创建网络
# 创建网络名为flink-network的网络
docker network create flink-network# 查看网络内的容器信息
docker network inspect flink-network2.1 单独创建关联
容器已经创建但是没有关联网络需要单独创建关联时
# 这里假设已经创建容器starrocks关联上已创建的网络flink-network
docker network connect flink-network starrocks2.2 创建时关联
如果网络已经创建容器未创建则可以在创建容器时直接关联网络如已创建上面的网络flink-network下面打算创建starrocks容器时
# 已创建上面的网络flink-network下面打算创建starrocks容器时
docker run -p 19030:9030 -p 18030:8030 -p 18040:8040 \
-itd --name starrocks \
--network flink-network \
starrocks/allin1-ubuntu:3.1.10
# 在运行命令中添加已存在网络flink-network --network flink-network 可以查看网络内的容器信息
# 查看网络内的容器信息
docker network inspect flink-network3 服务搭建
3.1 镜像清单
我们这里搭建kafka-flink-starrocks的项目服务以starrocks作为数仓mysql和redis为业务库flink和kafka进行CDC和ETL。
repositorytagsizstarrocks/allin1-ubuntu3.1.104.37GBflink1.13.5625MBzookeeper3.4.13150MBwurstmeister/kafka2.13-2.8.1468MBmysql8.0.19546MBredis6.0.8104MB
3.2 容器创建
1首先创建starrocks容器外部挂载磁盘位置E:\tmp\docker_volumes\starrocks\data
# 挂载容器外部磁盘/文件夹「启动」,
docker run -itd --name starrocks \
--network flink-network \
-v E:\tmp\docker_volumes\starrocks\data:/home/zzz/data
-p 19030:9030 -p 18030:8030 -p 18040:8040
starrocks/allin1-ubuntu:3.1.10
# 启动SQL clientConnect to StarRocks with a SQL client
docker exec -it starrocks \
mysql -P 9030 -h 127.0.0.1 -u root -p 123456 --promptStarRocks
# 在容器内部查看fe、be状态
show proc /frontends \G
show proc /backends \G2然后创建flink容器JobManager和TaskManager都有创建
# 创建 JobManager docker run \-itd \--namejobmanager \--publish 8081:8081 \--network flink-network \--env FLINK_PROPERTIESjobmanager.rpc.address: jobmanager \flink:1.13.5 jobmanager # 创建 TaskManager docker run \-itd \--nametaskmanager \--network flink-network \--env FLINK_PROPERTIESjobmanager.rpc.address: jobmanager \flink:1.13.5 taskmanager # 从https://mvnrepository.com/检索下面jar包 添加jar到flink/lib/目录
# 在宿主机保存jar包路径下运行下面命令
docker cp flink-sql-connector-mysql-cdc-2.0.2.jar jobmanager:/opt/flink/lib/
docker cp flink-sql-connector-mysql-cdc-2.0.2.jar taskmanager:/opt/flink/lib/docker cp flink-connector-starrocks-1.1.14_flink-1.13_2.11.jar jobmanager:/opt/flink/lib/
docker cp flink-connector-starrocks-1.1.14_flink-1.13_2.11.jar taskmanager:/opt/flink/lib/docker cp flink-connector-jdbc_2.11-1.13.5.jar jobmanager:/opt/flink/lib/
docker cp flink-connector-jdbc_2.11-1.13.5.jar taskmanager:/opt/flink/lib/docker cp flink-sql-connector-kafka_2.11-1.13.5.jar jobmanager:/opt/flink/lib/
docker cp flink-sql-connector-kafka_2.11-1.13.5.jar taskmanager:/opt/flink/lib/3创建zookeeper和kafka容器
# 安装zk
docker run -d --restartalways \
-e ALLOW_ANONYMOUS_LOGINyes \
--log-driver json-file \
--log-opt max-size100m \
--log-opt max-file2 \
--name zookeeper \
--network flink-network \
-p 2181:2181 \
-v E:\tmp\docker_volumes\zookeeper\localtime:/etc/localtime zookeeper:3.4.13# 安装kafka 需要注意的时 -e KAFKA_ADVERTISED_LISTENERSPLAINTEXT:宿主机ip:9092
docker run -d --name kafka \
--network flink-network \
--log-driver json-file \
--log-opt max-size100m \
--log-opt max-file2 \
-p 9092:9092 \
--link zookeeper:zookeeper \
-e KAFKA_BROKER_ID0 \
-e KAFKA_ZOOKEEPER_CONNECTzookeeper:2181/kafka \
-e KAFKA_ADVERTISED_LISTENERSPLAINTEXT://宿主机ip:9092 \
-e KAFKA_LISTENERSPLAINTEXT://0.0.0.0:9092 \
wurstmeister/kafka:2.13-2.8.1# 运行kafka交换命令行
docker exec -it kafka /bin/bash创建容器mysql和redis(本人虽然创建了但是使用的本地的客户端)
4 联合实战
4.2 flink_sql之kafka到starrocks
1kafka数据准备
# 进入kafka交互命令行
docker exec -it kafka /bin/bash# 在容器内创建主题user 这里容器主机ip是zk容器的ip
./kafka-topics.sh --zookeeper 容器主机ip:2181/kafka --create --replication-factor 1 --partitions 1 --topic user# 创建生产者 容器主机ip是kafka容器的ip
./kafka-console-producer.sh --broker-list 容器主机ip:9092 --topic user# 创建消费者 容器主机ip是kafka容器的ip
./kafka-console-consumer.sh --topic user --from-beginning --bootstrap-server 容器主机ip:9092
2starrocks数据准备
# 使用dbeaver客户端或者进入starrocks容器
# 启动SQL clientConnect to StarRocks with a SQL client
docker exec -it starrocks \
mysql -P 9030 -h 127.0.0.1 -u root -p 123456 --promptStarRocks # 创建主键模型表 s_user
CREATE TABLE IF NOT EXISTS s_user (id int(10) NOT NULL COMMENT ,name varchar(20) NOT NULL COMMENT ,p_id INT(2) NULL COMMENT
)
PRIMARY KEY(id)
DISTRIBUTED BY HASH(id) BUCKETS 1
PROPERTIES (
replication_num 1
);
flink_sql准备
# 进入flink容器交互命令行
docker exec -it jobmanager /bin/bash# 在容器内容运行,进入bin路径
cd opt/flink/bin
# 在bin路径下运行flink_sql客户端
sql-client.sh# 可以查看是否有表
show tables;# 创建source源表 source_Kafka_user
CREATE TABLE source_Kafka_user(id INT,name STRING,p_id INT
) WITH (connector kafka,topic user,properties.bootstrap.servers kafka容器ip:9092,properties.group.id source_user,scan.startup.mode earliest-offset,format csv
);# 创建Sink目标表sink_starrocks_suser
CREATE TABLE sink_starrocks_suser (id INT,name STRING,p_id INT,PRIMARY KEY (id) NOT ENFORCED
)WITH (connector starrocks,jdbc-urljdbc:mysql://starrocks容器ip:9030,load-urlstarrocks容器ip:8040,database-name my_test_db,table-name s_user,username root,password 123456,sink.buffer-flush.interval-ms 5000,sink.properties.column_separator \x01,sink.properties.row_delimiter \x02
);# 在flink_sql创建ETL命令实时运行
insert into sink_starrocks_suser select id,name,p_id from source_Kafka_user; 可以在flinkUIhttp://localhost:8081/查看任务运行详情
4.2 flink_sql之mysql到starrocks
mysql数据准备
CREATE TABLE s_user (id INT(11) NOT NULL,name VARCHAR(32) DEFAULT NULL,p_id INT(2) DEFAULT NULL,PRIMARY KEY (id)
);insert into s_user values(10086,lm,61),(10010, ls,11), (10000,ll,61);2)starrocks数据准备: 和上面一样
flink_sql准备
# 创建source源表 source_mysql_suser
CREATE TABLE source_mysql_suser (id INT,name STRING,p_id INT,PRIMARY KEY (id) NOT ENFORCED
)WITH (connector jdbc,drivercom.mysql.jdbc.Driver,url jdbc:mysql:/宿主机ip:3306/flink_pro,table-name s_user,username root,password 123456
);# 创建Sink目标表sink_starrocks_suser
CREATE TABLE sink_starrocks_suser (id INT,name STRING,p_id INT,PRIMARY KEY (id) NOT ENFORCED
)WITH (connector starrocks,jdbc-urljdbc:mysql://starrocks容器ip:9030,load-urlstarrocks容器ip:8040,database-name my_test_db,table-name s_user,username root,password 123456,sink.buffer-flush.interval-ms 5000,sink.properties.column_separator \x01,sink.properties.row_delimiter \x02
);# 在flink_sql创建ETL命令实时运行
insert into sink_starrocks_suser select id,name,p_id from source_mysql_suser;5 文献借鉴
StarRocks数据导入–Flink Connector与CDC秒级数据同步