使用脚本实现hadoop-yarn-flink自动化部署

news2024/11/26 13:11:22

本文使用脚本实现hadoop-yarn-flink的快速部署(单机部署)。
环境:①操作系统:CentOS 7.6;②CPU:x86;③用户:root。

1.前置条件

把下面的的脚本保存到“pre-install.sh”文件,“sh pre-install.sh”执行。
脚本如下:

#!/bin/bash  
# 检查JAVA_HOME环境变量是否设置  
if [ -z "$JAVA_HOME" ]; then  
    echo "JAVA_HOME环境变量未设置,脚本将退出。"  
    exit 1
fi

# 文件路径  
FILE="/etc/sysctl.conf"  
  
# 要添加的内容  
LINE="vm.max_map_count=2000000"  
  
# 使用 grep 检查 vm.max_map_count 是否已存在,修改/etc/sysctl.conf vm.max_map_count=2000000
if ! grep -q "^vm\.max_map_count=" "$FILE"; then  
    # 如果不存在,则添加到文件末尾  
    echo "$LINE" >> "$FILE"  
    sudo sysctl -p  
fi

# 修改handlers数
if ! grep -q "* soft nofile 65536" /etc/security/limits.conf; then
    echo "* soft nofile 65536" >> /etc/security/limits.conf
fi

if ! grep -q "* hard nofile 65536" /etc/security/limits.conf; then
    echo "* hard nofile 65536" >> /etc/security/limits.conf
fi

##关闭交换分区
swapoff -a 

# 定义要检查的变量和值  
HADOOP_HOME="/home/hadoop-3.3.3"  
FLINK_HOME="/home/flink-1.13.1"  

# 检查HADOOP_HOME是否已经设置  
if ! grep -q "export HADOOP_HOME=" /etc/profile; then  
    echo "export HADOOP_HOME=$HADOOP_HOME" >> /etc/profile  
    echo "export PATH=\$PATH:\$HADOOP_HOME/bin:\$HADOOP_HOME/sbin" >> /etc/profile
    echo "export HADOOP_CONF_DIR=\$HADOOP_HOME/etc/hadoop" >> /etc/profile
fi

# 检查FLINK_HOME是否已经设置  
if ! grep -q "export FLINK_HOME=" /etc/profile; then
    echo "export FLINK_HOME=$FLINK_HOME" >> /etc/profile
	echo "export PATH=\$FLINK_HOME/bin:\$PATH" >> /etc/profile
fi

# 检查HADOOP_HOME是否已经设置  
if ! grep -q "export HADOOP_CLASSPATH=" /etc/profile; then
    echo "export HADOOP_CLASSPATH=\`hadoop classpath\`" >> /etc/profile
fi

# /home/目录下创建project_config目录
mkdir -p /home/project_config

# 执行生效
source /etc/profile

温馨提示:由pre-install.sh修改的是系统文件,因此需要重新登录打开一个新linux窗口执行接下来的命令。

执行这步出现下图提示是正常的,可继续执行下一步,是因为hadoop还没部署。
在这里插入图片描述

2.上传安装包

把flink-1.13.1-bin-scala_2.11.tgz、hadoop-3.3.3.tar、上传到“/home”目录下。

3.安装

把下面的的脚本保存到“hadoop-yarn-flink-install.sh”文件,“sh hadoop-yarn-flink-install.sh”执行。
脚本如下:

#!/bin/bash  
  
# 获取当前主机IP(只取第一个非本地回环的IPv4地址)  
HOST_NET=$(ip -o -4 addr show | awk '/inet / && !/127.0.0.1/ {split($4,a,"/"); print a[1]; exit}')  

# 定义一个函数来杀掉进程  
kill_process() {  
    local process_name=$1  
    local wait_time=$2  
    local pids=$(pgrep -f "$process_name")  
    if [ -n "$pids" ]; then  
        echo "杀掉 $process_name 进程: $pids"  
        for pid in $pids; do  
            kill "$pid" || kill -9 "$pid"  # 先尝试正常终止,如果不行则强制终止  
        done  
          
        # 等待进程完全退出  
        while pgrep -x "$process_name" >/dev/null; do  
            sleep 1  
            echo "等待 $process_name 进程退出..."  
            if (( wait_time-- <= 0 )); then  
                echo "警告: $process_name 进程在 $wait_time 秒后仍未退出!"  
                break  
            fi  
        done  
    fi  
}  
  
