海哥 发表于 2024-12-18 10:33:22

【分布式】Hadoop完全分布式的搭建(零基础)

Hadoop完全分布式的搭建
环境预备:
(1)VMware Workstation Pro17(其他也可)
(2)Centos7
(3)FinalShell
(一)模型机设置

0)安装模板虚拟机,IP地址192.168.10.100、主机名称node1、内存4G、硬盘40G
网络环境及基础环境预备:
1)修改VMware的网络虚拟器:将子网ip设置在统一的字段,我统一设置为10
https://i-blog.csdnimg.cn/direct/b300e82dfdf44d06a2b46e42ec7a9a64.png
图片1
https://i-blog.csdnimg.cn/direct/572198d0743a4a119deeda2db670dbdb.png
图片2

https://i-blog.csdnimg.cn/direct/4498a7a83a624156ae4b9a6e8989c2ed.png
图片3
点击确定
(2)修改电脑的VMent8:也统一在10这个字段
在搜索栏搜索查看网络连接
https://i-blog.csdnimg.cn/direct/af3e852b12d448ceb8adab3a985b41d1.png
图片4

找到VMnet8
https://i-blog.csdnimg.cn/direct/c3a21e9d3aaf4ae39c8ce27df0c8649e.png
图片5

右击,选择属性

https://i-blog.csdnimg.cn/direct/a59762f7316e42a794dca4e17f460658.png
图片6
单击Internet协议版本4(TCP/IPv4)
https://i-blog.csdnimg.cn/direct/b4a7ba6456d747a1b4cd7679871650d2.png
图片7
修改相应的IP地址,默认网关,和刚才虚拟机中的保持统一字段,在本文中统一为10.
添加DNS服务器如图所示
https://i-blog.csdnimg.cn/direct/b9dcaaba9fd14b849901b3b981f57b63.png
图片8

修改Centos 里的ip,将动态地址改为静态
进入到centos7,用root用户登录,修改ifcfg-ens33文件,将此中BOOTPROTO的参数从动态改为静态,并添加对应的IP,依然与刚才前两步保持统一字段
https://i-blog.csdnimg.cn/direct/1410c62d123a43a4b549d842e4ee44c1.png
图片9
vim /etc/sysconfig/network-scripts/ifcfg-ens33 https://i-blog.csdnimg.cn/direct/d7d972da984948ad8197049365c46f87.png
图片10
ping一下百度表示网络可用,若失败则需查抄相应的问题。网络要通才可进行后续操作。
https://i-blog.csdnimg.cn/direct/4e1108d7b1dc4434a30d8304570c1468.png
图片11
修改主机名称为Master01
vim /etc/hostname https://i-blog.csdnimg.cn/direct/7b5da3f382cc460caad7b8876e48bb42.png
图片12
将文件内容改成Master01
将接下来预计要进行连接的虚拟机ip都入到场到hosts文件,根据自己必要搭建的集群数量决定,本文的Master01用于伪分布式搭建,node1,node2及node3用于完全分布式的搭建,要记录对应的ip地址,以便进行后续操作。
vim /etc/hosts https://i-blog.csdnimg.cn/direct/de1003e577164a9d850d8501cbbc2cd1.png
图片13
(4)连接finallshell
打开预备好的远程连接软件,我们后续将都在此进行操作,由于可直接粘贴复制和传送文件(用xshell也可),此处可用root登录也可用普通用户,后续由于yarn的使用,必要用普通用户连接。根据自己的主机ip和密码连接。
https://i-blog.csdnimg.cn/direct/74630447a54f42f4a7cb5769bcc7d261.png
图片14

连接乐成
https://i-blog.csdnimg.cn/direct/aeb23c5a4a544957b21d3db3f35ba78f.png
图片15

(5)更换阿里云镜像:执行以下下令
a.备份官方的原yum源的设置
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup b.下载Centos-7.repo文件
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo c.脚本设置本地源
找个目录,创建脚本文件:
本人以/root/目录为例
vi /root/auto_aliyun.sh 编写如下内容:
#!/bin/bash

# 备份官方的原yum源的配置

mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup

# 下载Centos-7.repo文件,或者curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo,取决于你是否有wget的命令

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

# 清除yum缓存

yum clean all

# 缓存本地yum源

yum makecache 按ESC。输入:wq生存,完成镜像阿里云源的脚本文件的编写
d.赋予脚本可执行的权限
chmod +x /root/auto_aliyun.sh e.执行脚本文件,即可
/root/auto_aliyun.sh https://i-blog.csdnimg.cn/direct/79c6757f099947ddbcd2652314a8d026.png
图片16
https://i-blog.csdnimg.cn/direct/8ee6198a83d84c6b9aaa463aef5c1b74.png
图片17

