Kubernetes运行大数据组件-设计思路

环境说明

在Kubernetes集群添加三个节点作为大数据测试服务节点:

NAME            STATUS   ROLES      AGE    VERSION
bigdata199056   Ready    worker     2d3h   v1.20.6
bigdata199057   Ready    worker     2d5h   v1.20.6
bigdata199058   Ready    worker     2d3h   v1.20.6

主要原理

  1. 配置"hostNetwork: true",直接使用节点网络;

  2. 配置"hostPath"分配节点存储,直接使用本地存储;在这里插入图片描述

  3. 配置"hostAliases"为pod注入域名解析,相当于配置/etc/hosts, 添加域名解析(所有节点已配置/etc/hosts可忽略):

			hostAliases:
			  - ip: "192.168.199.56"
			    hostnames:
			      - "bigdata199056"
			  - ip: "192.168.199.57"
			    hostnames:
			      - "bigdata199057"
			  - ip: "192.168.199.58"
			    hostnames:
			      - "bigdata199058"
			nodeSelector:
			  namenode: "true"
			tolerations:
			  - key: "bigdata"
				value: "true"
				operator: "equal"
				effect: "noschedu1e"
  1. 配置"Taints"保证大数据组件外的pod不会调度到这些节点;

  2. 配置"nodeSelector"和"tolerations"使得对应角色的pod调度到特定的节点上,类似于CDH部署时角色定义,参考CDH角色与节点的绑定部署方式:
    在这里插入图片描述
    在Kubernetes中节点配置Taints和Label,只有pod中配置容忍"bigdata=true"才能调度到这些节点上,同时还需要满足nodeSelector中的label匹配调度(找了一张用rancher管理的图,与上面CDH很类似了):
    在这里插入图片描述

  3. 配置"affinity"(亲和性)和"podAntiAffinity"(pod反亲和)使得数据pod(datanode)和计算pod(nodemanager)不会分布在相同的节点上;

  4. 通过"ConfigMap"维护服务配置文件;

apiVersion: v1
kind: ConfigMap
metadata:
  name: hadoop-config
data:
  core-site.xml: |
    <?xml version="1.0"?>
    <configuration>
      <property>
        <name>fs.defaultFS</name>
        <value>hdfs://192.168.199.56:8020</value>
      </property>
      <property>
        <name>io.file.buffer.size</name>
        <value>131072</value>
      </property>
      <property>
        <name>hadoop.proxyuser.root.groups</name>
        <value>*</value>
      </property>
      <property>
        <name>hadoop.proxyuser.root.hosts</name>
        <value>*</value>
      </property>
    </configuration>
  hdfs-site.xml: |
    其它配置 。。。

扩容方法

横向扩容

  1. 将扩容节点添加到kubernetes集群中
  2. 配置新节点污点,保证不被调度其它pod上去
  3. 配置新节点label,即配置扩容服务调度需要的标签
  4. 修改扩容服务yaml文件,在hostAliases中添加新节点ip和hostname,修改replicas为扩容后的总数(当前3节点,扩容2节点,则修改为5)
  5. 根据新的yaml文件更新服务

纵向扩容

  1. 停止当前服务,可通过配置replicas为0,kubernets自动清除服务pod(由于数据在节点上,仅仅相当于停止服务,数据不会丢失)
  2. 对扩容节点进行关机扩容,扩容后启动节点
  3. kubernets下扩容节点正常上线后,修改扩容服务yaml文件的resources资源,调整为扩容后的数值
  4. 根据新的yaml文件更新服务

修改配置

所有的配置都通过kubernetes下ConfigMap类型发布:
在这里插入图片描述
每个ConfigMap包含一个和多个配置文件内容:
在这里插入图片描述

  1. 修改服务对应的ConfigMap文件内容
  2. 发布新的ConfigMap,一般映射到pod中的ConfigMap变更同步会有延迟,大约20s左右
  3. 配置文件更新后,服务并不会自动加载,需要手动重启服务,根据实际情况选择a或者b:
    a. 直接删除pod,让其自动重建,效果相当于关闭服务再重启服务
    b. 进入pod中手动停止服务,再手动启动服务
  4. 查看新配置下服务运行情况

远程服务

