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=$1
  local installDir=$2
  local node1=$3
  local node2=$4
  local node3=$5

  # 下载地址
  local downloadUrl="https://archive.apache.org/dist/hadoop/common/hadoop-$version/hadoop-$version.tar.gz"
  if [ -z "$(command -v wget)" ]; then
    sudo yum install -y wget
    echo "wget安装完成"
  fi
  if [ -z "$JAVA_HOME" ]; then
    echo "JAVA_HOME未设置,请安装jdk1.8,设置Java环境变量再来执行此脚本"
    exit 1
  fi
  if [ ! -d "${installDir}" ]; then
    sudo mkdir -p "${installDir}"
    if [ $? -eq 0 ]; then
      echo "安装目录${installDir}已创建"
    else
      echo "请确保您有足够的权限来创建目录,请增加权限后再次执行"
      exit 1
    fi
  fi
  if [ ! -f /tmp/hadoop-"$version".tar.gz ] ; then
    wget "$downloadUrl" -P /tmp
    if [ $? -eq 0 ]; then
      echo "hadoop-$version.tar.gz下载成功"
    else
      echo "hadoop-$version.tar.gz下载失败,请重试或手动下载到/tmp目录下再次执行"
      echo "下载地址:$downloadUrl"
      exit 1
    fi
  else
    echo "/tmp/hadoop-$version.tar.gz文件已存在"
  fi

  if [ -d "${installDir}"/hadoop-"$version" ]; then
    echo "${installDir}/hadoop-$version 已存在,正在删除..."
    sudo rm -rf "${installDir}"/hadoop-"$version"
  fi
  tar -zxvf /tmp/hadoop-"$version".tar.gz -C "${installDir}"
  if [ $? -eq 0 ]; then
    echo "/tmp/hadoop-$version.tar.gz解压成功"
  else
    echo "/tmp/hadoop-$version.tar.gz解压失败,请查看异常信息后重试"
    exit 1
  fi

  if [ -z "$HADOOP_HOME" ]; then
    # 设置hadoop用户环境变量
    echo >> ~/.bashrc
    echo '#HADOOP_HOME' >> ~/.bashrc
    echo "export HADOOP_HOME=${installDir}/hadoop-${version}" >> ~/.bashrc
    echo 'export PATH=$PATH:$HADOOP_HOME/bin' >> ~/.bashrc
    echo 'export PATH=$PATH:$AHDOOP_HOME/sbin' >> ~/.bashrc
  else
    echo "HADOOP_HOME已有设置:$HADOOP_HOME"
  fi

  # 配置hadoop
  echo "配置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.xml
  sed -i '/<configuration>/,/<\/configuration>/c '"$hdfssite"'' "$installDir"/hadoop-"$version"/etc/hadoop/hdfs-site.xml
  sed -i '/<configuration>/,/<\/configuration>/c '"$mapredsite"'' "$installDir"/hadoop-"$version"/etc/hadoop/mapred-site.xml
  sed -i '/<configuration>/,/<\/configuration>/c '"$yarnsite"'' "$installDir"/hadoop-"$version"/etc/hadoop/yarn-site.xml
  echo "$node1" > "$installDir"/hadoop-"$version"/etc/hadoop/workers
  echo "$node2" >> "$installDir"/hadoop-"$version"/etc/hadoop/workers
  echo "$node3" >> "$installDir"/hadoop-"$version"/etc/hadoop/workers
  echo "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 -format
    if [ $? -eq 0 ]; then
      echo "格式化namenode成功"
    else
      echo "格式化namenode失败"
      exit 1
    fi
  fi
#  rm -rf /tmp/hadoop-"$version".tar.gz
  echo "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 3
  ssh $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
  ;;
esac

exit 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.mfbz.cn/a/227825.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

直播预告|StarRocks 3.2 全面解读:易用性和性能的双重提升

