超详细Linux搭建Hadoop集群

一、给计算机集群起别名——互通

总纲:
1、准备3台客户机(关闭防火墙、静态IP、主机名称都设置好)
2、安装JDK(可点击)
3、配置环境变量
4、安装Hadoop
5、配置hadoop的环境变量
6、配置集群
7、群起测试

1.1、环境准备

下载安装虚拟机以及安装centOS系统,一文搞定
先配置好一台机器,其他机器直接从这一台克隆过去,注意一定要改IP地址不能两两之间发生冲突
修改Linux系统IP地址:vim /etc/sysconfig/network-scripts/ifcfg-enp0s3 #如果是VMware后缀应该是/ifcfg-ens33
修改主机名称:vim /etc/hostname #直接键入命令hostname就可以查看当前主机的名称
修改主机映射(实现主机与主机之间用别名互联互通):vim /etc/hosts
针对上面三个命令,如下三个参考文本

TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=enp0s3
UUID=8b0a9ecf-ce7c-4568-ab9b-e8f7fbc75c0a
DEVICE=enp0s3
ONBOOT=yes
# 重点
IPADDR=192.168.2.113
NETMASK=225.225.225.0
GATEWAY=192.168.2.2
DNS1=192.168.2.2
DNS2=223.5.5.5
# 直接将内容localhost.localdomain改为本台机器取的别名,如hadoop113
hadoop113
#修改之后键入hostname查看当前主机的名称,如果没有生效就重启一下虚拟机,命令reboot或者(shutdown -r now)
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
# 上面那2行不动它的,下面注重IP与别名的映射
192.168.2.113 hadoop113
192.168.2.114 hadoop114
192.168.2.115 hadoop115
192.168.2.123 hadoop123
192.168.2.124 hadoop124
192.168.2.125 hadoop125

1.2、环境变量配置

以前我们把环境变量都配置在vim /etc/profile里面,现在都配置在vim /etc/profile.d目录下面,文件的名字见名知意
在这里插入图片描述
如下图,我将我的环境变量全都配置在my_env.sh里面
在这里插入图片描述

二、集群分发脚本xsync——互联

2.1、SCP (secure copy) 安全拷贝