我们可以通过在镜像中内置sshd服务,并支持通过环境变量的方法配置SSH端口(SSHD_PORT不能为22,和宿主机冲突)配置root用户密码(ROOT_PWD),实现其它自动化服务调用及人工远程操作。
比如:大数据调试需要进入容器环境,而又不想给Kubernetes权限的场景。

共享文件

共享文件主要为多客户端共同读写一个目录,在Kubernetes上可供选择的最简单的为NFS存储,我们将一个NFS共享目录注册为Kubernetes下的多对PV&PVC,分别挂载到需要共享的服务目录下。
比如:不同节点运行的任务需要读写同一个文件的场景。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Maven的依赖

一、依赖的基本配置 根元素project下的dependencies可以包含多个 dependence元素&#xff0c;以声明多个依赖。每个依赖都应 该包含以下元素&#xff1a; 1. groupId, artifactId, version : 依赖的基本坐标&#xff0c; 对于任何⼀个依赖来说&#xff0c;基本坐标是最…

前端聊天室页面开发(赛博朋克科技风,内含源码)

肝了一天&#xff0c;经过各种处理美化&#xff0c;肝出来了一个赛博朋克科技风的前端页面&#xff0c;用的原生三件套htmlcssjavascript开发的&#xff0c;本来想是加点功能调用一下gpt接口&#xff0c;但是基本都需要webscoket通信&#xff0c;可惜我js学的不是很深入&#x…

使用Vue.js构建响应式Web应用

&#x1f496; 博客主页&#xff1a;瑕疵的CSDN主页 &#x1f4bb; Gitee主页&#xff1a;瑕疵的gitee主页 &#x1f680; 文章专栏&#xff1a;《热点资讯》 使用Vue.js构建响应式Web应用 1 引言 2 Vue.js简介 3 安装Vue CLI 4 创建Vue项目 5 设计应用结构 6 创建组件 7 使用…

C++——string的模拟实现(下)

目录 成员函数 3.4 修改操作 (3)insert()函数 (4)pop_back()函数 (5)erase()函数 (6)swap()函数 3.5 查找操作 (1)find()函数 (2)substr()函数 3.6 重载函数 (1)operator赋值函数 (2)其他比较函数 (3)流插入和流提取 完整代码 结束语 第一篇链接&#xff1a;C——…

基于Springboot无人驾驶车辆路径规划系统(源码+定制+开发)

博主介绍&#xff1a; ✌我是阿龙&#xff0c;一名专注于Java技术领域的程序员&#xff0c;全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师&#xff0c;我在计算机毕业设计开发方面积累了丰富的经验。同时&#xff0c;我也是掘金、华为云、阿里云、InfoQ等平台…

【大模型】Ollama+WebUI+AnythingLLM搭建本地知识库

目录 1 部署Ollama 1.1 下载镜像ollama 1.2 运行ollama 1.3 验证 2 模型选型 3 安装模型 3.1 选择模型安装 3.2 删除模型(选看) 4 安装webUI 4.1 拉镜像 4.2 启动服务 5 访问 5.1 注册 5.2 登录 5.3 设置 6 使用 7 使用api来调用 8 安装AnythingLLM搭建本地…

27.9 调用go-ansible执行playbook拷贝json文件重载采集器

