Docker 单机快速部署大数据各组件

文章目录

      • 一、Spark
        • 1.1 NetWork 网络
        • 1.2 安装 Java8
        • 1.3 安装 Python 环境
        • 1.4 Spark 安装部署
      • 二、Kafka
      • 三、StarRocks
      • 四、Redis
      • 五、Rabbitmq
      • 六、Emqx
        • 6.1 前言
        • 6.2 安装部署
      • 七、Flink
      • 八、Nacos
      • 九、Nginx

一、Spark

1.1 NetWork 网络
docker network lsdocker network create --driver=bridge hadoop-network

在这里插入图片描述

1.2 安装 Java8

  下载基础镜像:

docker pull centos:7

在这里插入图片描述

1.3 安装 Python 环境

  Miniconda3 安装:

root@hadoop:~# apt install wgetroot@hadoop:~# wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.shroot@hadoop:~# bash Miniconda3-latest-Linux-x86_64.shroot@hadoop:~# source .bashrc 
(base) root@hadoop:~# python
Python 3.12.4 | packaged by Anaconda, Inc. | (main, Jun 18 2024, 15:12:24) [GCC 11.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> exit()

可参考:Miniconda安装教程

1.4 Spark 安装部署

  上传安装包:

docker cp spark-2.4.0-bin-hadoop2.7.tgz ubuntu-java8:/usr/localdocker cp scala-2.11.12.tgz ubuntu-java8:/usr/local

  解压:

# 解压
tar -zxf spark-2.4.0-bin-hadoop2.7.tgz
tar -zxf scala-2.11.12.tgz# 删除
rm -rf spark-2.4.0-bin-hadoop2.7.tgz
rm -rf scala-2.11.12.tgz

  修改配置(要运行本地模式的话可忽略):

cd /usr/local/spark-2.4.0-bin-hadoop2.7/conf
cp spark-env.sh.template spark-env.sh
vim spark-env.sh# 添加内容
export JAVA_HOME=/usr/java/jdk1.8.0_212
export SCALA_HOME=/usr/local/scala-2.11.12
export SPARK_HOME=/usr/local/spark-2.4.0-bin-hadoop2.7
export HADOOP_INSTALL=/usr/local/hadoop-3.0.0
export HADOOP_CONF_DIR=$HADOOP_INSTALL/etc/hadoop

注:默认没有 vi 和 vim 命令,需要安装,安装命令:apt install vim

在这里插入图片描述
  环境变量:

root@hadoop:~# vim .bashrc
# SPARK_HOME
export SPARK_HOME=/usr/local/spark-2.4.0-bin-hadoop2.7
export PATH=$SPARK_HOME/bin:$PATH

在这里插入图片描述
  测试命令:

spark-submit --master local[*] --class org.apache.spark.examples.SparkPi $SPARK_HOME/examples/jars/spark-examples_2.11-2.4.0.jar 20

二、Kafka

  下载镜像:

docker pull bitnami/kafka:3.6.0

  启动容器:

docker run -d --name kafka \
-p 9092:9092 \
--network hadoop-network \
-e KAFKA_ADVERTISED_PORT=9092 \
-e KAFKA_ENABLE_KRAFT=yes \
-e KAFKA_CFG_PROCESS_ROLES=broker,controller \
-e KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT \
-e KAFKA_CFG_CONTROLLER_LISTENER_NAMES=CONTROLLER \
-e KAFKA_CFG_LISTENERS=PLAINTEXT://:9092,CONTROLLER://:9093 \
-e KAFKA_CFG_CONTROLLER_QUORUM_VOTERS=1@127.0.0.1:9093 \
-e KAFKA_KRAFT_CLUSTER_ID=jkUlhzQmQkic54LMxrB1oV \
-e ALLOW_PLAINTEXT_LISTENER=yes \
-e KAFKA_BROKER_ID=1 \
-e KAFKA_CFG_NODE_ID=1 \
bitnami/kafka:3.6.0-d:选项以守护程序模式运行容器。
--name kafka:为容器指定一个名称。
-p 9092:9092:将容器中的 9092 端口(后面的)映射到主机的 9092 端口(前面的)。

  要验证 Kafka 是否正在运行,请使用以下命令检查容器的日志:

docker logs kafka。。。
[2024-09-25 09:02:34,287] INFO Kafka version: 3.6.0 (org.apache.kafka.common.utils.AppInfoParser)
[2024-09-25 09:02:34,287] INFO Kafka commitId: 60e845626d8a465a (org.apache.kafka.common.utils.AppInfoParser)
[2024-09-25 09:02:34,287] INFO Kafka startTimeMs: 1727254954286 (org.apache.kafka.common.utils.AppInfoParser)
[2024-09-25 09:02:34,289] INFO [KafkaRaftServer nodeId=1] Kafka Server started (kafka.server.KafkaRaftServer)

  创建主题:

docker exec -it kafka /bin/bash# data解析
kafka-topics.sh --create --topic xiaoqiang-result-topic --bootstrap-server localhost:9092 --partitions 1 --replication-factor 1kafka-topics.sh --bootstrap-server localhost:9092 --list

三、StarRocks

集群部署参考文档:通过 docker-compose 快速部署 StarRocks 保姆级教程

  下载官方镜像:

docker pull starrocks/allin1-ubuntu:3.1.13

在这里插入图片描述
  运行容器:

docker run -p 9030:9030 -p 8030:8030 -p 8040:8040 -itd --name starrocks starrocks/allin1-ubuntu:3.1.13# 进入容器
docker exec -it starrocks mysql -P 9030 -h 127.0.0.1 -u root

在这里插入图片描述

四、Redis

  下载镜像:

docker pull redis

  编辑配置文件 /home/bigdata/redis/redis.conf,使 Redis 支持数据持久化:

protected-mode noport 6379tcp-backlog 511
#redis密码 强烈建议设置复杂一些
requirepass ABCabc123timeout 0
tcp-keepalive 300
daemonize no
supervised no
pidfile /var/run/redis_6379.pid
loglevel notice
logfile ""
databases 30
always-show-logo yessave 900 1
save 300 10
save 60 10000stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename dump.rdbdir ./replica-serve-stale-data yes
replica-read-only yes
repl-diskless-sync no
repl-disable-tcp-nodelay noreplica-priority 100lazyfree-lazy-eviction no
lazyfree-lazy-expire no
lazyfree-lazy-server-del no
replica-lazy-flush noappendonly yesappendfilename "appendonly.aof"no-appendfsync-on-rewrite noauto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mbaof-load-truncated yes
aof-use-rdb-preamble yeslua-time-limit 5000
slowlog-max-len 128notify-keyspace-events ""hash-max-ziplist-entries 512
hash-max-ziplist-value 64
list-max-ziplist-size -2
list-compress-depth 0
set-max-intset-entries 512zset-max-ziplist-entries 128
zset-max-ziplist-value 64hll-sparse-max-bytes 3000stream-node-max-bytes 4096
stream-node-max-entries 100activerehashing yes
hz 10
dynamic-hz yes
aof-rewrite-incremental-fsync yes
rdb-save-incremental-fsync yes

  启动容器:

sudo docker run --restart=always \
--log-opt max-size=100m \
--log-opt max-file=2 \
-p 6379:6379 \
--name redis \
-v /home/bigdata/redis/redis.conf:/etc/redis/redis.conf \
-v /home/bigdata/redis/data:/data \
-itd redis:latest redis-server /etc/redis/redis.conf \
--appendonly yes \
--requirepass qwe123

参数的意义:

  • 【 --restart=always】 开机启动,失败也会一直重启;
  • 【–log-opt max-size=100m】意味着一个容器日志大小上限是100M;
  • 【–log-opt max-file=2】意味着一个容器有2个日志,分别是id+.json、id+1.json;
  • 【-p 6379:6379】 将宿主机6379端口与容器内6379端口进行映射;
  • 【-v】 将宿主机目录或文件与容器内目录或文件进行挂载映射;
  • 【-itd】
    i:以交互模式运行容器,通常与 -t 同时使用;
    t:为容器重新分配一个伪输入终端,通常与 -i 同时使用;
    d:表示后台启动redis;
  • 【–name】 给容器命名;
  • 【–appendonly yes】 开启redis 持久化;
  • 【–requirepass 123456】 强烈建议设置密码,并且将密码设置为高强度复杂;
  • 【redis-server /etc/redis/redis.conf】 以配置文件启动redis,加载容器内的conf文件;

  查看启动日志(是否正常启动):

docker logs redis # 后面跟容器名 or 容器ID 都可以
docker logs --since 30m redis # --since 30m 是查看此容器30分钟之内的日志情况。

  查看本机 Docker 运行的容器:

docker ps -a | grep redis

  查看 redis 命令是否正常:

docker exec -it redis redis-cli

  测试连接:

127.0.0.1:6379> select 1
(error) NOAUTH Authentication required.
127.0.0.1:6379> auth 123456
OK
127.0.0.1:6379> select 1
OK
127.0.0.1:6379[1]> set k1 v1
OK
127.0.0.1:6379[1]> get k1
"v1"
127.0.0.1:6379[1]>

参考:Docker安装redis(保姆级教程&图文并茂)

五、Rabbitmq

  拉取 RabbitMQ 镜像:

docker pull rabbitmq:3.8-management

在这里插入图片描述
  创建目录,授权文件夹

# 创建目录
mkdir -p /data/rabbitmq/{conf,data,log}
# 授权文件夹
chmod -R 777 /data/rabbitmq/{conf,data,log}

  创建 RabbitMQ 容器:

docker run --restart=always --name rabbitmq \
-p 15672:15672 -p 5672:5672 \
-e RABBITMQ_DEFAULT_USER=rabbit \
-e RABBITMQ_DEFAULT_PASS=rabbit \
-v /data/rabbitmq/data:/var/lib/rabbitmq \
-v /data/rabbitmq/conf:/etc/rabbitmq \
-v /data/rabbitmq/log:/var/log/rabbitmq \
-d rabbitmq:3.8-management

  相关参数解释:

  • docker run: 启动一个新的 Docker 容器。
  • –restart=always: 容器意外退出或 Docker 服务重启,Docker 将始终自动重新启动该容器。
  • –name rabbitmq: 给容器命名为 rabbitmq,以便于管理和引用该容器。
  • -p 15672:15672 -p 5672:5672: 端口映射。将主机的 5672 端口映射到容器的 5672 端口。
  • -e RABBITMQ_DEFAULT_USER=rabbit: 指定默认的 RabbitMQ 用户名为 rabbit。
  • -e RABBITMQ_DEFAULT_PASS=rabbit: 指定默认的 RabbitMQ 密码为 rabbit。
  • -v /data/rabbitmq/data:/var/lib/rabbitmq: 数据持久化
  • -v /data/rabbitmq/conf:/etc/rabbitmq: 配置文件持久化
  • -v /data/rabbitmq/log:/var/log/rabbitmq: 日志文件持久化
  • -d: 容器将在后台运行,而不是占用当前的终端会话。

  查看 RabbitMQ 启动日志:docker logs -f rabbitmq

在这里插入图片描述
  访问 RabbitMQ 控制台:

服务器IP / 虚拟机静态IP : 15672
例如我的控制台地址为 : http://172.29.32.233:15672/

  访问发现无法访问,开启控制台管理 : 进入 RabbitMQ 容器后开启控制台管理:

# 进入 RabbitMQ 容器
docker exec -it rabbitmq bash
# 开启控制台管理
rabbitmq-plugins enable rabbitmq_management

在这里插入图片描述
  登录 RabbitMQ 控制台:
在这里插入图片描述
在这里插入图片描述
  进入 RabbitMQ 容器,添加管理员账号,授权账号管理员权限,查看账号列表:

# 进入 RabbitMQ 容器
docker exec -it rabbitmq bash
# 添加管理员账号
rabbitmqctl add_user 用户名 密码
# 授权账号管理员权限
rabbitmqctl set_user_tags 用户名 administrator
# 查看账号列表
rabbitmqctl list_users

  重启 RabbitMQ 容器,再次访问,成功访问 !

# 重启容器
docker restart rabbitmq

参考:
Docker 部署 RabbitMQ (图文并茂超详细)
Docker之安装RabbitMq_docker 安装rabbitmq

六、Emqx

6.1 前言

什么是 MQTT?

  • MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议)
  • 是一种基于发布/订阅(publish/subscribe)模式的"轻量级"通讯协议
  • 关键词:通讯协议