StarRocks 3.2 版本即将发布&#xff0c;这是 StarRocks 的又一次重大升级&#xff0c;除了进一步完善存算分离架构、数据湖分析和物化视图等重要特性&#xff0c;我们还聚焦于运维操作细节&#xff0c;大大提升了 StarRocks 的易用性&#xff0c;从建表、表变更、数据导入、查…

数据清洗、特征工程和数据可视化、数据挖掘与建模的应用场景

1.5 数据清洗、特征工程和数据可视化、挖掘建模的应用场景 视频为《Python数据科学应用从入门到精通》张甜 杨维忠 清华大学出版社一书的随书赠送视频讲解1.5节内容。本书已正式出版上市&#xff0c;当当、京东、淘宝等平台热销中&#xff0c;搜索书名即可。内容涵盖数据科学应…

给孩子选台灯需要注意什么?专业的学生台灯推荐

现在的孩子近视率非常高&#xff0c;不少还在上小学的都已经存在佩戴眼镜的现象了&#xff0c;这也让很多家长开始重视起了孩子的视力健康问题。其实孩子近视的主要原因用眼过度&#xff0c;细心的家长可能发现&#xff0c;现在的孩子作业都变多了&#xff0c;经常需要晚上挑灯…

Hive安装步骤

目录 1、安装前提&#xff1a;hadoop全分布 2、卸载MariaDB数据库 &#xff08;1&#xff09;设置防火墙服务开启不启动 &#xff08;2&#xff09;查看linux自带的MariaDB数据库 &#xff08;3&#xff09;卸载linux自带的MariaDB数据库 3、安装mysql数据库 &#xff0…

MySQL系列(十):主从架构

一&#xff1a;主从架构 常见的主从架构模式有四种&#xff1a; 一主多从架构&#xff1a;适用于读大于写的场景&#xff0c;采用多个从库来分担数据库系统的读压力。多主架构&#xff1a;适用于读写参半的场景&#xff0c;采用多个主库来承载数据库系统整体的读写压力。多主…

使用Notepad++编辑器,安装AnalysePlugin搜索插件

概述 是一款非常有特色的编辑器&#xff0c;Notepad是开源软件&#xff0c;Notepad中文版可以免费使用。 操作步骤&#xff1a; 1、在工具栏 ->“插件”选项。 2、勾选AnalysePlugin选项&#xff0c;点击右上角“安装”即可。 3、 确认安装插件 4、下载插件 5、插件已安装…

Leetcode—337.打家劫舍III【中等】

2023每日刷题&#xff08;五十二&#xff09; Leetcode—337.打家劫舍III 算法思想 实现代码 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(null…

可视化工具Datart小妙招(1)——妙用计算字段

加gzh“大数据食铁兽”&#xff0c;了解更多Datart小妙招 作为目前国内开源版本最好用的可视化工具之一&#xff0c;Datart无疑是低成本高效率可供二开的可视化神兵利器。经过一段时间的使用及磨合&#xff0c;现在总结一些使用的小妙招分享给大家。本篇我们来讲一讲可视化工具…

基于Python guI的学生信息管理系统的设计与实现

基于Python guI的学生信息管理系统的设计与实现 摘要 讲述的是一个使用Python GUI的学习资料管理工具。通过使用Python的Tkinter库和mysql数据库&#xff0c;这个工具可以方便地记录、检索、更新学习资料。本文详细描述了系统的架构设计和实现过程&#xff0c;并对系统进行了功…

语聚AI知识库支持连接数据库,无需上传知识文档,数据分析更高效

数据库系统是企业信息技术基础架构的关键部分&#xff0c;它帮助企业管理和处理其数据&#xff0c;目前已有大量企业通过数据库保存数据&#xff0c;例如员工信息、客户数据、产品销售数据等等。但企业运营变得越来越复杂&#xff0c;数据库中的数据量也在持续增长&#xff0c;…

GPTs的创建与使用,自定义GPTs中的Actions示例用法 定义和执行特定任务的功能模块 通过API与外部系统或服务的交互

