博客 Hadoop搭建集群(下)

Hadoop搭建集群(下)

   数栈君   发表于 2024-12-18 10:58  191  0

三、Hadoop集群部署
1.准备三台服务器

主机名IP地址节点类型
hadoop101192.168.10.101master
hadoop102192.168.10.102master
hadoop103192.168.10.103master

2.节点规划


hadoop101
hadoop102hadoop103
HDFSNameNode
DataNode
DataNodeSecondaryNameNode
DataNode
YARNNodeManagerResourceManager
NodeManager
NodeManager

3.环境配置

前面单机部署已经在hadoop101配置了Java和Hadoop环境,接下来将其对应文件拷贝到hadoop102、hadoop103即可
先进入/opt/module/

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

第一次访问会问你是否连接,输入yes回车,再输入密码即可

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/d018a5267164c067db054f9cc90ed879..png

rsync拷贝方式

rsync -av hadoop-3.1.3/ root@hadoop102:/opt/module/hadoop-3.1.3/

第一次拷贝用scp,后续用rsync好一点,为了方便拷贝,可以写一个xsync分发脚本
cd 到root目录下,创建一个bin

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/

注意:因为我这已经配置了ssh免密登录,所有不需要输入密码

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/b57e17164170f52e58ccfa9493f467e5..png

由于上面每次需要输入密码,所有这里可以配置ssh免密登录

4.无秘登录

因为我的hadoop101已经配好了,所以下面用100来代替展示,大家继续用hadoop101便可
先进入当前用户下的.ssh目录,然后创建密钥

cd ~	# 进入当前用户目录
cd .ssh # 进入.ssh目录
ssh-keygen -t rsa

输入ssh-keygen -t rsa后连按三次回车,如下

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/3cb02d7d1cce029de0e43570201caad6..png

输入ls查看会发现有多出两个文件

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/ea744dd1f5969922dfec4ac84656951f..png

把公钥传给其他服务器,第一次需要输入密码,后续就不需要了

ssh-copy-id hadoop101	# 最好对自己也设置一下
ssh-copy-id hadoop102
ssh-copy-id hadoop103

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/0ff660322b7f080a0c5a3bc9b4cde7c1..png

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

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

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

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/441a8291bc2f0d3128e72dda98241649..png

可以看到hadoop101已经对hadoop100、hadoop101、hadoop102、hadoop103都授权了免密登录。

5.配置核心文件

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

hadoop101hadoop102hadoop103
HDFSNameNode
DataNode
DataNodeSecondaryNameNode
DataNode
YARNNodeManagerResourceManager
NodeManager
NodeManager

接下来主要是配置四个核心文件core-site.xml、hdfs-site.xml、yarn-site.xml、mapred-site.xml
进入/opt/module/hadoop-3.1.3/etc/hadoop/,依次修改这四个文件

cd /opt/module/hadoop-3.1.3/etc/hadoop/

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/46edfa2837b0a438d2812c2139dd91b5..png

1)修改core-site.xml

vim core-site.xml

core-site.xml文件内容如下









fs.defaultFS
hdfs://hadoop101:8020



hadoop.tmp.dir
/opt/module/hadoop-3.1.3/data



hadoop.http.staticuser.user
atguigu

2)修改hdfs-site.xml

vim hdfs-site.xml

hdfs-site.xml内容如下




dfs.namenode.http-address
hadoop101:9870




dfs.namenode.secondary.http-address
hadoop103:9868


3)修改yarn-site.xml

vim yarn-site.xml

yarn-site.xml内容如下




yarn.nodemanager.aux-services
mapreduce_shuffle



yarn.resourcemanager.hostname
hadoop102



yarn.nodemanager.env-whitelist
JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME

4)修改mapred-site.xml文件

vim mapred-site.xml

mapred-site.xml文件内容如下




mapreduce.framework.name
yarn

配置worker

vim workers

将里面的内容修改如下

hadoop101
hadoop102
hadoop103

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

xsync ../hadoop/

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/75e88d5c183b1898ce5d6748115dd025..png

到这集群的配置就结束了

6.集群启动

查看hadoop的相关启动命令

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

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/2cd30fc9a6946c0275d8c21449ffe216..png

1)初始化

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

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

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/3696b8fdc69a5bd6c4e3b3520892fd0e..png

初始化完成后会出现data文件夹,可以用tree查看一下文件夹结构

tree data/

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/394324f85383e97928b7e36070defbc8..png