f.安装epel-release
yum install -y epel-release https://i-blog.csdnimg.cn/direct/c007b3844e464cf880621486edd61cf6.png
图片18
(6)关闭防火墙
systemctl stop firewalld

systemctl disable firewalld.service https://i-blog.csdnimg.cn/direct/1292ef8373594bab82baa20f5b4f1331.png
图片19
(7)将hduser用户(你自己的普通用户)赋予root权限
创建hduser用户,并修改hduser用户的密码
useradd hduser(创建的用户名)

passwd 123456(创建的用户密码) 设置hduser用户具有root权限,方便后期加sudo执行root权限的下令
vim /etc/sudoers 找到图中位置添加:
https://i-blog.csdnimg.cn/direct/983dbb0edab347928e4d17bb9173c850.png
图片20

生存并退出
在/opt目录下创建module、software文件夹
mkdir /opt/module mkdir /opt/software 修改module、software文件夹的所有者和所属组均为hduser用户 
chown hduser:hduser /opt/module chown hduser:hduser /opt/software 查看module、software文件夹的所有者和所属组
https://i-blog.csdnimg.cn/direct/37c58d5273624a5db57522b30d23c6ff.png
图片21
测试hduser已拥有root权限
https://i-blog.csdnimg.cn/direct/ad0ebdedc33d44e59755047070977dae.png
图片22
(8)卸载环境自带jdk
查询jdk
jdk rpm -qa | grep -i java https://i-blog.csdnimg.cn/direct/cd94c7db81d24d51a6a41243bcfc28ec.png
图片23
卸载jdk
rpm -qa | grep -i java | xargs -n1 rpm -e --nodeps 注意:假如你的虚拟机是最小化安装不必要执行这一步。


[*]rpm -qa:查询所安装的所有rpm软件包
[*]grep -i:忽略巨细写
[*]xargs -n1:表示每次只通报一个参数
[*]rpm -e –nodeps:强制卸载软件
查询
https://i-blog.csdnimg.cn/direct/7efbd57b4cad4a9eac5c4ded864e53d3.png
图片24
重启虚拟机
# reboot 模型机设置完成
(二)完全分布式搭建

(1)三台虚拟机node1,node2,node3的预备
克隆三台虚拟node1,node2,node3(名称要与前文hosts中一致,注意是完全克隆)
https://i-blog.csdnimg.cn/direct/018524692b7e4abbbf13cd4f655e0703.png
图片25
分别修改三台机器的ip和主机名并重启,查抄是否修改完成,并查抄网络是否可用
Node1
https://i-blog.csdnimg.cn/direct/24fb080809cf4b3785bfb73355cd877c.png
图片26

https://i-blog.csdnimg.cn/direct/d322153fb5524eadb12d5c512a1330d3.png
图片27
Node2
https://i-blog.csdnimg.cn/direct/9b95078c004543f6b51efc6f03f06c94.png
图片28
https://i-blog.csdnimg.cn/direct/48de7fa943cd49fab333c63a08e60f19.png
图片29
Node3
https://i-blog.csdnimg.cn/direct/5f70b3ed2000430ca15bd41ca96037a9.png
图片30
https://i-blog.csdnimg.cn/direct/807ce344773e48e6ada2bec08b8bb446.png
图片31
将三台主机均按前面方法连接finalshell
https://i-blog.csdnimg.cn/direct/473d5a507362475b9216cc351525ea58.png
图片32
https://i-blog.csdnimg.cn/direct/191b561538084815967e2a0055f44779.png

图片33