Name 等 Logo:自动生成 Name 介绍 Description 介绍 Instructions 要求或命令等 比如用中文回复&#xff0c;角色。 Knowledge 上传你的知识库&#xff0c;如果你有某一垂直行业的数据&#xff0c;基于数据来回答。比如我有某个芯片的指令集。 Capabilities 都要 Actions&…

分享 | 顶刊高质量论文插图配色(含RGB值及16进制HEX码)(第一期)

我在很早之前出过一期高质量论文绘图配色&#xff0c;但当时觉得搜集太麻烦于是就没继续做&#xff0c;后来用MATLAB爬了上万张顶刊绘图&#xff0c;于是又想起来做这么一个系列&#xff0c;拿了一个多小时写了个提取论文图片颜色并得出RGB值和16进制码并标注在原图的代码&…

Django的logging-日志模板的简单使用方法(配置并使用根日志记录器-不显示实例化logging对象)

扩展阅读&#xff1a; Python-Django的“日志功能-日志模块(logging模块)-日志输出”的功能详解 现在有下面的Python代码&#xff1a; # -*- coding: utf-8 -*-content "i love you" print(content)现在要把代码中print语句中的内容以日志文件的形式输出&#xff…

静电ESD整改:如何让企业避免损失?|深圳比创达电子EMC

一、静电ESD整改的背景 静电是指物体之间因摩擦或分离而产生的电荷&#xff0c;而静电放电ESD(Electrostatic Discharge)则是指静电在物体间突然放电的现象。静电放电造成的瞬态高电流和高电压可能会损坏电子设备&#xff0c;从而给企业带来损失。因此&#xff0c;进行静电ESD…

硬件开发笔记(十五):RK3568底板电路VGA显示接口原理图分析

若该文为原创文章&#xff0c;转载请注明原文出处 本文章博客地址&#xff1a;https://hpzwl.blog.csdn.net/article/details/134849296 红胖子网络科技博文大全&#xff1a;开发技术集合&#xff08;包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬…

html中一个div中平均一行分配四个盒子,可展开与收起所有的盒子

html中一个div中平均一行分配四个盒子&#xff0c;可展开与收起所有的盒子 1.截图显示部分 2.代码展示部分 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"wid…

OpenCvSharp从入门到实践-(07)绘制图形

目录 1、线段的绘制 1.1实例1-绘制线段拼成一个"王"字 2、矩形的绘制 2.1实例2-绘制一个矩形边框 2.2实例3-绘制一个实心矩形 3、圆的绘制 3.1实例4-绘制"交通灯" 4、多边形绘制 4.1实例5-绘制等腰梯形 5、文字的绘制 5.1实例6-绘制文字OpenCvS…

邀请函 | 合作发展,赋能增效--新架构下汽车电子软件研发技术研讨会

会议介绍 随着汽车智能化、网联化快速演进&#xff0c;“软件定义汽车、架构定义软件”愈发形成行业共识。汽车上的软件应用在提升用户体验、推动行业技术创新方面发挥着至关重要的作用。 在此背景下&#xff0c;如何有效地提升软件开发效率、更好地管理软件质量、满足行业安全…

m1通过源码编译xgboost4j的jar

1、下载源码 git clone --recursive https://github.com/dmlc/xgboost cd xgboost 编译xgboost的动态链接库dylib&#xff0c;m1源码编译xgboost的动态链接库dylib文件 2、编译XGBoost的jar文件&#xff1a; A、如果没有安装maven可以通过以下命令进行安装&#xff0c;如果安…

配置禁止BT下载的示例

如图1所示,企业内用户通过交换机连接到RouterA的Eth2/0/0,并通过RouterA的GE0/0/1接口连接到WAN侧网络。 现在要求在RouterA上通过配置基于智能应用控制SAC(Smart Application Control)的流分类,禁止企业用户进行BT下载。 图1 配置禁止BT下载的组网图: 操作步骤 1.Rout…
最新文章