2)启动集群(HDFS)

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

sbin/start-dfs.sh	# 启动hdfs

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/fd3d170737e572f59f9d1df2085d462f..png

可以看到,我输入启动命令后会出现如上报错,应该是配置环境的原因

解决方法
vim /etc/profile.d/my_env.sh

添加如下信息
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/db73ec8237a65286cf73e1e4770462c5..png

保存好后执行source /etc/profile 重新夹在环境配置

再次启动便可以成功了

sbin/start-dfs.sh

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/5ea594b22cdd17bf98c41b96c1550380..png

输入jps回车可以看到启动的节点(和前面的节点规划一样)

jps

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/abe1d762cd9ec4abfc50032bcc225661..png

3)访问hdfs的web页面

启动hdfs后就可以访问hdfs的web页面了,在浏览器中输入访问链接:http://hadoop101:9870/

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/125feb232061a7f291868a6bba760dec..png

4)启动ResourceManager(yarn)

因为ResourceManager在hadoop102上,所以这里需要到hadoop102上去启动

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/5f5159755d2cdd7965c93e3afa4782c6..png

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

xsync /etc/profile.d/my_env.sh

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/3d2ab6b6ef2ce00598612378a30e5d3a..png

source /etc/profile.d/my_env.sh	# 在hadoop102、hadoop103上执行

再次输入启动yarn命令

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/2bd62655547c7462f8e99a37313c6dc1..png

如果有这个警告说明前面设置免密登录时没有对自己进行设置,最好三台主机相互之间都设置一下

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

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/162f27313aeadde94fe7b30bd1b6f8fb..png

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/a98431617d76dc1128874f82d6c48aec..png

接下来可以访问yarn的web端,在浏览器中输入访问链接:http://hadoop102:8088/
http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/18b3c2a0231589e98861c38c682ba783..png

7.集群基本测试

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

cd /opt/module/hadoop-3.1.3

1)上传文件到集群

创建input目录

hadoop fs -mkdir /input

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/1e82c0a1fe038aba9528755e8f283d5a..png

上传文件到input目录下

hadoop fs -put wcinput/word.txt /input

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/4a6c044ef2ad041e16dca1322cde2b9c..png

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/2ac2078e4bd3e6bd000846dbcf2b9319..png

2)查看文件存放位置

tree data/

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/b6741c6c22d50a4ef77fbd21354be21e..png

查看这个文件中的内容,会发现和word.txt中内容一样

cat data/dfs/data/current/BP-760216983-192.168.10.101-1722402767471/current/finalized/subdir0/subdir0/blk_1073741825

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/6f6b0507e785ec18b29ab99f922f395c..png

3)下载hdfs中存储的文件

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

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/0543d9e777a14dddfc7e1fb6db4f9641..png

4)执行wordcount程序

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

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/8aba348381a93baf942a24dc9eee61ac..png

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/0edd71c2f12e80eac255a04cb9e807a5..png

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/54ad9607352219cafb04dc5cbb82f5f1..png

在hdfs中保存有执行结果
http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/e04ebda903701ecb21aa91f78b8d43f3..png

mapreduce下还有其他jar包程序

ll share/hadoop/mapreduce/

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/47f8ab3609e33023730367cc234e7cd7..png

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

Hadoop集群部署总结

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

本文系转载,版权归原作者所有,如若侵权请联系我们进行删除!

《数据资产管理白皮书》下载地址:https://www.dtstack.com/resources/1073/?src=bbs

《行业指标体系白皮书》下载地址:https://www.dtstack.com/resources/1057/?src=bbs

《数据治理行业实践白皮书》下载地址:https://www.dtstack.com/resources/1001/?src=bbs

《数栈V6.0产品白皮书》下载地址:https://www.dtstack.com/resources/1004/?src=bbs

想了解或咨询更多有关袋鼠云大数据产品、行业解决方案、客户案例的朋友,浏览袋鼠云官网:https://www.dtstack.com/?src=bbs

同时,欢迎对大数据开源项目有兴趣的同学加入「袋鼠云开源框架钉钉技术群」,交流最新开源技术信息,群号码:30537511,项目地址:https://github.com/DTStack

0条评论
社区公告
  • 大数据领域最专业的产品&技术交流社区,专注于探讨与分享大数据领域有趣又火热的信息,专业又专注的数据人园地

最新活动更多
微信扫码获取数字化转型资料
钉钉扫码加入技术交流群