hadoop安装与配置-shell脚本一键安装配置(集群版)

文章目录

  • 前言
  • 一、安装准备
    • 1. 搭建集群
  • 二、使用shell脚本一键安装
    • 1. 复制脚本
    • 2. 增加执行权限
    • 3. 分发脚本
    • 4. 执行脚本
    • 5. 加载用户环境变量
  • 三、启动与停止
    • 1. 启动/停止hadoop集群
      • (1) 复制hadoop集群启动脚本
      • (2) 增加执行权限
      • (3) 启动hadoop集群
      • (4) 停止hadoop集群
      • (5) 重启hadoop集群
    • 6. 浏览器访问
  • 总结


前言

本文介绍了在Hadoop集群中安装和配置Hadoop的过程。首先,我们搭建了一个集群,并确保集群节点之间可以免密登录。然后,我们使用Shell脚本一键安装Hadoop。脚本会下载指定版本的Hadoop,并将其安装到指定目录。接着,脚本会配置Hadoop的各项参数,包括核心配置、HDFS配置、MapReduce配置和YARN配置。最后,我们启动了Hadoop集群,并通过浏览器访问了HDFS和YARN的Web界面。


hadoopd单机版安装教程:hadoop安装与配置:使用Shell脚本一键下载、安装、配置Hadoop(单机版)

一、安装准备

1. 搭建集群

点击链接查看集群搭建教程:配置集群免密登录

二、使用shell脚本一键安装

以下所有操作均在hadoop101节点

1. 复制脚本

首先,在hadoop101节点,将以下脚本内容复制并保存为/tmp/install_hadoop_cluster.sh文件。