https://i-blog.csdnimg.cn/direct/05fb6d3b7fc44f8f88c110a44f7adeff.png
图片34
(2)给node1安装jdk
将下好的jdk和hadoop使用finallshell传到node1中,在finallshell的文件中找到之前建立的software文件夹,直接拖入。
https://i-blog.csdnimg.cn/direct/f1b1866cccd6400c8b5fa75335f07d02.png
图片35
进入到software文件夹,查看tar包已经存在。
https://i-blog.csdnimg.cn/direct/9f7d9a0e51b84ca386db363ff91b674e.png
图片36
解压缩:
tar -zxvf jdk-8u202-linux-x64.tar.gz -C /opt/module/ https://i-blog.csdnimg.cn/direct/26ac1ffe34784d3e9dad82692de6cd0f.png
图片37
进入到module目录,已经存在jdk。
https://i-blog.csdnimg.cn/direct/e74fb252b6ab4f8c89855aba195495e7.png
图片38
(3)设置JAVA_HOME
在/etc/profile.d/中创建my_env.sh,填写以下内容:
vim /etc/profile.d/my_env.sh https://i-blog.csdnimg.cn/direct/0c1c1960d74f4182b7f3e808a740244a.png
图片39
生存后运行,java设置乐成。
source /etc/profile 执行java语句出现以下内容
https://i-blog.csdnimg.cn/direct/73e9d629fa1b4e2bb9460df914eb8b0b.png
图片40
(4)安装hadoop:
解压hadoop至/etc/module
tar -zxvf hadoop-3.2.4.tar.gz -C /opt/module/ https://i-blog.csdnimg.cn/direct/5988149856c74d13b72fea1938dd84ec.png
图片41
进入到hadoop中设置环境变量
https://i-blog.csdnimg.cn/direct/eb409b7af6a244cebeaf987b3fb722db.png
图片42
在之前创建的my_env.sh中添加以下内容
vim /etc/profile.d/my_env.sh https://i-blog.csdnimg.cn/direct/39a2fc6e277b42c790727a43882ded27.png
图片43
source /etc/profile  运行
下令行输入hadoop,出现以下内容设置完成
https://i-blog.csdnimg.cn/direct/577dcaf3d3944210abbe6566a26940ac.png
图片44
(5)将node1中的jdk和hadoop复制到node2和node3上
https://i-blog.csdnimg.cn/direct/316e44ef80f4464f82d6dbdbac534336.png
图片45

https://i-blog.csdnimg.cn/direct/43ec10a976e9415793a0fac8314e1918.png
图片46
集群分配脚本的编写:
创建一个脚本xsync,并将其设置在环境变量中,内容如下
注意是在hduser用户的bin目录下:
https://i-blog.csdnimg.cn/direct/baebf7be2b8448b38cc31a45ae613579.png
图片47

建立一个xsync文件,输入以下内容生存
#!/bin/bash

