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

本文使用脚本实现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; thenecho "* soft nofile 65536" >> /etc/security/limits.conf
fiif ! grep -q "* hard nofile 65536" /etc/security/limits.conf; thenecho "* 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/profileecho "export HADOOP_CONF_DIR=\$HADOOP_HOME/etc/hadoop" >> /etc/profile
fi# 检查FLINK_HOME是否已经设置  
if ! grep -q "export FLINK_HOME=" /etc/profile; thenecho "export FLINK_HOME=$FLINK_HOME" >> /etc/profileecho "export PATH=\$FLINK_HOME/bin:\$PATH" >> /etc/profile
fi# 检查HADOOP_HOME是否已经设置  
if ! grep -q "export HADOOP_CLASSPATH=" /etc/profile; thenecho "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" 3echo "检查并杀掉已存在的 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.rhkb.cn/news/478261.html

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

相关文章

【vue】vue中插槽slot的用法详解

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; &#x1f3c6; 作者简介&#xff1a;景天科技苑 &#x1f3c6;《头衔》&#xff1a;大厂架构师&#xff0c;华为云开发者社区专家博主&#xff0c;…

爬虫获取的数据如何用于市场分析?

在数字化时代&#xff0c;数据已成为企业决策的重要资产。通过爬虫技术获取的数据可以为市场分析提供丰富的原材料。本文将探讨如何利用Python爬虫获取的数据进行市场分析&#xff0c;并提供代码示例。 1. 数据收集 首先&#xff0c;我们需要通过爬虫收集相关数据。以电商行业…

Linux高阶——1123—服务器基础服务器设备服务器基础能力

目录 1、服务器基础 1、服务器基本概述 2、服务器设计之初解决的问题 网络穿透 网络数据设备间的收发 3、服务器的类型C/S、B/S 2、服务器设备 将自己的服务器软件部署上线 3、代理服务器负载均衡&#xff0c;以及地址绑定方式 4、服务器的基础能力 1、服务器基础 1…

DICOM图像深入解析:为何部分DR/CR图像默认显示为反色?

概述 在数字医学影像处理中,CR(Computed Radiography,计算机放射摄影)和DR(Digital Radiography,数字放射摄影)技术广泛应用于医疗影像获取与分析。然而,临床实践中常常遇到这样一个问题:部分CR/DR图像在默认打开时呈现为反色(即负片效果),需手动反色后才能正常阅片…

公网弹性绑定负载均衡收费吗?

公网弹性绑定负载均衡收费吗&#xff1f;公网弹性绑定负载均衡&#xff08;ELB&#xff09;是收费的。费用主要包括公网IP费、带宽费和负载均衡实例费。其中&#xff0c;带宽费可以按固定带宽或实际使用流量计费&#xff0c;而实例费则根据类型、规格和使用时长来定价。此外&am…

【ArcGISPro】根据yaml构建原始Pro的conda环境

使用场景 我们不小心把原始arcgispro-py3的conda环境破坏了,我们就可以使用以下方法进行修复 查找文件 在arcgis目录下找到yaml文件 如果没找到请复制以下内容到新的yaml文件 channels: - esri - defaults dependencies: - anyio=4.2.0=py311haa95532_0 - appdirs=1.4.4=p…

多头数(head number);d_model、d_k;词嵌入维度之间的关系;多头是对不同维度的特征分开提取,意义在于将并行执行

目录 多头是对不同维度的特征分开提取,意义在于将并行执行 之后的每头提取的特征仅仅进行矩阵拼接 多头数(head number) d_model、d_k 词嵌入维度之间的关系 词嵌入的维度(d_model)决定了权重矩阵的形状 一、概念解释 二、关系举例说明 多头数,权重矩阵的长度和词…

【Google Cloud】Private Service Connect 托管式服务

简介 Private Service Connect 是什么 Private Service Connect 是 Google Cloud&#xff08;原名 GCP&#xff09;Virtual Private Cloud&#xff08;VPC&#xff09;的一项功能。 该功能主要用于以下两个场景&#xff1a; 使用私有 IP 访问 Google Cloud 的 API。将用户自…

【redis 】string类型详解

string类型详解 一、string类型的概念二、string类型的常用指令2.1 SET2.2 GET2.3 MSET2.4 MGET2.5 SETNX2.6 INCR2.7 INCRBY2.8 DECR2.9 DECRBY2.10 INCRBYFLOAT2.11 APPEND2.12 GETRANGE2.13 SETRANGE2.14 STRLEN 三、string类型的命令小结四、string类型的内部编码五、strin…

