超详细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.rhkb.cn/news/179801.html

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

相关文章

VPN网络环境下 本地客户端能连上mysql 本地启服务连不上mysql的原因

背景 公司mysql使用的是华为云RDS&#xff0c;由于要做一些测试验证&#xff0c;需要本地通过VPN直连华为RDS节点&#xff1b;找运维配置好网络后&#xff0c;本地 telnet 内网ip 3306 以及通过navicat客户端都能正常连接数据库&#xff1b;但是本地启动的服务就是连接不上。问…

佳易王定制开发流水线商品标签自动打印软件,打印格式可定制

佳易王定制开发流水线商品标签自动打印软件&#xff0c;打印格式可以定制 软件特色&#xff1a; 定制试用商品标签打印管理V16.0&#xff0c;打印标签可以自动计算到期日期和品控日期&#xff0c;并打印品名、包装规格、生产日期、到期日期、储存条件、生产包装、品控日期等信…

ChinaSoft 论坛巡礼|开源软件供应链论坛

2023年CCF中国软件大会&#xff08;CCF ChinaSoft 2023&#xff09;由CCF主办&#xff0c;CCF系统软件专委会、形式化方法专委会、软件工程专委会以及复旦大学联合承办&#xff0c;将于2023年12月1-3日在上海国际会议中心举行。 本次大会主题是“智能化软件创新推动数字经济与社…

【Redis】Java连接Redis及Java操作Redis常用数据类型

一&#xff0c;Java连接Redis 1.1 连接前端服务器 打开RedisDesktopManager并连接Redis 不知道可看我上一篇文章&#xff1a; 【Redis】安装(Linux&window)及Redis的常用命令-CSDN博客 1.2 后端依赖 导入相关的jedis依赖 注意&#xff1a;要在dependencies标签中导入…

A股风格因子看板 (2023.11第01期)

该因子看板跟踪A股风格因子&#xff0c;该因子主要解释沪深两市的市场收益、刻画市场风格趋势的系列风格因子&#xff0c;用以分析市场风格切换、组合风格暴露等。 今日为该因子跟踪第01期&#xff0c;指数组合数据截止日2023-10-31&#xff0c;要点如下 近1年A股风格因子收益走…

Apache HttpClient库编写的Scala程序

Apache HttpClient库编写的Scala下载器程序&#xff0c;用于下载图片。代码如下&#xff1a; import org.apache.http.HttpHost import org.apache.http.client.HttpClients import org.apache.http.client.methods.HttpHead import org.apache.http.impl.client.CloseableHtt…

Python:PDF转长图像和分页图像

简介&#xff1a;随着电子化文档的普及&#xff0c;PDF文件的使用频率越来越高。有时我们需要将PDF中的内容转化为图片格式进行分享或编辑&#xff0c;那么如何才能轻松地完成此任务呢&#xff1f;本文将为你展示一个Python工具&#xff1a;如何将PDF文件转化为图片&#xff0c…

JumpServer开源堡垒机与万里安全数据库完成兼容性认证

近日&#xff0c;中国领先的开源软件提供商FIT2CLOUD飞致云宣布&#xff0c;JumpServer开源堡垒机已经与万里安全数据库软件GreatDB完成兼容性认证。针对产品的功能、性能、兼容性方面&#xff0c;经过双方共同测试&#xff0c;万里安全数据库软件&#xff08;简称&#xff1a;…

纷享销客荣获最佳制造业数字营销服务商奖

2023年10月26日&#xff0c;第二届中国制造业数智化发展大会在上海盛大召开。本次大会汇聚了制造行业的顶尖企业和专家&#xff0c;共同探讨如何通过数字化转型赋能企业自身成长&#xff0c;实现信息化向数字化的升级转型。 在本次盛会上&#xff0c;纷享销客以其卓越的基本面、…

SNAP打开影像失败No appropriate reader found

SNAP打开影像失败No appropriate reader found 问题描述 原因 这是我前几周用的&#xff0c;还有这些模块&#xff0c;但不知道何时&#xff0c;这些模块就少了 重装一下吧&#xff0c;可能是误删东西了 解决方案 重装了一下&#xff0c;就能够打开了 装完之后又有这些模…