# 使用函数杀掉进程  
echo "检查并杀掉已存在的 SecondaryNameNode 进程..."  
kill_process "SecondaryNameNode" 2  
  
echo "检查并杀掉已存在的 NameNode 进程..."  
kill_process "NameNode" 3  
  
echo "检查并杀掉已存在的 ResourceManager 进程..."  
kill_process "ResourceManager" 3  
  
echo "检查并杀掉已存在的 NodeManager 进程..."  
kill_process "NodeManager" 3

echo "检查并杀掉已存在的 DataNode 进程..."  
kill_process "DataNode" 3
  
# 输出开始信息  
echo "开始安装,安装IP:$HOST_NET,安装地址:/home"  
  
# 对原安装目录进行备份  
BACKUP_DIR="/home/hadoop-3.3.3_$(date +%Y-%m-%d.%H:%M:%S)"  
if [ -d "/home/hadoop-3.3.3" ]; then  
    mv "/home/hadoop-3.3.3" "$BACKUP_DIR"  
    echo "原hadoop安装目录已备份至:$BACKUP_DIR"  
fi  
  
# 解压hadoop压缩包   
if ! tar -xvf hadoop-3.3.3.tar -C /home/; then  
    echo "错误:解压hadoop压缩包失败。"  
    exit 1  
fi  

# 解压flink压缩包   
if ! tar -zxvf flink-1.13.1-bin-scala_2.11.tgz -C /home/; then  
    echo "错误:解压flink压缩包失败。"  
    exit 1  
fi  

# 确保JAVA_HOME已定义  
if [ -z "$JAVA_HOME" ]; then  
    echo "错误:JAVA_HOME环境变量未定义。"  
    exit 1  
fi  
  
# 修改hadoop-env.sh  
echo "export JAVA_HOME=$JAVA_HOME" >> "/home/hadoop-3.3.3/etc/hadoop/hadoop-env.sh"  

# 修改flink-conf.yaml  
echo "classloader.resolve-order: parent-first" >> "/home/flink-1.13.1/conf/flink-conf.yaml"  
echo "classloader.check-leaked-classloader: false" >> "/home/flink-1.13.1/conf/flink-conf.yaml"  
  
# 修改core-site.xml 修改ip  
if ! sed -i "s/21.81.10.234/$HOST_NET/g" /home/hadoop-3.3.3/etc/hadoop/core-site.xml; then  
    echo "错误:修改core-site.xml失败。"  
    exit 1  
fi  
  
# 修改yarn-site.xml 修改ip  
for pattern in "21.81.10.234:8099" "21.81.10.234:8035" "21.81.10.234:8046"; do  
    if ! sed -i "s/$pattern/$HOST_NET:$(echo $pattern | cut -d: -f2)/g" /home/hadoop-3.3.3/etc/hadoop/yarn-site.xml; then  
        echo "错误:修改yarn-site.xml中的$pattern失败。"  
        exit 1  
    fi  
done 
  
# 格式化namenode  
yes y | /home/hadoop-3.3.3/bin/hdfs namenode -format 
  
# 启动hadoop  
if ! /home/hadoop-3.3.3/sbin/start-dfs.sh; then  
    echo "错误:启动hadoop失败。"  
    exit 1  
fi  
  
# 启动yarn  
if ! /home/hadoop-3.3.3/sbin/start-yarn.sh; then  
    echo "错误:启动yarn失败。"  
    exit 1  
fi  
  
echo "Hadoop与yarn启动成功,可通过访问:【$HOST_NET:9870/dfshealth.html】与【$HOST_NET:8099/cluster】验证或通过jps命令验证"

jps查看如下,说明部署成功:
在这里插入图片描述
至此hadoop-yarn-flink安装完成。

访问【$HOST_NET:9870/dfshealth.html】查看hadoop,如下图所示:
在这里插入图片描述

访问【$HOST_NET:8099/cluster】查看yarn,如下图所示:
在这里插入图片描述

4.常见问题

4.1 本机ssh免密登录异常

通过脚本部署hadoop时如出现异常信息如下:
在这里插入图片描述
解决:配置本机免密登录便可。

ssh-keygen -t rsa
ssh-copy-id ip地址

4.2 修改了ssh默认端口

需要修改/home/hadoop-3.3.3/etc/hadoop/hadoop-env.sh,如默认端口修改成2222。
在hadoop/hadoop-env.sh文件中最后加上export HADOOP_SSH_OPTS=“-p 2222” ,然后再重启hadoop则可。