什么是EMQ(emqx的简称)?

  • EMQ X Broker 是基于高并发的 Erlang/OTP 语言平台开发,支持百万级连接和分布式集群架构,发布订阅模式的开源 MQTT 消息服务器。
  • 关键词:消息服务器
端口描述
18083web端后台管理页端口
1883MQTT TCP 端口
8883MQTT TCP TLS/SSL 端口
8083HTTP and WebSocket 端口
8084HTTPS and WSS 端口
8080MGMT API 端口

MGMT 端口 :MGMT是网络管理端口,可以直接用网线连接,登陆进防火墙以网页模式管理。

6.2 安装部署

  获取 Docker 镜像:

docker pull emqx/emqx-enterprise:5.7.1

  运行以下命令启动 Docker 容器:

docker run -d --name emqx-enterprise -p 1883:1883 -p 8083:8083 -p 8084:8084 -p 8883:8883 -p 18083:18083 emqx/emqx-enterprise:5.7.1

  如果需要持久 Docker 容器 ,请将以下目录挂载到容器外部,这样即使容器被删除数据也不会丢失:

/opt/emqx/data
/opt/emqx/log

  启动容器并挂载目录:(挂载失败,后续排查)

docker run -d --name emqx-enterprise \-p 1883:1883 -p 8083:8083 \-p 8084:8084 -p 8883:8883 \-p 18083:18083 \-v $PWD/data:/opt/emqx/data \-v $PWD/log:/opt/emqx/log \emqx/emqx-enterprise:5.7.1