【3D图像分割】基于 Pytorch 的 VNet 3D 图像分割3(3D UNet 模型篇)

在本文中&#xff0c;主要是对3D UNet 进行一个学习和梳理。对于3D UNet 网上的资料和GitHub直接获取的代码很多&#xff0c;不需要自己从0开始。那么本文的目的是啥呢&#xff1f; 本文就是想拆解下其中的结构&#xff0c;看看对于一个3D的UNet&#xff0c;和2D的UNet&#x…

项目实战:修改水果库存系统特定库存记录

1、在edit.html修改库存页面添加点击事件 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title><link rel"stylesheet" href"style/index.css"><script s…

AI:51-基于深度学习的电影评价

🚀 本文选自专栏:AI领域专栏 从基础到实践,深入了解算法、案例和最新趋势。无论你是初学者还是经验丰富的数据科学家,通过案例和项目实践,掌握核心概念和实用技能。每篇案例都包含代码实例,详细讲解供大家学习。 📌📌📌本专栏包含以下学习方向: 机器学习、深度学…

【计算机网络】网络层:数据平面

一.网络层概述 每台路由器的数据平面的主要功能时从其输入链路向其输出链路转发数据报&#xff0c;控制平面的主要功能是协调这些本地的每路由转发动作&#xff0c;使得数据报沿着源和目的地主机之间的路由器路径最终进行端到端传送。 网络层不运行运输层和应用层协议。 转发是…

性能优于BERT的FLAIR:一篇文章入门Flair模型

文章目录 What is FLAIR&#xff1f;FLAIR ModelContextual String Embedding for Sequence Labelingexample FLAIR Application AreaSentiment AnalysisNamed Entity RecognitionText Classification FLAIR一、什么是FLAIR&#xff1f;二、FLAIR Library的优势是什么&#xff…

基于51单片机电子秤-proteus仿真-源程序

一、系统方案 本设计采用52单片机作为主控器&#xff0c;液晶1602显示&#xff0c;HX711模块&#xff0c;按键设置单价&#xff0c;计算总价&#xff0c;超量程报警&#xff0c;蜂鸣器报警。 二、硬件设计 原理图如下&#xff1a; 三、单片机软件设计 1、首先是系统初始化 I…

界面控件DevExpress WinForms Gauge组件 - 实现更高级别数据可视化

DevExpress WinForms控件包含了超过150个随时可用的仪表盘预设&#xff0c;包括圆形&#xff0c;数字&#xff0c;线性和状态指示器等&#xff0c;来帮助用户实现更高级的数据可视化。 DevExpress WinForms有180组件和UI库&#xff0c;能为Windows Forms平台创建具有影响力的业…

H5ke9

上次fetvh就一个参数url,,就是get请求 fetch还可以第二个参数对象,可以指定method:改为POST 请求头header :发送txt,servlet,json给客户端,,异步请求图片 1 这节客户端传到服务器端 2异步文件上传,两三行代码把文件传输 mouseover事件 .then()的使用 是Promise对象的一个方法…

HT6818 低 EMI 音频功率放大器

HT6818是一款具有低EMI、防削顶失真功能的立体声免输出滤波器D类音频功率放大器。AROC辐射和传导干扰抑Z电路使HT6818具有全带宽低辐射性能&#xff0c;在不加辅助滤波设计、输出喇叭线长20cm时的辐射水平远在FCC Part15Class B 标准之下。 HT6818的防削顶失真功能可检测并抑Z由…

C/C++网络编程基础知识超详细讲解第二部分(系统性学习day12)

懒大王感谢大家的关注和三连支持~ 目录 前言 一、UDP编程 UDP特点&#xff1a; UDP框架: UDP函数学习 发送端代码案例如下&#xff1a; 二、多路复用 前提讲述 select poll 三、图解如下 总结 前言 作者简介&#xff1a; 懒大王敲代码&#xff0c;…