当前位置: 首页 > ops >正文

使用Ansible自动化部署Hadoop集群(含源码)--环境准备

现在我们有5台虚拟机,已经配置好了主机名和网络

我们的目标是通过Ansible实现自动化部署hadoop集群。在此之前,我们先编写一个shell脚本来配置hadoop集群的环境,包括安装软件、安装配置Ansible(一个主节点+四个工作节点)、实现节点间的免密访问、配置hdfs yarn zookeeper等角色分组,为后续自动化部署hadoop集群做准备。

#!/bin/bash
# 指定使用 Bash 作为脚本解释器set -ueo pipefail
# 设置安全选项:
# -u: 未定义变量时报错
# -e: 命令执行失败时立即退出
# -o pipefail: 管道命令中任意失败视为整个管道失败# 统一 echo 函数定义
echo() {printf '%s\n' "$1"  # 使用 printf 确保输出一致性
}# 检查 root 权限
if [ "$(id -u)" -ne 0 ]; thenecho 'Please run as root!'  # 非 root 用户提示exit 127  # 返回错误代码
fi# 安装必要软件包函数
install_packages() {dnf install -y sshpass ansible tar vim open-vm-tools  # 使用 dnf 安装关键工具# 配置 Ansible 禁用主机密钥检查if ! (grep -qF 'host_key_checking' /etc/ansible/ansible.cfg); thencat << 'EOT' >> /etc/ansible/ansible.cfg
[defaults]
host_key_checking = False  # 禁用 SSH 主机密钥验证
deprecation_warnings = False  # 关闭弃用警告
EOTfi
}# 配置 Ansible 主机清单
install_inventory() {cat << 'EOT' >> /etc/ansible/hosts
# Hadoop 集群分组配置
[NameNode]
hadoop1
hadoop2[DataNode]
hadoop1-hadoop5(共5个节点)[ZKFC]  # Zookeeper 故障转移控制器
hadoop1
hadoop2# 其他组配置(JournalNode/NodeManager/ResourceManager/ZooKeeper)...
EOT
}# 配置主机名解析
install_hosts() {cat << 'EOT' >> /etc/hosts
# Hadoop 集群 IP 映射
192.168.30.121 hadoop1
192.168.30.122 hadoop2
...(共5个节点)
EOT
}# 配置 SSH 免密登录
install_root_ssh_key() {ssh-keygen -t rsa -N '' -f /root/.ssh/id_rsa  # 生成 RSA 密钥对# 为所有节点配置免密登录for i in {1..5}; dosshpass -p 'hadoop' ssh-copy-id -o StrictHostKeyChecking=no root@hadoop$idone
}# 主执行流程
install_packages     # 1. 安装软件
install_inventory    # 2. 配置 Ansible
install_hosts        # 3. 设置主机映射
install_root_ssh_key # 4. 配置 SSH 免密

http://www.xdnf.cn/news/20165.html

相关文章:

  • 【Android】ViewPager2结合Fragment实现多页面滑动切换
  • 百度竞价推广:搜索竞价信息流推广代运营
  • ElementUI之Upload 上传的使用
  • C++语法之--多态
  • 了解Python
  • Ubuntu:Git SSH密钥配置的完整流程
  • 捷多邦揭秘超厚铜板:从制造工艺到设计关键环节​
  • 让字符串变成回文串的最少插入次数-二维dp
  • 单元测试详解
  • 基于树莓派与Jetson Nano集群的实验边缘设备上视觉语言模型(VLMs)的性能评估与实践探索
  • 【c++进阶系列】:万字详解AVL树(附源码实现)
  • ubuntu 系統使用過程中黑屏問題分析
  • 前端上传切片优化以及实现
  • 基于LLM开发Agent应用开发问题总结
  • equals 定义不一致导致list contains错误
  • SQL面试题及详细答案150道(81-100) --- 子查询篇
  • webrtc弱网-LossBasedBandwidthEstimation类源码分析与算法原理
  • 【Proteus仿真】定时器控制系列仿真——秒表计数/数码管显示时间
  • 【ComfyUI】混合 ControlNet 多模型组合控制生成
  • ANSYS HFSS边界条件的认识
  • 【LeetCode热题100道笔记】二叉树中的最大路径和
  • 9.FusionAccess桌面云
  • Spring的事件监听机制(一)
  • 03.缓存池
  • 【数学建模】质量消光系数在烟幕遮蔽效能建模中的核心作用
  • 故障诊断 | MATLAB基于CNN - LSSVM组合模型在故障诊断中的应用研究
  • 在Ubuntu上配置Nginx实现开机自启功能
  • 54.【.NET8 实战--孢子记账--从单体到微服务--转向微服务】--新增功能--实现手机邮箱注册
  • js面试题 什么是作用域?
  • 【Proteus仿真】定时器控制系列仿真——LED小灯闪烁/流水灯/LED灯带控制/LED小灯实现二进制