#1. 判断参数个数
if [ $# -lt 1 ]
then
    echo Not Enough Arguement!
    exit;
fi

#2. 遍历集群所有机器
for host in node1 node2 node3
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 注意以下内容修改成自己对应的主机名字
https://i-blog.csdnimg.cn/direct/3ec4fef8312646cca3d3b61371f656e5.png
图片48

进入到相应的目录,找到相应的bin目录,查询刚才建立的xsync文件,注意是hduser下的bin目录。
https://i-blog.csdnimg.cn/direct/00ddc8c526bb464a961398b2d5966f53.png
图片49
vim xsync https://i-blog.csdnimg.cn/direct/ea142287f28f4e3fb342202e75a0b66d.png
图片50
赋予xsync相应权限
chomd 777 xsync 发现文件变绿
https://i-blog.csdnimg.cn/direct/48f1fa4e87fb4acd82845c555b69688f.png
图片51
使用xsync脚本将环境变量分发到node2和node3中
sudo ./bin/xsync /etc/profile.d/my_env.sh https://i-blog.csdnimg.cn/direct/c2162be8b8fb4885988cd73774fc5129.png
图片52
让环境变量见效
$ source /etc/profile

$ source /etc/profile
[*]ssh免密登录设置
cd .ssh/

cat known_hosts https://i-blog.csdnimg.cn/direct/2abb63033b0a476a9c15ff50fdcdf8c3.png
图片53
$ssh-keygen -t rsa  然后敲(三个回车),就会生成两个文件 id_rsa(私钥)、id_rsa.pub(公钥)
https://i-blog.csdnimg.cn/direct/4eb51b056900497bbf26541f6d4d5a38.png
图片54
将公钥拷贝到要免密登录的目标机器上
https://i-blog.csdnimg.cn/direct/36907cc8f0814f64804207792dbf046d.png
图片55
ssh node2后免密登录乐成
https://i-blog.csdnimg.cn/direct/d03d4ba96bb841e692055e4473726db2.png
图片56
第三台机器同理
https://i-blog.csdnimg.cn/direct/55ca12a26a3446e887fd71730a8ccc3e.png
图片57
(三)设置集群

(1)焦点设置文件
cd $HADOOP_HOME/etc/hadoop

vim core-site.xml https://i-blog.csdnimg.cn/direct/e01433b5694e4ffeaf3b0ac20cc7c34c.png
图片58
core-site.xml文件内容如下:
<?xml version="1.0" encoding="UTF-8"?>

<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>

<!-- 指定 NameNode 的地址 -->

<property>

<name>fs.defaultFS</name>

<value>hdfs://node1:8020</value>

</property>

<!-- 指定 hadoop 数据的存储目录 -->

<property>

<name>hadoop.tmp.dir</name>

<value>/opt/module/hadoop-3.2.4/data</value>

</property>

<!-- 配置 HDFS 网页登录使用的静态用户为 atguigu -->

<property>

<name>hadoop.http.staticuser.user</name>

<value>hduser</value>

</property>

</configuration> https://i-blog.csdnimg.cn/direct/cdf0ea25b60f4699a54b9a96324fd0b0.png
图片59
(2)HDFS 设置文件 
设置 hdfs-site.xml
vim hdfs-site.xml 文件内容如下:
<?xml version="1.0" encoding="UTF-8"?>

<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>

<!-- nn web 端访问地址-->

<property>

<name>dfs.namenode.http-address</name>

<value>node1:9870</value>

</property>

<!-- 2nn web 端访问地址-->

<property>

<name>dfs.namenode.secondary.http-address</name>

<value>node3:9868</value>

</property>

</configuration> https://i-blog.csdnimg.cn/direct/c9c9892a2057402ca8d0e8905a346948.png
图片60
(3)YARN 设置文件 
设置 yarn-site.xml
vim yarn-site.xml 文件内容如下:
<?xml version="1.0" encoding="UTF-8"?>

<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>

<!-- 指定 MR 走 shuffle -->

<property>

<name>yarn.nodemanager.aux-services</name>

<value>mapreduce_shuffle</value>

</property>

<!-- 指定 ResourceManager 的地址-->

<property>

<name>yarn.resourcemanager.hostname</name>

<value>node2</value>

</property>

<!-- 环境变量的继承 -->

<property>

<name>yarn.nodemanager.env-whitelist</name>

<value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CO

NF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAP

RED_HOME</value>

</property>

</configuration> https://i-blog.csdnimg.cn/direct/01022f84c3fb44d8a32810eaf3c12176.png
图片61
(4)MapReduce 设置文件 
设置 mapred-site.xml
vim mapred-site.xml 文件内容如下:
<?xml version="1.0" encoding="UTF-8"?>

<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>

<!-- 指定 MapReduce 程序运行在 Yarn 上 -->

<property>

<name>mapreduce.framework.name</name>

<value>yarn</value>

</property>

</configuration> https://i-blog.csdnimg.cn/direct/f275b31d7bed4203bc3308e4de4f4b28.png
图片62
5)在集群上分发设置好的 Hadoop 设置文件
xsync /opt/module/hadoop- 3.2.4/etc/hadoop/ https://i-blog.csdnimg.cn/direct/772712fcf962491995be87d8189bb8f9.png
图片63
6)去 node2 和 node3 上查看文件分发情况
cat /opt/module/hadoop-3.2.4/etc/hadoop/core-site.xml 编辑workers文件
vim /opt/module/hadoop-3.2.4/etc/hadoop/workers 在该文件中增加如下内容:
https://i-blog.csdnimg.cn/direct/f0804e4adcd04682811d2cbb6125391c.png
图片64
注意:该文件中添加的内容结尾不允许有空格,文件中不允许有空行。
同步所有节点设置文件
xsync /opt/module/hadoop-3.2.4/etc 启动集群
(1)假如集群是第一次启动,必要在node1节点格式化NameNode(注意:格式化NameNode,会产生新的集群id,导致NameNode和DataNode的集群id不一致,集群找不到已往数据。假如集群在运行过程中报错,必要重新格式化NameNode的话,肯定要先停止namenode和datanode进程,而且要删除所有机器的data和logs目录,然后再进行格式化。)
$ hdfs namenode -format https://i-blog.csdnimg.cn/direct/8e6854cb290c4f52bdd515849b66fa98.png
图片65
(2)启动HDFS
$ sbin/start-dfs.sh https://i-blog.csdnimg.cn/direct/0d8ffea65f034c98bd4d9ffc7d3f36ee.png
图片66
(3)在设置了ResourceManager的节点(node2)启动YARN
$ sbin/start-yarn.sh Web端查看HDFS的NameNode
浏览器中输入:http://node1:9870
(4)查看HDFS上存储的数据信息
Web端查看YARN的ResourceManager
浏览器中输入:http://node2:8088
(b)查看YARN上运行的Job信息
验证HDFS是否乐成启动,可以使用jps下令查看Java进程,确认NameNode和DataNode等进程是否运行。
https://i-blog.csdnimg.cn/direct/5451e40556a643069c339bdee7b66550.png
图片67
https://i-blog.csdnimg.cn/direct/584626eb356047bf9b04aa0672a8e5fb.png
图片68
https://i-blog.csdnimg.cn/direct/c92c6ecdc3444113afd213cfd7e05a25.png
图片69
完全分布式搭建完成。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 【分布式】Hadoop完全分布式的搭建(零基础)