#!/bin/bash# 设置3个节点的主机名或ip,修改为自己的
host_node1=192.168.145.103
host_node2=192.168.145.104
host_node3=192.168.145.105# 安装版本
zk_version="3.1.3"
# 安装目录
zk_installDir="/opt/module/hadoop"install_hadoop() {local version=$1local installDir=$2local node1=$3local node2=$4local node3=$5# 下载地址local downloadUrl="https://archive.apache.org/dist/hadoop/common/hadoop-$version/hadoop-$version.tar.gz"if [ -z "$(command -v wget)" ]; thensudo yum install -y wgetecho "wget安装完成"fiif [ -z "$JAVA_HOME" ]; thenecho "JAVA_HOME未设置,请安装jdk1.8,设置Java环境变量再来执行此脚本"exit 1fiif [ ! -d "${installDir}" ]; thensudo mkdir -p "${installDir}"if [ $? -eq 0 ]; thenecho "安装目录${installDir}已创建"elseecho "请确保您有足够的权限来创建目录,请增加权限后再次执行"exit 1fifiif [ ! -f /tmp/hadoop-"$version".tar.gz ] ; thenwget "$downloadUrl" -P /tmpif [ $? -eq 0 ]; thenecho "hadoop-$version.tar.gz下载成功"elseecho "hadoop-$version.tar.gz下载失败,请重试或手动下载到/tmp目录下再次执行"echo "下载地址:$downloadUrl"exit 1fielseecho "/tmp/hadoop-$version.tar.gz文件已存在"fiif [ -d "${installDir}"/hadoop-"$version" ]; thenecho "${installDir}/hadoop-$version 已存在,正在删除..."sudo rm -rf "${installDir}"/hadoop-"$version"fitar -zxvf /tmp/hadoop-"$version".tar.gz -C "${installDir}"if [ $? -eq 0 ]; thenecho "/tmp/hadoop-$version.tar.gz解压成功"elseecho "/tmp/hadoop-$version.tar.gz解压失败,请查看异常信息后重试"exit 1fiif [ -z "$HADOOP_HOME" ]; then# 设置hadoop用户环境变量echo >> ~/.bashrcecho '#HADOOP_HOME' >> ~/.bashrcecho "export HADOOP_HOME=${installDir}/hadoop-${version}" >> ~/.bashrcecho 'export PATH=$PATH:$HADOOP_HOME/bin' >> ~/.bashrcecho 'export PATH=$PATH:$AHDOOP_HOME/sbin' >> ~/.bashrcelseecho "HADOOP_HOME已有设置:$HADOOP_HOME"fi# 配置hadoopecho "配置hadoop..."coresite="\<configuration>\n\<!--指定NameNode的地址-->\n\<property>\n\<name>fs.defaultFS</name>\n\<value>hdfs://$node1:8020</value>\n\</property>\n\<!--指定hadoop数据的存储目录-->\n\<property>\n\<name>hadoop.tmp.dir</name>\n\<value>$installDir/hadoop-$version/data</value>\n\</property>\n\<!-- 配置访问hadoop的权限,能够让hive访问到 -->\n\<property>\n\<name>hadoop.proxyuser.root.hosts</name>\n\<value>*</value>\n\</property>\n\<property>\n\<name>hadoop.proxyuser.root.users</name>\n\<value>*</value>\n\</property>\n\</configuration>\"hdfssite="\<configuration>\n\<!-- namenode web端访问地址-->\n\<property>\n\<name>dfs.namenode.http-address</name>\n\<value>$node1:9870</value>\n\</property>\n\<!-- secondarynamenode web端访问地址-->\n\<property>\n\<name>dfs.namenode.secondary.http-address</name>\n\<value>$node3:9868</value>\n\</property>\n\<property>\n\<name>dfs.permissions.enabled</name>\n\<value>false</value>\n\</property>\n\</configuration>\"mapredsite="\<configuration>\n\<!--指定MapReduce程序运行在Yarn上-->\n\<property>\n\<name>mapreduce.framework.name</name>\n\<value>yarn</value>\n\</property>\n\<!--历史服务器端地址-->\n\<property>\n\<name>mapreduce.jobhistory.address</name>\n\<value>$node2:10020</value>\n\</property>\n\<!--历史服务器web端地址-->\n\<property>\n\<name>mapreduce.jobhistory.webapp.address</name>\n\<value>$node2:19888</value>\n\</property>\n\</configuration>\"yarnsite="\<configuration>\n\<!--指定MR走shuffle -->\n\<property>\n\<name>yarn.nodemanager.aux-services</name>\n\<value>mapreduce_shuffle</value>\n\</property>\n\<!--指定ResourceManager的地址-->\n\<property>\n\<name>yarn.resourcemanager.hostname</name>\n\<value>$node2</value>\n\</property>\n\<!--环境变量的继承-->\n\<property>\n\<name>yarn.nodemanager.env-whitelist</name>\n\<value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>\n\</property>\n\<!--开启日志聚集功能-->\n\<property>\n\<name>yarn.log-aggregation-enable</name>\n\<value>true</value>\n\</property>\n\<!--设置日志聚集服务器地址-->\n\<property>\n\<name>yarn.log.server.url</name>\n\<value>http://$node2:19888/jobhistory/logs</value>\n\</property>\n\<!--设置日志保留时间为7天-->\n\<property>\n\<name>yarn.log-aggregation.retain-seconds</name>\n\<value>604800</value>\n\</property>\n\</configuration>\"sed -i '/<configuration>/,/<\/configuration>/c '"$coresite"'' "$installDir"/hadoop-"$version"/etc/hadoop/core-site.xmlsed -i '/<configuration>/,/<\/configuration>/c '"$hdfssite"'' "$installDir"/hadoop-"$version"/etc/hadoop/hdfs-site.xmlsed -i '/<configuration>/,/<\/configuration>/c '"$mapredsite"'' "$installDir"/hadoop-"$version"/etc/hadoop/mapred-site.xmlsed -i '/<configuration>/,/<\/configuration>/c '"$yarnsite"'' "$installDir"/hadoop-"$version"/etc/hadoop/yarn-site.xmlecho "$node1" > "$installDir"/hadoop-"$version"/etc/hadoop/workersecho "$node2" >> "$installDir"/hadoop-"$version"/etc/hadoop/workersecho "$node3" >> "$installDir"/hadoop-"$version"/etc/hadoop/workersecho "hadoop的配置文件:core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml都已配置完成"local ip_addr=$(ip addr | grep 'inet ' | awk '{print $2}'| tail -n 1 | grep -oP '\d+\.\d+\.\d+\.\d+')if [[ "$node1" == "$(hostname)" || "$node1" == "$ip_addr" ]]; then"$installDir"/hadoop-"$version"/bin/hdfs namenode -formatif [ $? -eq 0 ]; thenecho "格式化namenode成功"elseecho "格式化namenode失败"exit 1fifi
#  rm -rf /tmp/hadoop-"$version".tar.gzecho "hadoop下载、安装、配置完成"
}install_hadoop "$zk_version" "$zk_installDir" "$host_node1" "$host_node2" "$host_node3"

