Hadoop搭建集群

Hadoop搭建集群Hadoop 集群部署是为了实现分布式存储和计算 提高大数据处理的效率和性能

大家好,欢迎来到IT知识分享网。

前言

Hadoop集群部署是为了实现分布式存储和计算,提高大数据处理的效率和性能。1.确定集群规模和硬件资源,选择合适的操作系统和Hadoop版本,进行网络配置,确保集群内各节点之间可以互相通信。2.设置各节点的环境变量,安装和配置Java环境以及其他必要的软件和工具。3.配置Hadoop的核心组件(如HDFS和YARN)和各节点角色(如NameNode、DataNode、ResourceManager、NodeManager等),完成集群的部署。

本篇博客基本完全按照尚硅谷的b站课程搭建的hadoop集群,中间出现的部分问题也都解决,如果觉得观看视频太慢可以看看如下内容,先熟悉搭建流程对后续学习也会更有帮助,若遇到其他问题欢迎留言讨论。

一、环境配置

tar -zxvf jdk-8u333-linux-x64.tar.gz -C /opt/module/ tar -zxvf hadoop-3.1.3.tar.gz -C /opt/module/ 

在这里插入图片描述

1.配置JDK

在/etc/profile.d下新建my_env.sh文件,用来配置环境

vim /etc/profile.d/my_env.sh 

在里面配置JAVA_HOME

#JAVA_HOME export JAVA_HOME=/opt/module/jdk1.8.0_333 export PATH=$PATH:$JAVA_HOME/bin 

在这里插入图片描述

保存好后刷新一下环境的修改,便可以查看到JDK环境已经配置好了

source /etc/profile java -version 

在这里插入图片描述

2.配置Hadoop环境

vim /etc/profile.d/my_env.sh 

在里面加入hadoop环境,如下

#HADOOP_HOME export HADOOP_HOME=/opt/module/hadoop-3.1.3 export PATH=$PATH:$HADOOP_HOME/bin export PATH=$PATH:$HADOOP_HOME/sbin 

在这里插入图片描述
保存好后source一下

source /etc/profile 

二、Hadoop本地运行

进入到hadoop-3.1.3目录下

cd /opt/module/hadoop-3.1.3/ 

创建一个文件夹wcinput,并进入

mkdir wcinput 

在wcinput下新建word.txt文件

vim wcinput/word.txt 

在里面随便写几个单词,后面用hadoop可以统计各单词数

hello world hello world hello hi hi world hi world 

保存好后就可以开始执行hadoop程序了

# 启动指令 启动java的jar包程序 分词统计 输入文件夹 输出文件夹 bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount wcinput/ ./wcoutput 

解释:运行Hadoop中的WordCount示例程序的命令。它使用hadoop-mapreduce-examples-3.1.3.jar作为程序的jar包,并且指定输入文件夹为wcinput/,输出文件夹为wcoutput。WordCount是一个常用的示例程序,它统计输入文件中每个单词出现的次数,并将结果输出到指定的输出文件夹中

在这里插入图片描述
运行结束后会发现目录下多出一个文件
在这里插入图片描述
wcoutput中有两个文件,其中part-r-00000中便是统计次数结果


ll wcoutput/ cat wcoutput/part-r-00000 

在这里插入图片描述

三、Hadoop集群部署

1.准备三台服务器

主机名 IP地址 节点类型
hadoop101 192.168.10.101 master
hadoop102 192.168.10.102 master
hadoop103 192.168.10.103 master

2.节点规划

hadoop101 hadoop102 hadoop103
HDFS NameNode
DataNode
DataNode SecondaryNameNode
DataNode
YARN NodeManager ResourceManager
NodeManager
NodeManager

3.环境配置

cd /opt/module/ 

再用scp将hadoop101中的jdk、hadoop拷贝到hadoop102、hadoop103

scp -r jdk1.8.0_333/ root@hadoop102:/opt/module/jdk1.8.0_333 scp -r jdk1.8.0_333/ root@hadoop103:/opt/module/jdk1.8.0_333 scp -r hadoop-3.1.3/ root@hadoop102:/opt/module/hadoop-3.1.3 scp -r hadoop-3.1.3/ root@hadoop103:/opt/module/hadoop-3.1.3 

rsync拷贝方式

rsync -av hadoop-3.1.3/ root@hadoop102:/opt/module/hadoop-3.1.3/ 
cd ~ mkdir bin 

再在bin下创建分发文件xsync

vim bin/xsync 

在里面写入如下内容,这里已经把我的三个集群hostname加进去了,后续就不用再指定了

#!/bin/bash # 1.判断参数个数 if [ $# -lt 1 ] then echo Not Enough Arguement! exit; fi # 2.遍历集群所有机器并 for host in hadoop101 hadoop102 hadoop103 do echo ================ $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:$pdir else echo $file does not exists! fi done done 

保持好后修改权限

chmod 777 bin/xsync 

输入xsync bin/同步bin目录和环境配置文件my

xsync bin/ 

4.无秘登录

cd ~ # 进入当前用户目录 cd .ssh # 进入.ssh目录 ssh-keygen -t rsa 
ssh-copy-id hadoop101 # 最好对自己也设置一下 ssh-copy-id hadoop102 ssh-copy-id hadoop103 

在这里插入图片描述
上面是hadoop100对hadoop101、hadoop102、hadoop103都进行了免密登录,如果需要hadoop102对其他进行免密登录,需要在hadoop102下重复上面操作即可。

进入hadoop101,查看授权免密登录账户

cd /root/.ssh ll # 查看文件 cat authorized_keys # 查看认证信息 

