使用脚本实现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.mzph.cn/pingmian/61866.shtml

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

相关文章

【JUC-Interrupt】中断相关概念

线程中断 一、相关概念二、API2.1、isInterrupted方法2.2、interrupted方法2.3、interrupt 三、总结&#xff1a; 一、相关概念 一个线程不应该由其他线程中断或停止&#xff0c;应该有线程自己来决定。 在Java中没有办法立即停止一个线程&#xff0c;因此提供了用于停止线程…

javascript基础学习

什么是伪代码 伪代码(Pseudocode)是一种介于自然语言和编程语言之间的算法描述方式。它使用类似自然语言的语句来描述程序的逻辑和流程,但又采用了编程语言中的一些结构和控制语句,如循环、条件判断等。 伪代码的目的是在不涉及具体编程语言语法细节的情况下,清晰地表达…

Django+Nginx+uwsgi网站Channels+redis+daphne多人在线聊天实现粘贴上传图片

在DjangoNginxuwsgi网站Channelsredisdaphne多人在线的基础上&#xff08;详见DjangoNginxuwsgi网站使用Channelsredisdaphne实现简单的多人在线聊天及消息存储功能-CSDN博客&#xff09;&#xff0c;实现在输入框粘贴或打开本地图片&#xff0c;上传到网站后返回图片路径&…

C++ —— 以真我之名 如飞花般绚丽 - 智能指针

目录 1. RAII和智能指针的设计思路 2. C标准库智能指针的使用 2.1 auto_ptr 2.2 unique_ptr 2.3 简单模拟实现auto_ptr和unique_ptr的核心功能 2.4 shared_ptr 2.4.1 make_shared 2.5 weak_ptr 2.6 shared_ptr的缺陷&#xff1a;循环引用问题 3. shared_ptr 和 unique_…

vulnhub靶场之breakout

empire靶场2 前言 靶机&#xff1a;breakout 攻击&#xff1a;kali 续接上个靶场empire1的继续学习 主机发现 使用arp-scan扫描或者直接查看虚拟机的ip地址 信息收集 使用nmap扫描 端口80apache 2.4.51开启smb服务的两个端口139、445&#xff0c;版本4.6.2两个http服务采…

今天你学C++了吗?——C++中的类与对象(第二集)

♥♥♥~~~~~~欢迎光临知星小度博客空间~~~~~~♥♥♥ ♥♥♥零星地变得优秀~也能拼凑出星河~♥♥♥ ♥♥♥我们一起努力成为更好的自己~♥♥♥ ♥♥♥如果这一篇博客对你有帮助~别忘了点赞分享哦~♥♥♥ ♥♥♥如果有什么问题可以评论区留言或者私信我哦~♥♥♥ ✨✨✨✨✨✨ 个…

聚划算!一区算法!双分解+牛顿拉夫逊优化+深度学习!CEEMDAN-VMD-NRBO-Transformer多元时序预测

目录 效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab实现CEEMDAN-Kmeans-VMD-NRBO-Transformer融合K均值聚类的数据双重分解牛顿-拉夫逊优化算法Transformer多元时间序列预测&#xff08;完整源码和数据&#xff09;运行环境Matlab2023b及以上。 2.CEEMDAN分解…

C++设计模式-中介者模式

动机(Motivation) 多个对象相互关联的情况&#xff0c;对象之间常常会维持一种复杂的引用关系&#xff0c;如果遇到一些需求的更改&#xff0c;这种直接的引用关系将面临不断的变化。在这种情况下&#xff0c;可以使用一种”中介对象“来管理对象间的关联关系&#xff0c;避免…

滑动窗口篇——如行云流水般的高效解法与智能之道(2)

前言&#xff1a; 上篇我们介绍了滑动窗口的含义并结合基础题型加以练习&#xff0c;本篇将以进阶难度的题目为索引&#xff0c;深化对于滑动窗口的运用与理解。 一. 将x减到0的最小操作数 题目链接&#xff1a;1658. 将 x 减到 0 的最小操作数 - 力扣&#xff08;LeetCode&am…