2. 增加执行权限

在终端中执行以下命令,为脚本添加执行权限。

chmod a+x /tmp/install_hadoop_cluster.sh

3. 分发脚本

点击链接查看scp命令介绍及其使用:linux常用命令-find命令与scp命令详解(超详细)

使用scp命令把/tmp/install_kafka_cluster.sh脚本分发到hadoop102hadoop103节点的/tmp目录下。

scp /tmp/install_hadoop_cluster.sh hadoop102:/tmp
scp /tmp/install_hadoop_cluster.sh hadoop103:/tmp

如下图:
在这里插入图片描述

4. 执行脚本

执行以下命令,运行脚本开始下载、安装和配置Kafka。
首先在hadoop101执行,再使用远程连接命令让hadoop102hadoop103节点执行。

/tmp/install_hadoop_cluster.sh

请等待hadoop101安装配置完成,如有异常会有提示。

ssh hadoop102 /tmp/install_hadoop_cluster.sh

请等待hadoop102安装配置完成,如有异常会有提示。

ssh hadoop103 /tmp/install_hadoop_cluster.sh

请等待hadoop103安装配置完成,如有异常会有提示。

成功如下图所示:
在这里插入图片描述

5. 加载用户环境变量

执行以下命令,加载用户环境变量,首先在hadoop101执行,再使用远程连接命令让hadoop102hadoop103节点执行。

source ~/.bashrc
ssh hadoop102
source ~/.bashrc
exit
ssh hadoop103
source ~/.bashrc
exit

如下图所示:
在这里插入图片描述

三、启动与停止

集群之间切换启动过于麻烦,在这里直接写一个脚本来启动集群。

1. 启动/停止hadoop集群

(1) 复制hadoop集群启动脚本

将以下脚本内容复制并保存为~/bin/hadoop.sh文件。把HADOOP_HOME改为自己的安装目录,把node1node2node3改为自己的ip地址或主机名。

#!/bin/bash# 设置hadoop安装目录
HADOOP_HOME="/opt/module/hadoop/hadoop-3.1.3"
# 集群节点
node1=192.168.145.103
node2=192.168.145.104
node3=192.168.145.105# 启动hadoop
start_hadoop() {ssh $node1 "$HADOOP_HOME/sbin/start-dfs.sh"ssh $node2 "$HADOOP_HOME/sbin/start-yarn.sh"
}# 停止hadoop
stop_hadoop() {ssh $node1 "$HADOOP_HOME/sbin/stop-dfs.sh"ssh $node2 "$HADOOP_HOME/sbin/stop-yarn.sh"
}# 重启hadoop
restart_hadoop() {ssh $node1 "$HADOOP_HOME/sbin/stop-dfs.sh"ssh $node2 "$HADOOP_HOME/sbin/stop-yarn.sh"sleep 3ssh $node1 "$HADOOP_HOME/sbin/start-dfs.sh"ssh $node2 "$HADOOP_HOME/sbin/start-yarn.sh"
}# 根据命令行参数执行相应操作
case "$1" in
start)start_hadoop;;
stop)stop_hadoop;;
restart)restart_hadoop;;
*)echo "Usage: $0 {start|stop|restart}"exit 1;;
esacexit 0

(2) 增加执行权限

chmod a+x ~/bin/hadoop.sh

(3) 启动hadoop集群

hadoop.sh start

启动成功如下图所示:
在这里插入图片描述
如果启动时报如下错误

ERROR: Attempting to operate on hdfs namenode as root

解决方法:启动hadoop集群时报错

(4) 停止hadoop集群

hadoop.sh stop