在这里插入图片描述
可以看到hadoop101已经对hadoop100、hadoop101、hadoop102、hadoop103都授权了免密登录。

5.配置核心文件

依照第二点节点规划对这三台服务器进行配置

hadoop101 hadoop102 hadoop103
HDFS NameNode
DataNode
DataNode SecondaryNameNode
DataNode
YARN NodeManager ResourceManager
NodeManager
NodeManager
cd /opt/module/hadoop-3.1.3/etc/hadoop/ 

在这里插入图片描述

1)修改core-site.xml

vim core-site.xml 

core-site.xml文件内容如下

<?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <!-- Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. See accompanying LICENSE file. --> <!-- Put site-specific property overrides in this file. --> <configuration> <!--指定namenode的地址--> <property> <name>fs.defaultFS</name> <value>hdfs://hadoop101:8020</value> </property> <!--用来指定使用hadoop时产生文件的存放目录--> <property> <name>hadoop.tmp.dir</name> <value>/opt/module/hadoop-3.1.3/data</value> </property> <!--配置HDFS网页登录使用的静态用户为atguigu--> <property> <name>hadoop.http.staticuser.user</name> <value>atguigu</value> </property> </configuration> 

2)修改hdfs-site.xml

vim hdfs-site.xml 

hdfs-site.xml内容如下

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

3)修改yarn-site.xml

vim yarn-site.xml 

yarn-site.xml内容如下

<configuration> <!--nomenodeManager获取数据的方式是shuffle--> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <!--指定Yarn的老大(ResourceManager)的地址--> <property> <name>yarn.resourcemanager.hostname</name> <value>hadoop102</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> 

4)修改mapred-site.xml文件

vim mapred-site.xml 

mapred-site.xml文件内容如下

<configuration> <!--告诉hadoop以后MR(Map/Reduce)运行在YARN上--> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> </configuration> 

配置worker

vim workers 

将里面的内容修改如下

hadoop101 hadoop102 hadoop103 

接下来运行xsync命令将/opt/module/hadoop-3.1.3/etc/hadoop下修改过的文件复制到其他服务器

xsync ../hadoop/ 

在这里插入图片描述
到这集群的配置就结束了

6.集群启动

查看hadoop的相关启动命令

ll /opt/module/hadoop-3.1.3/sbin/ 

在这里插入图片描述

1)初始化

如果集群是第一次启动,需要先初始化

cd /opt/module/hadoop-3.1.3/ hdfs namenode -format 

在这里插入图片描述
初始化完成后会出现data文件夹,可以用tree查看一下文件夹结构

tree data/ 

在这里插入图片描述

2)启动集群(HDFS)

虽然说我也是跟着教程一步一步做的,但是这里还是有点问题

sbin/start-dfs.sh # 启动hdfs 

在这里插入图片描述
可以看到,我输入启动命令后会出现如上报错,应该是配置环境的原因

再次启动便可以成功了

sbin/start-dfs.sh 

在这里插入图片描述
输入jps回车可以看到启动的节点(和前面的节点规划一样)

jps 

在这里插入图片描述

3)访问hdfs的web页面

4)启动ResourceManager(yarn)

这里还是报环境变量错误,所以需要应该把hadoop101上修改的my_env.sh拷贝到hadoop102和hadoop103上,最后记得在hadoop102和hadoop103上source一下

xsync /etc/profile.d/my_env.sh 

在这里插入图片描述

source /etc/profile.d/my_env.sh # 在hadoop102、hadoop103上执行 
cd ~/.ssh ssh-copy-id hadoop102 

关闭yarn重新启动

/opt/module/hadoop-3.1.3/sbin/stop-yarn.sh /opt/module/hadoop-3.1.3/sbin/start-yarn.sh 

在这里插入图片描述
在这里插入图片描述
接下来可以访问yarn的web端,在浏览器中输入访问链接:http://hadoop102:8088/
在这里插入图片描述


7.集群基本测试

回到hadoop101主机,cd到hadoop-3.1.3下

cd /opt/module/hadoop-3.1.3 

1)上传文件到集群

创建input目录

hadoop fs -mkdir /input 

在这里插入图片描述

上传文件到input目录下

hadoop fs -put wcinput/word.txt /input 

在这里插入图片描述
在这里插入图片描述

2)查看文件存放位置

tree data/ 

在这里插入图片描述
查看这个文件中的内容,会发现和word.txt中内容一样

cat data/dfs/data/current/BP--192.168.10.101-71/current/finalized/subdir0/subdir0/blk_ 

在这里插入图片描述

3)下载hdfs中存储的文件

cd .. hadoop fs -get /input/word.txt cat word.txt 

在这里插入图片描述

4)执行wordcount程序

cd hadoop-3.1.3/ hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount /input /output 

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在hdfs中保存有执行结果
在这里插入图片描述
mapreduce下还有其他jar包程序



ll share/hadoop/mapreduce/ 

在这里插入图片描述
到这里就差不多结束了,如果想要学习更过内容,可以查看hadoop官方文档

Hadoop集群部署总结

Hadoop集群部署需要准备一台主节点和多台从节点,首先安装hadoop软件包并进行配置,主节点上配置hdfs文件系统和yarn资源管理器,从节点上配置yarn节点管理器和hdfs数据节点。配置完成后,启动hadoop集群,可以通过web界面查看集群状态。部署过程中需要注意各个节点间的通信和权限设置,确保集群能够正常工作。最后,可以测试集群的功能,例如通过hadoop命令行工具执行任务,验证集群的性能和稳定性。完成部署后,可以根据需要进一步调优和扩展集群。

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/128829.html

(0)
上一篇 2025-08-28 19:45
下一篇 2025-08-28 20:00

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信