4.3 flink jar包冲突解决

异常信息:
在这里插入图片描述
解决:
/home/flink-1.13.1/conf/flink-conf.yaml
classloader.resolve-order: parent-first

4.4 Yarn Application 8099端口访问不了

/home/hadoop-3.3.3/etc/hadoop/yarn-site.xml
在这里插入图片描述
用curl在linux窗口查看是否可正常访问,如可以则是映射出来的地址不可访问,可修改成可以访问的映射地址再通过web访问便可。

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

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

相关文章

Linux系统编程之进程基础知识

概述 在Linux系统中&#xff0c;进程是指一个正在运行的程序实例。每个进程都有一个唯一的进程标识符&#xff0c;即PID&#xff0c;操作系统通过这个PID来唯一识别和管理各个进程。进程不仅仅是程序代码的运行实例&#xff0c;它还包含了程序运行时所需的各种资源&#xff0c;…

H.264/H.265播放器EasyPlayer.js网页全终端安防视频流媒体播放器关于iOS不能系统全屏

在数字化时代&#xff0c;流媒体播放器已成为信息传播和娱乐消遣的主流载体。随着技术的进步&#xff0c;流媒体播放器的核心技术和发展趋势不断演变&#xff0c;影响着整个行业的发展方向。 EasyPlayer播放器属于一款高效、精炼、稳定且免费的流媒体播放器&#xff0c;可支持…

【数据结构】二叉树的建立与遍历

1.二叉树 1.1 二叉树的定义 首先先来回顾一下什么是二叉树&#xff1a; 二叉树&#xff08;binary tree&#xff09;是指树中节点的度不大于2的有序树&#xff0c;它是一种最简单且最重要的树。二叉树的递归定义为&#xff1a;二叉树是一棵空树&#xff0c;或者是一棵由一个根…

51单片机基础 06 串口通信与串口中断

目录 一、串口通信 二、串口协议 三、原理图 四、串口通信配置参数 1、常用的串行口工作方式1 2、数据发送 3、数据接收 4、波特率计算 5、轮询接收 6、中断接收 一、串口通信 串口通信是一种常见的数据传输方式&#xff0c;广泛用于计算机与外部设备或嵌入式系统之间…

智慧环保大数据解决方案

1. 智慧环保概述 智慧环保是“数字环保”的延伸&#xff0c;借助物联网技术整合环境监控对象&#xff0c;通过云计算实现环境管理与决策的智能化。其核心在于快速感知城市环境指标&#xff0c;保障人体健康与生命安全。 2. 智慧环保总体目标 智慧环保的总体目标是建立全面感…

如何使用identify_debugger去抓取信号

含有identify抓取信号的fpga版本做好了&#xff0c;那如何使用他去抓取信号呢&#xff1f; 1.terminal打开identify_debugger&#xff0c;直接这个命令identify_debugger&#xff0c;前提是你安装了synopsys的synaplify的软件&#xff0c;一般做芯片的都会有的哈。 2.打开界面后…

从 Llama 1 到 3.1:Llama 模型架构演进详解

编者按&#xff1a; 面对 Llama 模型家族的持续更新&#xff0c;您是否想要了解它们之间的关键区别和实际性能表现&#xff1f;本文将探讨 Llama 系列模型的架构演变&#xff0c;梳理了 Llama 模型从 1.0 到 3.1 的完整演进历程&#xff0c;深入剖析了每个版本的技术创新&#…

windows基础

声明&#xff01; 学习视频来自B站up主 泷羽sec 有兴趣的师傅可以关注一下&#xff0c;如涉及侵权马上删除文章&#xff0c;笔记只是方便各位师傅的学习和探讨&#xff0c;文章所提到的网站以及内容&#xff0c;只做学习交流&#xff0c;其他均与本人以及泷羽sec团队无关&#…

Jmeter中的配置原件

2&#xff09;配置原件 1--CSV Data Set Config 用途 参数化测试&#xff1a;从CSV文件中读取数据&#xff0c;为每个请求提供不同的参数值。数据驱动测试&#xff1a;使用外部数据文件来驱动测试&#xff0c;使测试更加灵活和可扩展。 配置步骤 准备CSV文件 创建一个CSV文…

c++基础知识复习(2)

1. 多态的虚函数的意义 1 案例&#xff1a;父类和子类有同名函数&#xff0c;但是功能不一样&#xff0c;但是同时&#xff0c;子类又继承了父类&#xff0c;就会导致调用的错误&#xff0c;想调用子类的同名函数&#xff0c; 但是在某些情况下&#xff0c;会错误调用父类的同…