(5) 重启hadoop集群

hadoop.sh restart

6. 浏览器访问

浏览器访问hdfs,地址:http://192.168.145.103:9870/,192.168.145.103改为自己node1的ip地址,如下图所示:
在这里插入图片描述
浏览器访问yarn,地址:http://192.168.145.104:8088/,192.168.145.104改为自己node2的ip地址,如下图所示:
在这里插入图片描述


总结

通过本文的步骤,您成功地安装和配置了Hadoop集群。您现在可以使用Hadoop来处理大规模的数据,并享受其强大的分布式计算能力。

希望本教程对您有所帮助!如有任何疑问或问题,请随时在评论区留言。感谢阅读!

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

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

相关文章

智慧社区前景无限,科技引领未来发展

社区是城镇化发展的标志&#xff0c;作为人类现代社会的生活的基本圈子&#xff0c;是人类生活离不开的地方&#xff0c;社区人口密度大、车辆多&#xff0c;管理无序&#xff0c;社区的膨胀式发展多多少少带来一定的管理上的缺失。社区作为智慧城市建设的重要一环&#xff0c;…

编译基于LIO-SAM的liorf“Large velocity, reset IMU-preintegration!“

使用LIO-SAM修改的代码liorf&#xff08;因自己使用的IMU传感器是 6-axis ouster&#xff09;&#xff1a; LIO-SAM代码连接&#xff1a; https://github.com/TixiaoShan/LIO-SAM liorf代码连接&#xff1a; https://github.com/YJZLuckyBoy/liorf 编译运行出现错误&#…

eve-ng山石网科HillStone镜像部署

HillStone 部署 author&#xff1a;leadlife data&#xff1a;2023/12/4 mains&#xff1a;EVE-ng HillStone 镜像部署 - use hillstone-sg6000 default&#xff1a;hillstone/hillstone 传输 scp hillstone-sg6000.zip root192.168.3.130:/opt/unetlab/addons/qemu/部署 cd …

echarts绘制一个环形图

其他echarts&#xff1a; echarts绘制一个柱状图&#xff0c;柱状折线图 echarts绘制一个饼图 echarts绘制一个环形图2 效果图&#xff1a; 代码&#xff1a; <template><div class"wrapper"><!-- 环形图 --><div ref"doughnutChart…

C++STL的string(超详解)

文章目录 前言C语言的字符串 stringstring类的常用接口string类的常见构造string (const string& str);string (const string& str, size_t pos, size_t len npos); capacitysize和lengthreserveresizeresize可以删除数据 modify尾插插入字符插入字符串 inserterasere…

如何将腾讯混元大模型AI接入自己的项目里(中国版本ChatGPT)

如何将腾讯混元大模型AI接入自己的项目里 一、腾讯混元大模型API二、使用步骤1、接口2、请求参数3、请求参数示例4、接口 返回示例 三、 如何获取appKey和uid1、申请appKey:2、获取appKey和uid 四、重要说明 一、腾讯混元大模型API 基于腾讯混元大模型AI的智能文本对话AI机器人…

TypeScript 的修饰符(modifier)和装饰器(decorator)

装饰器是一种特殊类型的声明&#xff0c;它能够被附加到类声明....上。 装饰器使用 expression这种形式

使用消息队列遇到的问题—kafka

目录 1 分区2 消费者3 Kafka 如何保证消息的消费顺序&#xff1f;3.1 方案一3.2 方案二 4 消息积压 在项目中使用kafka作为消息队列&#xff0c;核心工作是创建生产者—包装数据&#xff1b;创建消费者----包装数据。 欠缺一些思考&#xff0c;特此梳理项目中使用kafka遇到的一…

浅析以太网接口及串口转以太网技术

浅析以太网接口 以太网相关接口主要包括&#xff1a;MII/RMII/SMII以及GMII/RGMII/SGMII接口。 一、MII接口 MII&#xff08;Media Independent Interface&#xff09;介质无关接口或称为媒体独立接口&#xff0c;它是IEEE-802.3定义的以太网行业标准。它包括一个数据接口和…

Python 小红书评论区采集 小红薯xhs精准用户获客