参考:
通过 Docker 运行 EMQX
docker实现搭建emqx服务
EMQX的docker部署与使用(mqtt)

七、Flink

  拉取镜像:

docker pull flink:1.17.2

  编辑 docker-compose.yml 文件:

version: "3"
services:jobmanager:image: flink:1.17.2expose:- "6123"ports:- "8081:8081"command: jobmanagerenvironment:- JOB_MANAGER_RPC_ADDRESS=jobmanagertaskmanager:image: flink:1.17.2expose:- "6121"- "6122"depends_on:- jobmanagercommand: taskmanagerlinks:- "jobmanager:jobmanager"environment:- JOB_MANAGER_RPC_ADDRESS=jobmanagerscale: 3 #指定taskmanager数量

  在文件夹路径下执行:

docker-compose up -d

  通过在浏览器的地址栏中输入 localhost:8081 即可打开 Flink 的 UI 页面:

参考:
手把手教你在Docker中如何使用flink,实现将mySQL数据同步写入kafka中
Docker下的Flink

八、Nacos

  拉取镜像:

docker pull nacos/nacos-server:v2.1.1

  创建目录,创建容器,拷贝文件,授权文件,删除容器:

# 创建目录
mkdir -p /data/nacos/{conf,logs,data}# 创建容器
docker run -p 8848:8848 --name nacos -d nacos/nacos-server:v2.1.1# 拷贝文件
docker cp nacos:/home/nacos/conf /data/nacos
docker cp nacos:/home/nacos/data /data/nacos
docker cp nacos:/home/nacos/logs /data/nacos# 授权文件
chmod 777 /data/nacos/{conf,logs,data}# 删除容器
docker rm -f nacos