NVR管理平台EasyNVR多个NVR同时管理:全方位安防监控视频融合云平台方案

EasyNVR是基于端-边-云一体化架构的安防监控视频融合云平台&#xff0c;具有简单轻量的部署方式与多样的功能&#xff0c;支持多种协议&#xff08;如GB28181、RTSP、Onvif、RTMP&#xff09;和设备类型&#xff08;IPC、NVR等&#xff09;&#xff0c;提供视频直播、录像、回放…

SpringBoot3+Jasypt如何在配置文件中对数据库的密码进行加密以防止密码泄露

在 Spring Boot 3 中&#xff0c;可以通过jasypt-spring-boot-starter对配置文件中的数据库密码或者其他重要密码进行加密&#xff0c;操作非常简单&#xff0c;可以有效防止密码泄露&#xff1a; 1. 使用 Jasypt 加密 添加依赖 在 pom.xml 中添加 Jasypt 依赖&#xff1a; …

ARM(安谋) China处理器

0 Preface/Foreword 0.1 参考博客 Cortex-M23/M33与STAR-MC1星辰处理器 ARM China&#xff0c;2018年4月established&#xff0c;独立运行。 1 处理器类型 1.1 周易AIPU 1.2 STAR-MC1&#xff08;星辰处理器&#xff09; STAT-MC1&#xff0c;主要为满足AIOT应用性能、功…

Adobe Illustrator 2024 安装教程与下载分享

介绍一下 下载直接看文章末尾 Adobe Illustrator 是一款由Adobe Systems开发的矢量图形编辑软件。它广泛应用于创建和编辑矢量图形、插图、徽标、图标、排版和广告等领域。以下是Adobe Illustrator的一些主要特点和功能&#xff1a; 矢量绘图&#xff1a;Illustrator使用矢量…

CVE-2022-26201

打开是这么个页面 左上角找到Admin访问 里面有个Add Users&#xff0c;访问一下&#xff0c;能创建用户&#xff0c;有个能上传图片的地方 普通的一句话木马无法访问flag&#xff0c;需要创建一个权限马 <?php system($_GET[1]);phpinfo();?> 因为只能上传jpg形式的文…

使用 OpenCV 进行视频中的行人检测

在计算机视觉领域&#xff0c;行人检测是一个重要的研究方向&#xff0c;它在视频监控、自动驾驶、人机交互等领域都有着广泛的应用。本文将介绍如何使用 OpenCV 库来实现视频中的行人检测。 环境准备 首先&#xff0c;我们需要安装 OpenCV 库。可以通过以下命令来安装&#…

【K8s】专题十五(4):Kubernetes 网络之 Calico 插件安装、切换网络模式、卸载

本文内容均来自个人笔记并重新梳理&#xff0c;如有错误欢迎指正&#xff01; 如果对您有帮助&#xff0c;烦请点赞、关注、转发、订阅专栏&#xff01; 专栏订阅入口 | 精选文章 | Kubernetes | Docker | Linux | 羊毛资源 | 工具推荐 | 往期精彩文章 【Docker】&#xff08;全…

鸿蒙面试题-某迈-2024年11月22日

某迈-2024年11月22日 1. 自我介绍 2. 鸿蒙中地图功能如何实现&#xff0c;申请流程是什么样的 主要通过 集成 Map Kit 的功能来实现Map Kit 功能很强大&#xff0c;比如有 创建地图&#xff1a;呈现内容包括建筑、道路、水系等。地图交互&#xff1a;控制地图的交互手势和交…

微软要求 Windows Insider 用户试用备受争议的召回功能

拥有搭载 Qualcomm Snapdragon 处理器的 Copilot PC 的 Windows Insider 计划参与者现在可以试用 Recall&#xff0c;这是一项臭名昭著的快照拍摄 AI 功能&#xff0c;在今年早些时候推出时受到了很多批评。 Windows 营销高级总监 Melissa Grant 上周表示&#xff1a;“我们听…

【Android】静态广播接收不到问题分析思路

参考资料&#xff1a; Android 静态广播注册流程(广播2)-CSDN博客 Android广播发送流程(广播3)_android 发送广播-CSDN博客 https://zhuanlan.zhihu.com/p/347227068 在Android中&#xff0c;静态广播如果静态广播不能接收&#xff0c;我们可以从整个流程中去分析&#xff…