跨平台应用开发框架(1)----Qt(组件篇)

目录 1.Qt 1.Qt 的主要特点 2.Qt的使用场景 3.Qt的版本 2.QtSDK 1.Qt SDK 的组成部分 2.安装 Qt SDK 3.Qt SDK 的优势 3.Qt初识 1.快速上手 widget.cpp mian.cpp widget.h Helloworld.pro 2.对象树 3.坐标系 4.信号和槽 1. 信号和槽的基本概念 2. 信号和槽的…

Element UI 打包探索【2】

目录 第三个命令 第四个命令 第五个命令 第六个命令 第七个命令 cross-env BABEL_ENV babel 第八个命令 总结 书&#x1f4da;接上文Element UI 打包探索【1】我们继续来看 第三个命令 "lint": "eslint src/**/* test/**/* packages/**/* build/**/* …

JavaScript 中通过Array.sort() 实现多字段排序、排序稳定性、随机排序洗牌算法、优化排序性能,JS中排序算法的使用详解(附实际应用代码)

目录 JavaScript 中通过Array.sort() 实现多字段排序、排序稳定性、随机排序洗牌算法、优化排序性能&#xff0c;JS中排序算法的使用详解&#xff08;附实际应用代码&#xff09; 一、为什么要使用Array.sort() 二、Array.sort() 的使用与技巧 1、基础语法 2、返回值 3、…

丹摩 | 利用 CogVideoX 生成视频

声明&#xff1a;非广告&#xff0c;纯用户体验 1. CogVideoX CogVideoX 是智谱 AI 推出的一款极具创新性与突破性的视频生成产品。它在技术层面展现出诸多卓越特性&#xff0c;例如其采用的 Diffusion Transformer&#xff08;DiT&#xff09;架构奠定了强大的生成能力基础…

SAP开发语言ABAP常见面试问题及答案

一、基础概念问题 什么是SAP ABAP&#xff1f; SAP ABAP&#xff08;Advanced Business Application Programming&#xff09;是一种高级企业应用编程语言&#xff0c;用于开发SAP系统中的应用程序。它主要用于定制和扩展SAP的标准功能&#xff0c;以满足企业特定的业务需求。例…

C# 读取多条数据记录导出到 Word标签模板之图片输出改造

目录 应用需求 设计 范例运行环境 配置Office DCOM 实现代码 组件库引入 ​核心代码 调用示例 小结 应用需求 在我的文章《C# 读取多条数据记录导出到 Word 标签模板》里&#xff0c;讲述读取多条数据记录结合 WORD 标签模板输出文件的功能&#xff0c;原有输出图片的…

『 Linux 』网络层 - IP协议 (二)

文章目录 路由NAT技术分片与组装分片的组装IP协议分片的短板 路由 通常情况路由器具备了一个非常重要的功能,即构建子网; 同时路由器需要实现跨网络通信,说明路由器必须存在两个或以上的IP地址,通常在路由器中可以看到几个接口,分别是一个WAN口和几个LAN口; WAN口IP被称为公网I…

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

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

javaEE初阶——多线程(1)

文章目录 一些背景知识操作系统&#xff08;OS&#xff09;&#xff08;计算机的大管家&#xff09;操作系统的基本概念&#xff1a;市面上常见的操作操作系统&#xff1a; 关于前端与后端的介绍&#xff1a;&#xff08;针对服务的体系架构&#xff09;计算机是如何工作的&…

Apple Vision Pro开发003-PolySpatial2.0新建项目

unity6.0下载链接:Unity 实时开发平台 | 3D、2D、VR 和 AR 引擎 一、新建项目 二、导入开发包 com.unity.polyspatial.visionos 输入版本号 2.0.4 com.unity.polyspatial&#xff08;单独导入&#xff09;&#xff0c;或者直接安装 三、对应设置 其他的操作与之前的版本相同…

学习threejs,使用设置normalMap法向量贴图创建更加细致的凹凸和褶皱

&#x1f468;‍⚕️ 主页&#xff1a; gis分享者 &#x1f468;‍⚕️ 感谢各位大佬 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍⚕️ 收录于专栏&#xff1a;threejs gis工程师 文章目录 一、&#x1f340;前言1.1 ☘️THREE.MeshPhongMaterial高…