(六)使用Ansible搭建分布式大数据基础环境-Hadoop高可用集群搭建

本文是使用Ansible搭建分布式大数据环境系列的第六篇,详细介绍了如何通过Ansible配置和部署Hadoop高可用集群。内容涵盖下载安装、配置核心文件、启动和验证集群等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

“使用Ansible搭建分布式大数据基础环境”系列文章完整包含了如何使用Ansible这一分布式运维利器,来帮我们快速搭建Hadoop2/Spark2/Hive2/ZooKeeper3/Flink1.7/ElasticSearch5等一整套大数据解决方案。本篇是系列文章的第六篇。更多后续文章敬请关注后续文章。
(一)使用Ansible搭建分布式大数据基础环境-环境准备
(二)使用Ansible搭建分布式大数据基础环境-Ansible项目创建
(三)使用Ansible搭建分布式大数据基础环境-编写第一个playbook
(四)使用Ansible搭建分布式大数据基础环境-Ansible常用Module介绍
(五)使用Ansible搭建分布式大数据基础环境-ZooKeeper集群模式搭建
(六)使用Ansible搭建分布式大数据基础环境-Hadoop高可用集群搭建
(七)使用Ansible搭建分布式大数据基础环境-MySQL安装

终于到了我们的重头戏——Hadoop分布式集群的搭建了。Hadoop做为整个开源大数据解决方案的核心,是Hive/Hbase等技术的基石,
Spark/Flink等时下最热门的技术也可以通过托管到Hadoop(实际上是Yarn)来实现分布式。

整个Hadoop集群搭建的PlayBook我们主要分两个步骤:

  1. 下载Hadoop安装包并解压,完成环境变量配置
  2. 配置core-site.xml,hdfs-site.xml,salves,yarn-site.xml,mapred-site.xml并copy到Hadoop安装目录。
  3. 运行ansible命令完成Hadoop集群搭建然后远程SSH到namenode节点直接使用NameNode集群上的start-dfs.sh/start-yarn.sh启动整个集群,并验证集群启动成功

1. 下载并解压,完成环境变量配置

tasks/main.yaml


---
# 创建DataNode数据存放目录,data_base在外层group_vars里面定义
- name: Create DataNode Data Directory
  file: path={
  {data_base}}/hdfs/datan``````ode state=directory
  
# 创建NameNode数据存放目录
- name: Create NameNode Data Directory
  file: path={
  {data_base}}/hdfs/namenode state=directory

# 创建NameNode数据存放目录
- name: Create JOURNAL Data Directory
  file: path={
  {data_base}}/jnode state=directory

# 开始下载,实际下载Mirror上下载地址格式:http://mirror.bit.edu.cn/apache/hadoop/core/hadoop-2.7.7/hadoop-2.7.7.tar.gz, {
  {filename}}等变量在当前role的vars/main.yaml定义
# 这里有个tricky,就是get_url 的dest参数的值如果到具体文件,那么如果当前机器上该文件存在,get_url没有制定force=yes的情况下就不会重新下载,如果dest只是到目录,那么每次都会重新下载
- name: Download hadoop file
  get_url: url='{
  {download_server}}/{
  {path}}/{
  {filename}}-{
  {version}}/{
  {filename}}-{
  {version}}.{
  {suffix}}' dest="{
  {download_base}}/{
  {filename}}-{
  {version}}.{
  {suffix}}" remote_src=yes
  register: download_result

# 校验下载文件是否成功创建
- name: Check whether registered
  stat:
    path: "{
  {app_base}}/{
  {filename}}-{
  {version}}"
  register: node_files

# debug调试输出
- debug:
    msg: "{
  {node_files.stat.exists}}"

# 在下载成功,并且解压缩目标目录不存在的情况下解压,防止解压覆盖
- name: Extract archive
  unarchive: dest={
  {app_base}} src='{
  {download_base}}/{
  {filename}}-{
  {version}}.{
  {suffix}}' remote_src=yes
  when: download_result.state == 'file' and node_files.stat.exists == False

# 创建软链接
- name: Add soft link
  file: src="{
  {app_base}}/{
  {filename}}-{
  {version}}" dest={
  {app_base}}/{
  {filename}} state=link

# 添加HADOOP_HOME环境变量,下面几条指令作用相通,become表示要切换到root执行
- name: Add ENV HADOOP_HOME
  become: yes
  lineinfile: dest=/etc/profile.d/app_bin.sh line="export HADOOP_HOME={
  {app_base}}/{
  {filename}}"

- name: Add ENV HADOOP_PREFIX
  become: yes
  lineinfile: dest=/profile.d/app_bin.sh line="export HADOOP_PREFIX=$HADOOP_HOME"

- name: Add ENV HADOOP_COMMON_HOME
  become: yes
  lineinfile: dest=/profile.d/app_bin.sh line="export HADOOP_HOME={
  {app_base}}/{
  {filename}}"

- name: Add ENV YARN_CONF_DIR
  become: yes
  lineinfile: dest=/profile.d/app_bin.sh line="export YARN_CONF_DIR=$HADOOP_HOME/etc/hadoop"

- name: Add ENV HADOOP_CONF_DIR
  become: yes
  lineinfile: dest=/profile.d/app_bin.sh line="export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop"

- name: Export PATH
  become: yes
  lineinfile: dest=/profile.d/app_bin.sh line="export PATH=$PATH:/$HADOOP_HOME/bin"

其中,使用到的hadoop相关变量都定义在当前roles/hadoop/vars/main.yaml中,只有Hadoop role使用到
var/main.yaml

path: hadoop/core
filename: hadoop
version: 2.7.7
suffix: tar.gz
appname: hadoop
# 以下是NameNode/DataNode启动使用JVM参数
HADOOP_HEAPSIZE: 1024
HADOOP_NAMENODE_INIT_HEAPSIZE: 1024
HADOOP_NAMENODE_OPTS: -Xms1g -Xmx1g -XX:+UseG1GC -XX:MetaspaceSize=512m -XX:MaxMetaspaceSize=512m -XX:G1RSetUpdatingPauseTimePercent=5 -XX:InitiatingHeapOccupancyPercent=70 -XX:ParallelGCThreads=20 -XX:ConcGCThreads=20 -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintHeapAtGC -XX:+PrintTenuringDistribution -XX:+PrintGCApplicationStoppedTime -XX:+PrintPromotionFailure -XX:PrintFLSStatistics=1 -Xloggc:/data/bigdata/log/namenode-gc.log -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=10 -XX:GCLogFileSize=10M
HADOOP_DATANODE_OPTS: -Xms1g -Xmx1g -XX:+UseG1GC -XX:MetaspaceSize=512m -XX:MaxMetaspaceSize=512m -XX:G1RSetUpda
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值