本节重点介绍 : go-ansible执行playbook编写分发重载的playbook编译执行 测试停掉一个节点测试停掉的节点再回来 go-ansible执行playbook 新增 goansiblerun/run.go package goansiblerunimport ("context""github.com/apenella/go-ansible/pkg/execute&qu…

Python基础学习(四)程序控制结构

代码获取&#xff1a;https://github.com/qingxuly/hsp_python_course 完结版&#xff1a;Python基础学习完结版 程序控制结构 程序流程控制介绍 基本介绍 程序流程控制绝对程序是如何执行的&#xff0c;是我们必须掌握的&#xff0c;主要有三大流程控制语句。顺序控制、分支…

Linux中DHCP服务器配置和管理

文章目录 一、DHCP服务1.1、DHCP的工作流程1.2、DHCP的工作模式1.3、dhcp的主要配置文件 二、安装DHCP服务2.1、更新yum源2.2、安装DHCP服务软件包2.3、配置DHCP服务2.4、启用DHCP服务&#xff08;解决报错&#xff09;2.4.1、查看dhcpd服务的状态和最近的日志条目2.4.2、查看与…

js构造函数和原型对象,ES6中的class,四种继承方式

一、构造函数 1.构造函数是一种特殊的函数&#xff0c;主要用来初始化对象 2.使用场景 常见的{...}语法允许创建一个对象。可以通过构造函数来快速创建多个类似的对象。 const Peppa {name: 佩奇,age: 6,sex: 女}const George {name: 乔治,age: 3,sex: 男}const Mum {nam…

【react 和 vue】 ---- 实现组件的递归渲染

1. 需求场景 今天遇到了一个需求&#xff0c;就是 HTML 的递归渲染。问题就是商品的可用时间&#xff0c;使用规则等数据是后端配置&#xff0c;然后配置规则则是可以无限递归的往下配置&#xff0c;可以存在很多级。后端实现后&#xff0c;数据返回前端&#xff0c;就需要前端…

【mysql 进阶】2-1. MySQL 服务器介绍

MySQL 服务器简介 通常所说的 MySQL 服务器指的是mysqld程序&#xff0c;当运⾏mysqld后对外提供MySQL 服务&#xff0c;这个专题的内容涵盖了以下关于MySQL 服务器以及相关配置的内容&#xff0c;包括&#xff1a; 服务器⽀持的启动选项。可以在命令⾏和配置⽂件中指定这些选…

前后端请求、返回数据的多种方式

Springboot项目的业务逻辑 &#x1f319;项目基本结构&#xff1a; 通常情况下&#xff0c;我们在搭建后端项目的时候&#xff0c;处理业务逻辑我们需要用到Controller,Service,Mapper(mybatis,mybatis-plus)&#xff0c;Entry各层之间的相互调用来完成&#xff0c;还有就是我…

数据库->增删改查

目录 一、CRUD简介 二、Create新增 1.单行数据插入 2.查询 3. 多行数据插入 4.执行本机的SQL脚本插入 三、Retrieve检索 1.全列查询 2.指定列查询 3.查询字段为表达式 3.1 常量表达式 3.2列的值与常量运算 3.3列与列之间的运算 3.4为列指定别名 4.结果查询去重…

高等数学-宋浩版2.0-映射

映射&#xff1a;X,Y为非空集合&#xff0c;存在法则F,对X(原像)中每个元素X&#xff0c;按法则F&#xff0c;在Y中有唯一元素与之对应&#xff0c;F为x到Y&#xff08;镜像&#xff09;的映射。f:X->Y X原像&#xff0c;Y像&#xff0c;x定义域&#xff0c;Df,Rf &#x…

php后端学习,Java转php

遇到前后端跨域 php解决跨域问题可以加上下面的代码&#xff1a; header(“Access-Control-Allow-Origin:*”); 并且查看自己的数据库信息是否连接成功。 从Java转php 个人感受php跟偏向前端&#xff0c; 写后端逻辑时没有像java又springboot工具方便。 但是和前端联调很方便…

BUUCTF之web篇

第一题 [极客大挑战 2019]EasySQL 打开靶机后可以看到这是一个登陆的页面 我们可以尝试两种方式登录 弱口令爆破&#xff08;burpsuite&#xff09; 通过SQL注入里的万能密码来跳过账户和密码验证的过程 这里就需要万能密码aor true # 在这里单引号的作用是结束用户名或者密码…

Python基于TensorFlow实现简单循环神经网络回归模型(SimpleRNN回归算法)项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后关注获取。 1.项目背景 Simple RNN是一种基础的循环神经网络&#xff0c;它能够处理序列数据&#xff0c;例如文本、时间序…

React写关键字高亮的三个方案

1.js正则replaceAlldangerouslySetInnerHTML{{ __html: xxx }}危险属性 步骤最简单,但是是危险属性,不推荐使用,项目中实在没有头绪,可以使用它应急 通过useMemo计算得到新的状态值,赋值给dangerouslySetInnerHTML属性的__html 关键代码: const [state1, setState1] useSt…

【网络原理】网络地址转换----NAT技术详解

&#x1f490;个人主页&#xff1a;初晴~ &#x1f4da;相关专栏&#xff1a;计算机网络那些事 我们在 IP协议 一文中介绍过&#xff0c;由于IPv4协议中 IP地址只有32位&#xff0c;导致最多只能表示 42亿9千万个IP地址。但我们需要通过IP地址来标识网络上的每一个设备&#x…