(1)scp定义
scp可以实现服务器与服务器之间的数据拷贝。(from serverl to server2)
(2)基本语法
SCP -r $pdir/$fname $user@host:$pdir/$fname
命令 递归 要拷贝的文件路径/名称 目的地用户@主机:目的地路径/名称
重点说明Linux对权限管控很严,一定要看被接收的用户是否具备相应权限,如:创建文件夹的权限等等
(3)案例说明
将hadoop-3.1.3分发到hadoop114服务器 scp -r hadoop-3.1.3/ root@hadoop114:/usr/local/
这里又有一个大坑,因为hadoop不能用root用户启动集群,而我又喜欢把软件安装在/usr/local目录下面,直接执行命令【scp -r hadoop-3.1.3/ zhu@hadoop114:/usr/local/】是复制不过去的,会报这个错误【scp: /usr/local//hadoop-3.1.3: Permission denied】所以我在根目录下面创建了一个中转文件夹transfer,修改其权限为【sudo chown zhu:zhu transfer】zhu用户,然后再使用scp复制到hadoop114和hadoop115上面,再用mv命令移动【mv hadoop-3.1.3/ /usr/local/】
将hadoop113服务器的hadoop-3.1.3文件拉到当前目录下 scp -r root@hadoop113:/usr/local/hadoop-3.1.3 ./
在一个中间机器执行 scp -r root@hadoop102:/opt/module/* root@hadoop104:/opt/module/

2.2、rsync远程同步工具

rsync主要用于备份和镜像。具有速度快、避免复制相同内容和支持符号链接的优点。
rsync和scp区别:用rsync做文件的复制要比scp的速度快,rsync只对差异文件做变更。scp是把所有文件都复制过去。
(1)基本语法
rsync -av $pdir/$fname $user@$host:$pdir/$fname
命令 选项参数 要拷贝的文件路径/名称 目的地用户@主机:目的地的路径/名称
选项参数说明

选项功能
-a归档拷贝
-v显示复制过程

2.3、xsync集群分发脚本

集群分发文件和脚本

#!/bin/bash#1.判断参数个数
if [ $# -lt 1 ]
thenecho Not Enough Arguement!exit;
fi
#2.遍历集群所有机器
for host in hadoop113 hadoop114 hadoop115
doecho ======================= $host =======================#3.遍历所有目录,挨个发送for file in $@do#4.判断文件是否存在if [ -e $file ]then#5.获取父目录pdir=$(cd -P $(dirname $file); pwd)#6.获取当前文件的名称fname=$(basename $file)ssh $host "mkdir -p $pdir"rsync -av $pdir/$fname $host:$pdirelseecho $file does not exists!fi    done
done

真心搞醉,#!bin/bash这个看上去人畜无害的实际上报这个错,-bash: /usr/local/bin/xsync: bin/bash: 坏的解释器: 没有那个文件或目录,最后在chatGPT的帮助下找到了错误。
echo $PATH查看Linux系统变量

2.4、ssh免密登录

在这里插入图片描述
Linux的根目录是 /,下面有个root文件夹也就是~路径
命令:查看隐藏文件,ls -al
Linux服务器生成公私钥,命令:ssh-keygen -t rsa 连续三次回车即可生成

使用命令将生成的公钥发给各个服务器——免密登录
ssh-copy-id hadoop114  #将公钥发给hadoop114
ssh-copy-id hadoop115 #将公钥发给hadoop115
ssh-copy-id hadoop113 #将公钥发给自己所在的服务器

#执行完成之后,在~/.ssh/目录下面也可以看到这个authorized_keys文件里面的公钥配置,如下图就有本机和hadoop114可以免密登录本机
在这里插入图片描述
至此,免密登录+xsync集群分发脚本全套已完成,直接使你效率起飞。

三、Hadoop集群搭建

本集群搭建目标

hadoop113hadoop114hadoop115
HDFSNameNode DataNodeDataNodeSecondaryNameNode DataNode
YARNNodeManagerResourceManager NodeManagerNodeManager

4.1、修改hadoop配置文件

声明:本人hadoop安装在/usr/local文件夹下面,你可以安装在自己熟悉的目录
路径/usr/local/hadoop-3.1.3/etc/hadoop
在这里插入图片描述
core-site.xml配置:

<configuration><!-- 指定NameNode的地址 --><property><name>fs.defaultFS</name><value>hdfs://hadoop113:8020</value></property><!-- 指定hadoop数据的存储目录 --><property><name>hadoop.tmp.dir</name><value>/usr/local/hadoop-3.1.3/data</value></property>
</configuration>

hdfs-site.xml配置:

<configuration><!-- nn web端访问地址--><property><name>dfs.namenode.http-address</name><value>hadoop113:9870</value></property><!-- 2nn web端访问地址--><property><name>dfs.namenode.secondary.http-address</name><value>hadoop115:9868</value></property>
</configuration>

yarn-site.xml配置:

<configuration><!-- 指定MR走shuffle --><property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value></property><!-- 指定ResourceManager的地址--><property><name>yarn.resourcemanager.hostname</name><value>hadoop114</value></property><!-- 环境变量的继承 --><property><name>yarn.nodemanager.env-whitelist</name><value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value></property>
</configuration>

mapred-site.xml配置:

<configuration><!-- 指定MapReduce程序运行在Yarn上 --><property><name>mapreduce.framework.name</name><value>yarn</value></property>
</configuration>

4.2、启动集群

4.2.1、启动hdfs

注意所有的这些命令都是在zhu(非root用户)用户下,hadoop的根目录执行的,即在笔者的linux上是/usr/local/hadoop3.1.3路径
第一步:注意第一次启动集群一定要初始化,命令:hdfs namenode -format,后续启动就不需要执行了
第二步:直接在hadoop根目录下键入命令 sbin/start-dfs.sh
如果看到一下信息就说明启动成功了,也可以输入hadoop113:9870可以看到web页面也表示成功了

[zhu@hadoop113 hadoop-3.1.3]$ sbin/start-dfs.sh 
Starting namenodes on [hadoop113]
Starting datanodes
Starting secondary namenodes [hadoop115]
[zhu@hadoop113 hadoop-3.1.3]$ jps
12386 DataNode
12850 Jps
12223 NameNode

如果报以下错误,就是不能用root启动,权限太大了

Starting namenodes on [hadoop113]
ERROR: Attempting to operate on hdfs namenode as root
ERROR: but there is no HDFS_NAMENODE_USER defined. Aborting operation.
Starting datanodes
ERROR: Attempting to operate on hdfs datanode as root
ERROR: but there is no HDFS_DATANODE_USER defined. Aborting operation.
Starting secondary namenodes [hadoop115]
ERROR: Attempting to operate on hdfs secondarynamenode as root
ERROR: but there is no HDFS_SECONDARYNAMENODE_USER defined. Aborting operation.

①没有用户就新增用户:

[root@hadoop114 local] # useradd zhu
[root@hadoop114 local]# passwd zhu
更改用户 zhu 的密码 。
新的 密码:
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。

修改hadoop3.1.3文件夹权限:要保证整个目录下的所有文件及文件夹都是zhu用户的权限才行

# 如果权限不够记得加上sudo
chown zhu:zhu hadoop3.1.3/

②有用户就切换用户 su zhu,然后再次启动
解决之后又报这个错误,我只配了root用户得免密登录,没有配置zhu用户的免密登录,于是乎我去~/.ssh/authorized_keys文件一看,果然只有root的免密登录,最后我把zhu用户的免密登录也加上了

Starting namenodes on [hadoop113]
hadoop113: Warning: Permanently added ‘hadoop113,192.168.2.113’ (ECDSA) to the list of known hosts.
hadoop113: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).
Starting datanodes
hadoop115: Warning: Permanently added ‘hadoop115,192.168.2.115’ (ECDSA) to the list of known hosts.
hadoop114: Warning: Permanently added ‘hadoop114,192.168.2.114’ (ECDSA) to the list of known hosts.
hadoop115: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).
hadoop113: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).
hadoop114: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).
Starting secondary namenodes [hadoop115]
hadoop115: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).
在这里插入图片描述

zhu用户也要拥有root权限 vim /etc/sudoers
在这里插入图片描述

注意: zhu这一行不要直接放到 root 行下面,因为所有用户都属于 wheel 组,你先配置了 zhu 具有免密功能,但是程序执行到%wheel 行时,该功能又被覆盖回需要密码。所以 zhu 要放到%wheel 这行下面。

4.2.2、启动yarn

第一步:直接在hadoop114机器上hadoop根目录下键入命令 sbin/start-yarn.sh启动yarn,输入hadoop114:8088出现web页面也表示成功
如果执行上述命令,jps查看进程如下,说明yarn没有启动成功🙃

[zhu@hadoop114 hadoop-3.1.3]$ sbin/start-yarn.sh
Starting resourcemanager
Starting nodemanagers
[zhu@hadoop114 hadoop-3.1.3]$ jps
24692 Jps
12158 DataNode

问题排查如下,核对这4个core-site.xml、hdfs-site.xml、yarn-site.xml、mapred-site.xml文件的配置;再就是检查jdk版本与hadoop版本是否兼容,我就是jdk11和hadoop3.1.3不兼容,哭死。
风卷江湖雨暗村,四山声作海涛翻。溪柴火软蛮毡,我与狸奴不出门。——《十一月四日风雨大作》陆游
君不见,青海头,古来白骨无人收。——《兵车行》杜甫

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

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

相关文章

蓝鹏测控平台软件 智能制造生产线的大脑

测控软件平台&#xff0c;是由包括底层驱动程序、通讯协议等&#xff0c;集数据采集、自动反馈控制、信息分析以及多种工程应用于一体的一种电子信息处理平台。 蓝鹏测控软件平台目前支持各种文本标签 、数字标签&#xff1b;支持趋势图、波动图、缺陷图及统计图表。多端口实现…

MCU常见通信总线串讲(一)—— UART和USART

&#x1f64c;秋名山码民的主页 &#x1f602;oi退役选手&#xff0c;Java、大数据、单片机、IoT均有所涉猎&#xff0c;热爱技术&#xff0c;技术无罪 &#x1f389;欢迎关注&#x1f50e;点赞&#x1f44d;收藏⭐️留言&#x1f4dd; 获取源码&#xff0c;添加WX 目录 前言一…

使用 curator 连接 zookeeper 集群 Invalid config event received

dubbo整合zookeeper 如图&#xff0c;错误日志 2023-11-04 21:16:18.699 ERROR 7459 [main-EventThread] org.apache.curator.framework.imps.EnsembleTracker Caller0 at org.apache.curator.framework.imps.EnsembleTracker.processConfigData(EnsembleTracker.java…

Lyapunov function 李雅普诺夫函数

文章目录 正文定义对定义中出现的术语的进一步讨论 Basic Lyapunov theorems for autonomous systems 自治系统的基本李雅普诺夫定理Locally asymptotically stable equilibrium 局部渐近稳定平衡Stable equilibrium 稳定平衡Globally asymptotically stable equilibrium 全局渐…

计算机毕业设计java+vue+springboot的论坛信息网站

项目介绍 本论文系统地描绘了整个网上论坛管理系统的设计与实现&#xff0c;主要实现的功能有以下几点&#xff1a;管理员&#xff1b;首页、个人中心、用户管理、公告管理、公告类型管理、热门帖子管理、帖子分类管理、留言板管理、论坛新天地、我的收藏管理、系统管理&#…

用Java(C语言也可以看)实现冒泡排序和折半查找(详细过程图)+逆序数组

目录 一、冒泡排序 1.冒泡排序介绍 2.排序的思路 3.完整代码 二、折半查找 1.折半查找介绍 2.查找的思路 3.完整代码 三、逆序数组 1.逆序思路 2..完整代码 一、冒泡排序 冒泡排序是众多排序的一种&#xff0c;无论在C语言或者Java中都很常见&#xff0c;后续在数据…

JAVA前端开发介绍

以一个网站为例包括网站设计、前端开发、程序开发等。网站设计就是网站的外观&#xff0c;平面的东西。程序开发也好理解就是功能实现。而前端开发&#xff0c;简单来说&#xff0c;就是把平面效果图转换成网页&#xff0c;把静态转换成动态。它的工作包括了:切图、写样式、做鼠…

IDEA取消git对项目的版本控制

前言 前几天新建项目的时候不小心选了个git仓库&#xff0c;导致这个测试项目一直被git管理着。 解决办法 1 右键项目 选择打开资源目录 2 删除.git文件 把目录下的.git文件删掉 3 删除idea中的git管理 删除完.git文件后&#xff0c;进入idea&#xff0c;右下角会有这样的提…

广域网加速的作用:企业为什么需要广域网加速?

由于局域网与广域网之间巨大的带宽鸿沟&#xff0c;通过增加带宽来满足膨胀的流量需求是不切实际的。 并且广域网带宽成本较高&#xff0c;增加广域网带宽对任何企业都意味着巨大的成本负担。这些使得控制 管理广域网带宽使用成为必需。 企业为什么要加速广域网? 对重要的企…

轻量封装WebGPU渲染系统示例<12>- 基础3D对象实体(源码)

当前示例源码github地址: https://github.com/vilyLei/voxwebgpu/blob/main/src/voxgpu/sample/PrimitiveEntityTest.ts 此示例渲染系统实现的特性: 1. 用户态与系统态隔离。 细节请见&#xff1a;引擎系统设计思路 - 用户态与系统态隔离-CSDN博客 2. 高频调用与低频调用隔…

2023年05月 Python(三级)真题解析#中国电子学会#全国青少年软件编程等级考试

Python等级考试&#xff08;1~6级&#xff09;全部真题・点这里 一、单选题&#xff08;共25题&#xff0c;每题2分&#xff0c;共50分&#xff09; 第1题 请选择&#xff0c;下面代码运行之后的结果是&#xff1f;&#xff08; &#xff09; a 2 b 4 try:c a * bprint(c…

数据结构:AVL树的实现和全部图解

文章目录 为什么要有AVL树什么是AVL树AVL树的实现元素的插入平衡因子的更新AVL树的旋转 AVL树的检查完整实现 本篇总结的是AVL树中的全部内容&#xff0c;配有详细的图解过程 为什么要有AVL树 前面对map/multimap/set/multiset进行了简单的介绍&#xff0c;在其文档介绍中发现…

白盒测试用例的设计(图文讲解,超详细)

正文 语句覆盖&#xff1a;每条语句至少执行一次。判定覆盖&#xff1a;每个判定的所有可能结果至少出现一次。&#xff08;又称“分支覆盖”&#xff09;条件覆盖&#xff1a;每个条件的所有可能结果至少执行一次。判定/条件覆盖&#xff1a;一个判定中的每个条件的所有可能结…

开源七轴myArm协作机械臂正逆运动学技术讲解

引言&#xff1a; 在本文中&#xff0c;我们将深入探讨机器人学的两个核心概念&#xff1a;正运动学和逆运动学。这两个概念是理解和控制机械臂运动的基础。通过一个具体的7轴机械臂实例&#xff0c;我们将详细介绍如何计算机械臂的正运动学和逆运动学。我们首先会解释正运动学…

uniapp 微信小程序 uni-file-picker上传图片报错 chooseAndUploadFile

这个问题真的很搞&#xff0c; 原因是微信开发者工具更新了&#xff0c;导致图片上传问题。 解决方法&#xff1a; 将微信开发者工具的基础库改为2.33.0一下即可。 在微信开发者工具详情 - 本地设置中&#xff08;记得点击‘推送’按钮&#xff09;&#xff1a;

【内功修炼】详解函数栈帧的创建和销毁

文章目录 1. 什么是函数栈帧2. 理解函数栈帧能解决什么问题呢&#xff1f;3. 函数栈帧的创建和销毁解析3.1 什么是栈&#xff1f;3.2 认识相关寄存器和汇编指令常见寄存器常用汇编指令 3.3 详解函数栈帧的创建和销毁3.3.1 函数的调用堆栈&#xff08;main函数也是被其它函数调用…

python用cv2画图(line, rectangle, text等)

Python做图像图形研究的时候&#xff0c;通常需要画很多辅助几何形状&#xff08;比如bounding box等&#xff09;。基于opencv的几何图形绘制具有易用性&#xff0c;而且天然能和numpy数组交互。 本文总结了几种常用的cv2画几何图形的方法&#xff0c;当一个简易的手册使用&a…

Go 定时任务实现

定时任务简介 定时任务是指按照预定的时间间隔或特定时间点自动执行的计划任务或操作。这些任务通常用于自动化重复性的工作&#xff0c;以减轻人工操作的负担&#xff0c;提高效率。在计算机编程和应用程序开发中&#xff0c;定时任务是一种常见的编程模式&#xff0c;用于周…

大数据疫情分析及可视化系统 计算机竞赛

文章目录 0 前言2 开发简介3 数据集4 实现技术4.1 系统架构4.2 开发环境4.3 疫情地图4.3.1 填充图(Choropleth maps)4.3.2 气泡图 4.4 全国疫情实时追踪4.6 其他页面 5 关键代码最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 大数据疫…

智慧社区大屏:连接社区生活的数字桥梁

随着科技的不断发展&#xff0c;智慧社区已经不再只是未来的概念&#xff0c;它已经在我们的眼前悄然崭露头角。智慧社区是一种基于数字技术的社区管理和生活方式&#xff0c;旨在提高社区的安全性、便利性和生活质量。而在这个数字化的社区中&#xff0c;智慧社区大屏起到了连…