参考:
Docker 部署 Nacos (图文并茂超详细)

九、Nginx

  拉取镜像:

docker pull nginx:1.16.1

  首先测试下 nginx 镜像是否可用,使用 docker run -d --name nginx -p 80:80 nginx:1.16.1 创建并启动 nginx 容器:

  • -d 指定容器以守护进程方式在后台运行
  • –name 指定容器名称,此处我指定的是mynginx
  • -p 指定主机与容器内部的端口号映射关系,格式 -p
  • [宿主机端口号]:[容器内部端口],此处我使用了主机80端口,映射容器80端口
  • 0839 是nginx的镜像IMAGE ID前4位

  页面展示如下,那么恭喜你 Nginx 已经成功安装并运行啦!
在这里插入图片描述
参考:
使用docker安装nginx
手把手教你在Docker中安装Nginx(图文超详细)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/67856.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

设计模式的艺术-职责链模式

行为型模式的名称、定义、学习难度和使用频率如下表所示: 1.如何理解职责链模式 最常见的职责链是直线型,即沿着一条单向的链来传递请求。链上的每一个对象都是请求处理者,职责链模式可以将请求的处理者组织成一条链,并让请求沿着…

CSDN 博客之星 2024:默语的技术进阶与社区耕耘之旅

CSDN 博客之星 2024:默语的技术进阶与社区耕耘之旅 🌟 默语,是一位在技术分享与社区建设中坚持深耕的博客作者。今年,我有幸再次入围成为 CSDN 博客之星TOP300 的一员,这既是对过往努力的肯定,也是对未来探…