EG3D: Efficient Geometry-aware 3D Generative Adversarial Networks 学习笔记

1 Contributions 混合显式-隐式网络架构&#xff1a;提出了一种 Tri-plane 的3D表征方法&#xff0c;结合显式体素网格与隐式解码器的优点 速度快&#xff0c;内存效率高&#xff1b; 支持高分辨率生成&#xff0c;保持3D表征的灵活性和表达能力。与纯显式或隐式方法相比&#…

⭐ Unity 资源管理解决方案:Addressable_ Demo演示

一、使用Addressable插件的好处&#xff1a; 1.自动管理依赖关系 2.方便资源卸载 3.自带整合好的资源管理界面 4.支持远程资源加载和热更新 二、使用步骤 安装组件 1.创建资源分组 2.将资源加入资源组 3.打包资源 4.加载资源 三种方式可以加载 using System.Collections…

C++《二叉搜索树》

在初阶数据结构中我学习了树基础的概念以及了解了顺序结构的二叉树——堆和链式结构二叉树该如何实现&#xff0c;那么接下来我们将进一步的学习二叉树&#xff0c;在此会先后学习到二叉搜索树、AVL树、红黑树&#xff1b;通过这些的学习将让我们更易于理解后面set、map、哈希等…

使用VisualStudio编写C++程序输出helloWorld

文章目录 1. C简介1.1 历史背景1.2 特点1.3 应用领域 2. 操作过程和代码2.1 打开Visual Studio(默认你下载了C的相关文件)2.2 创建新项目2.3 输入名字&#xff0c;创建2.4 右击源文件->添加->新建项2.5 命名好&#xff0c;进行添加2.6 输入代码2.7 输出结果 3. 总结 1. C…

万能的无人机锁定目标投放程序

✨✨ 欢迎大家来访Srlua的博文&#xff08;づ&#xffe3;3&#xffe3;&#xff09;づ╭❤&#xff5e;✨✨ &#x1f31f;&#x1f31f; 欢迎各位亲爱的读者&#xff0c;感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢&#xff0c;在这里我会分享我的知识和经验。&am…

LayaBox1.8.4实现UV滚动

实现思路&#xff1a; 在片元着色器采样时&#xff0c;增加一个随时间变化的偏移值&#xff0c;由于uv是一个二维向量所以加的偏移值也需要一个二维向量。注意&#xff1a;在Laya的 shader中除了0&#xff0c;输入其它数字必须输入带有小数的数字&#xff0c;否则报错 。 &quo…

Next.js- App Router 概览

#题引&#xff1a;我认为跟着官方文档学习不会走歪路 一&#xff1a;App Router与Page Router 在 v13 版本中&#xff0c;Next.js 引入了一个基于 React 服务器组件 构建的新的 App Router&#xff0c;而在这之前&#xff0c;Next.js 使用的是Page Router。 目录结构 pages …

milvus es

ES 与 Milvus 结合实现高效文档搜索的实战指南 原文链接 目录 背景介绍场景与效果概述架构对比与问题分析Milvus 向量搜索架构ES Milvus 搜索架构详细流程解析Milvus 搜索配置详解ES 搜索策略与 DSL 配置结果合并与排序策略总结与未来优化 1. 背景介绍 随着团队和公司的发…

Flutter 设计模式全面解析:抽象工厂

设计模式作为软件开发中的经典解决方案&#xff0c;在 Flutter 的开发中也能为我们提供强大的架构支持。本文来介绍一下如何在 Flutter 中来实现抽象工厂设计模式&#xff0c;以及如何创建一系列相关或依赖对象并优雅地管理它们之间的复杂依赖关系。 日常开发中我们也能经常看…

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

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

深度学习实战图像缺陷修复

这里写目录标题 概述1. 图像缺陷修复的研究背景2. 传统图像缺陷修复方法的局限性(1) 基于纹理合成的方法(2) 基于偏微分方程&#xff08;PDE&#xff09;的方法 3. 深度学习在图像缺陷修复中的兴起(1) 深度学习的基本思路(2) 深度学习方法的优势(3) 关键技术的引入 4. 深度学习…