成品图 评论接口https://edith.xiaohongshu.com/api/sns/web/v2/comment/page?note_id笔记id&cursor光标 初次使用cursor为空,该接口为GET&#xff0c;需要x-s,x-t签名验证 子评论接口https://edith.xiaohongshu.com/api/sns/web/v2/comment/sub/page?note_id%s&r…

python爬取robomaster论坛文章数据,携带登录信息

一. 内容简介 python爬取robomaster论坛文章数据。 二. 软件环境 2.1vsCode 2.2Anaconda version: conda 22.9.0 2.3代码 三.主要流程 3.1 接口分析&#xff0c;以及网页结构分析 # 这是文章链接,其实id就是文章的id # https://bbs.robomaster.com/forum.php?modview…

win系统一台电脑安装两个不同版本的mysql教程

文章目录 1.mysql下载zip包&#xff08;地址&#xff09;2.解压在你的电脑上&#xff08;不要再C盘和带中文的路径&#xff09;3.创建my.ini文件4.更改环境变量&#xff08;方便使用, 可选&#xff09;5.打包mysql服务6.初始化mysql的data7.启动刚刚打包的服务8.更改密码 1.mys…

【无标将列表中的多组参数依次带入指定的函数将每次调用函数返回结果组成列表itertools.starmap()题】

【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 将列表中的多组参数 依次带入指定的函数 将每次调用函数 返回结果组成列表 itertools.starmap() [太阳]选择题 请问以下代码输出的结果是&#xff1f; import itertools a [(1, 2), (3, 4)] p…

基于JAVA+SpringBoot+Vue的前后端分离的医院信息智能化HIS系统

✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取项目下载方式&#x1f345; 一、项目背景介绍&#xff1a; 随着科技的不断发展&a…

【WPF.NET开发】WPF中的对话框

目录 1、消息框 2、通用对话框 3、自定义对话框 实现对话框 4、打开对话框的 UI 元素 4.1 菜单项 4.2 按钮 5、返回结果 5.1 模式对话框 5.2 处理响应 5.3 非模式对话框 Windows Presentation Foundation (WPF) 为你提供了自行设计对话框的方法。 对话框是窗口&…

浙政钉SDK安装

专有订单SDK&#xff08;jar包&#xff09;下载 专有钉钉门户 (dg-work.cn) Maven依赖 浙政钉 <!-- 浙政钉 --> <dependency><groupId>com.oracel</groupId><artifactId>zwdd-sdk-java</artifactId><version>1.2.0</version…

概率密度函数(PDF)正态分布

概率密度函数&#xff08;PDF&#xff09;是一个描述连续随机变量取特定值的相对可能性的函数。对于正态分布的情况&#xff0c;其PDF有一个特定的形式&#xff0c;这个形式中包括了一个常数乘以一个指数函数&#xff0c;它假设误差项服从均值为0的正态分布&#xff1a; p ( …

外汇天眼:新西兰监管机构永久性停止对David McEwen及与其相关的实体的命令

新西兰金融市场管理局&#xff08;FMA&#xff09;已对David Elgar McEwen及与其相关的实体&#xff08;McEwen and Associates&#xff09;发布了永久性停止令。 与McEwen先生相关的实体包括Stockfox Limited、Cosmopolitan Holdings Limited、Strategy Services Limited、Fun…

Ubuntu系统使用快速入门实践(七)——软件安装与使用(3)

Ubuntu系统使用快速入门实践系列文章 下面是Ubuntu系统使用系列文章的总链接&#xff0c;本人发表这个系列的文章链接均收录于此 Ubuntu系统使用快速入门实践系列文章总链接 下面是专栏地址&#xff1a; Ubuntu系统使用快速入门实践系列文章专栏 文章目录 Ubuntu系统使用快速…

教育心得整理

压抑使人反抗&#xff0c;反抗就是报复&#xff0c;报复就会引起犯罪。要消灭犯罪&#xff0c;我们必须杜绝引起孩子报复心理的行为&#xff0c;更重要的是&#xff0c;我们一定要对孩子表现出来爱与尊重 限制批评的次数限制每次批评的范围限制每次批评的强度 当彼此的信任和…