Mysql的数据类型(学习自用)

一、整数型数据类型 名称大小(字节数)范围(无符号)范围(有符号)TINYINT10-255-2^8~2^8-1SMALLINT20-65535-2^16~2^16-1MEDIUMINT30-2^24-1-2^24~2^24-1INT40-2^32-1-2^32~2^32-1BIGINT80-2^64-1-2^64~2^64-1 二、浮点…

深入 Flutter 和 Compose 的 PlatformView 实现对比,它们是如何接入平台控件

在上一篇《深入 Flutter 和 Compose 在 UI 渲染刷新时 Diff 实现对比》发布之后,收到了大佬的“催稿”,想了解下 Flutter 和 Compose 在 PlatformView 实现上的对比,恰好过去写过不少 Flutter 上对于 PlatformView 的实现,这次恰好…

winfrom项目,引用EPPlus.dll实现将DataTable 中的数据保存到Excel文件

最近研究不安装office也可以保存Excel文件,在网上查询资料找到这个方法。 第一步:下载EPPlus.dll文件(自行去网上搜索下载) 第二步:引用到需要用的项目中,如图所示: 第三步:写代码…

暑期实习准备:C语言

1.局部变量和全局变量 局部变量的作用域是在变量所在的局部范围,全局变量的作用域是整个工程;局部变量的生命周期是作用域内,全局变量的生命周期是整个程序的生命周期,当两者命名冲突时,优先使用的是局部变量。 2.C语言…

OGG 19C 集成模式启用DDL复制

接Oracle19C PDB 环境下 OGG 搭建(PDB to PDB)_cdb架构 配置ogg-CSDN博客,给 pdb 环境 ogg 配置 DDL 功能。 一个报错 SYShfdb1> ddl_setup.sqlOracle GoldenGate DDL Replication setup scriptVerifying that current user has privile…

【动态规划】落花人独立,微雨燕双飞 - 8. 01背包问题

本篇博客给大家带来的是01背包问题之动态规划解法技巧. 🐎文章专栏: 动态规划 🚀若有问题 评论区见 ❤ 欢迎大家点赞 评论 收藏 分享 如果你不知道分享给谁,那就分享给薯条. 你们的支持是我不断创作的动力 . 王子,公主请阅🚀 要开心要快乐顺便…

FluentCMS:基于 ASP.NET Core 和 Blazor 技术构建的开源CMS内容管理系统

推荐一个基于 ASP.NET Core 和 Blazor 技术构建的、功能完善的开源CMS内容管理系统。 01 项目简介 FluentCMS 是一个基于强大的 ASP.NET Core 和创新的 Blazor 技术构建的现代内容管理系统(CMS)。 FluentCMS 设计为快速、灵活且用户友好,它…

[创业之路-262]:《向流程设计要效率》-2-职能型组织、项目型组织、流程型组织的异同比较

目录 一、职能型组织与流程化组织的比较 1.1、定义与结构 1.2、关注焦点与运作方式 1.3、优势与局限性 1.4、转型与发展 二、职能型组织、项目型组织、流程型组织的比较 2.1、定义与特点 2.2、优势与局限性 2.3、适用场景与选择建议 三、项目型组织、流程型组织的异同…

5G网络下移动机器人的图像和指令传输用于远程操作

论文标题 **英文标题:**Image and Command Transmission Over the 5G Network for Teleoperation of Mobile Robots **中文标题:**5G网络下移动机器人的图像和指令传输用于远程操作 作者信息 Thiago B. Levin,, Joo Miguel Oliveira,, Ricardo B. Sou…

云计算、AI与国产化浪潮下DBA职业之路风云变幻,如何谋破局启新途?

引言 在近日举办的一场「云和恩墨大讲堂」直播栏目中,云和恩墨联合创始人李轶楠、副总经理熊军和欧冶云商数据库首席薛晓刚共同探讨了DBA的现状与未来发展。三位专家从云计算、人工智能、国产化替代等多个角度进行了深入的分析和探讨,为从业者提供了宝贵…

30天开发操作系统 第 17 天 -- 命令行窗口

前言 今天一开始,请大家先回忆一下任务A的情形。在harib13e中,任务A下面的LEVEL中有任务因此FIFO为空时我们可以让任务A进入休眠状态。那么,如果我们并未启动任务B0~ B0~ B2, B2的话,任务A又将会如何呢? 首先&#xf…

R语言学习笔记之开发环境配置

一、概要 整个安装过程及遇到的问题记录 操作步骤备注(包含遇到的问题)1下载安装R语言2下载安装RStudio3离线安装pacman提示需要安装Rtools4安装Rtoolspacman、tidyfst均离线安装完成5加载tidyfst报错 提示需要安装依赖,试错逐步下载并安装…

数据结构 链表2

目录 前言: 一,反转一个链表(迭代) 二,打印一个链表(递归) 三,反转一个链表(递归) 四,双向链表 总结 前言: 我们根据 [文章 链表1] 可以知道链表相比较于数组的优缺点和计算机…

考研408笔记之数据结构(五)——图

数据结构(五)——图 1. 图的基本概念 1.1 图的定义 1.2 有向图和无向图 在有向图中,使用圆括号表示一条边,圆括号里元素位置互换没有影响。 在无向图中,使用尖括号表示一条边,尖括号里元素位置互换则表示…

游戏设备升级怎么选?RTX4070独显,ToDesk云电脑更具性价比

过新年、添喜气!正逢节期来临不知道各位是否都跟小编一样在考虑购置生活中的各样所需呐? 25年可谓是3A游戏大作之年,例如《GTA6》《文明7》《死亡搁浅2》《刺客信条:影》下半年落地的《塞尔达传说:新篇章》《生化危机9…

C语言初阶牛客网刷题——HJ73 计算日期到天数转换【难度:简单】

1. 题目描述——HJ73 计算日期到天数转换 牛客网OJ题链接 描述 每一年中都有 12 个月份。其中,1,3,5,7,8,10,12 月每个月有 31 天; 4,6,9,11 月每个月有 30 天;而对于 2 月,闰年时有29 天,平年时有 28 天。 现在&am…

【深度学习基础】多层感知机 | 权重衰减

【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈PyTorch深度学习 ⌋ ⌋ ⌋ 深度学习 (DL, Deep Learning) 特指基于深层神经网络模型和方法的机器学习。它是在统计机器学习、人工神经网络等算法模型基础上,结合当代大数据和大算力的发展而发展出来的。深度学习最重…

实现酷炫粒子背景效果

使用 particles.vue3 实现酷炫粒子背景效果 在这篇博客中,我们将介绍如何使用 particles.vue3 实现动态粒子背景,并详细讲解其配置参数和常见问题的解决方法。通过本文,你可以轻松在项目中应用并自定义粒子效果。 什么是 particles.vue3&am…