【初学大数据】CentOS7安装hadoop3.3.2完全分布式详细流程

1 使用CentOS7安装hadoop模板机

1.1 CentOS7安装配置流程

1.1.1 创建VMware虚拟机,使用CentOS7系统,命名为hadoop100

补充说明:我这里VMware的虚拟网络设置

VMware子网IP:192.168.10.0,

网关:192.168.10.2

1.1.2 网络配置

1.1.2.1 虚拟机ip配置

进入CentOS7虚拟机中,使用root用户登录,密码:123456

进入后打开命令窗口

先配置网络命令如下(如果vim使用不了,请用vi)

vim /etc/sysconfig/network-scripts/ifcfg-ens33

修改内容如下几项

BOOTPROTO="static"
ONBOOT="yes"
IPADDR=192.168.10.100
NETMASK=255.255.255.0
GATEWAY=192.168.10.2
DNS1=1.1.1.1
DNS2=114.114.114.114

修改后保存,‘esc’退出编辑模式,‘shift’+’;‘ 输入‘:’,输入wq,进行保存

1.1.2.2 主机名称配置

命令如下

vim /etc/hostname

修改为hadoop100(如果创建虚拟机是命名为hadoop100,即为默认)

1.1.2.3 主机名称映射

命令如下

vim /etc/hosts

进入后在最后添加如下内容

192.168.10.100 hadoop100
192.168.10.101 hadoop101
192.168.10.102 hadoop102
192.168.10.103 hadoop103
192.168.10.104 hadoop104
192.168.10.105 hadoop105
192.168.10.106 hadoop106
192.168.10.107 hadoop107
192.168.10.108 hadoop108

然后重启虚拟机

1.1.2.4 windows环境下使用虚拟机名字作为登录

我为win11环境,都差不多,进入hosts文件

C:\Windows\System32\drivers\etc\hosts

在hosts添加

192.168.10.100 hadoop100
192.168.10.101 hadoop101
192.168.10.102 hadoop102
192.168.10.103 hadoop103
192.168.10.104 hadoop104
192.168.10.105 hadoop105
192.168.10.106 hadoop106
192.168.10.107 hadoop107
192.168.10.108 hadoop108

保存后,就可使用hadoop100登录。

1.1.3 虚拟机配置

1.1.3.1 安装epel-release
yum install -y epel-release

注意:如果是最小版系统还需要装net-tools和vim工具

1.1.3.1.1安装net-tool
yum install -y net-tools
1.1.3.1.2安装vim
yum install -y vim
1.1.3.2 关闭、防火墙
#查看防火墙状态
firewall-cmd --state

#关闭防火墙
systemctl stop firewalld.service

#禁用开启启动防火墙
systemctl disable firewalld.service
1.1.3.3 创建一个lizi用户
useradd lizi

passwd 123456

配置root权限,方便后期sudo执行root权限命令

vim /etc/sudoers

修改/etc/sudoers文件,在%wheel下面添加一行

lizi    ALL=(ALL)	NOPASSWD:ALL
1.1.3.4 创建module和software文件夹在opt下

使用lizi用户登录

sudo mkdir module

sudo mkdir software

执行如下命令

sudo chown lizi:lizi module/ software/

权限分配给lizi用户

drwxr-xr-x. 2 lizi lizi 6 Apr 17 04:25 module
drwxr-xr-x. 2 lizi lizi 6 Apr 17 04:28 software
1.1.3.5 卸载桌面版自带的JDK
#进入root用户
su root

#执行卸载java命令
rpm -qa | grep -i java | xargs -nl rpm -e --nodeps

#如果上面卸载命令不成功用下面的命令
#先查看
rpm -qa | grep -i java

#得到如下结果
javapackages-tools-3.4.1-11.el7.noarch
java-1.8.0-openjdk-headless-1.8.0.262.b10-1.el7.x86_64
tzdata-java-2020a-1.el7.noarch
java-1.7.0-openjdk-headless-1.7.0.261-2.6.22.2.el7_8.x86_64
java-1.8.0-openjdk-1.8.0.262.b10-1.el7.x86_64
python-javapackages-3.4.1-11.el7.noarch
java-1.7.0-openjdk-1.7.0.261-2.6.22.2.el7_8.x86_64

#先执行
yum remove *openjdk*

#再次查看
rpm -qa | grep -i java

#还剩三个
javapackages-tools-3.4.1-11.el7.noarch
tzdata-java-2020a-1.el7.noarch
python-javapackages-3.4.1-11.el7.noarch

#分别用命令执行删除卸载
rpm -e --nodeps python-javapackages-3.4.1-11.el7.noarch
rpm -e --nodeps javapackages-tools-3.4.1-11.el7.noarch
rpm -e --nodeps tzdata-java-2020a-1.el7.noarch

#请按照自己的版本改变版本号
1.1.3.6 禁用selinux
#修改
vim /etc/selinux/config

#找到
SELINUX=enforcing

#改为
SELINUX=disabled
1.1.3.7 重启虚拟机
reboot

到这里模板机就配置的差不多了

1.1.4 克隆虚拟机

可用步骤省略

克隆三台虚拟机分别命名:

hadoop102:IP:192.168.10.102

hadoop103:IP:192.168.10.103

hadoop104:IP:192.168.10.103

1.1.4.1 修改每一台虚拟机的IP,hostname,hosts

以hadoop102为例,每一台机子都一样

vim /etc/sysconfig/network-scripts/ifcfg-ens33 

vim /etc/hostname 

#因模板虚拟机hadoop100已经修改过这里就不用修改了
vim /etc/hosts

重复每一台虚拟机

然后重启每台虚拟机

1.2 安装java(jdk1.8)

把jdk1.8上传到/opt/software里

1.2.1 解压jdk

tar -zxvf jdk-8u321-linux-x64.tar.gz -C /opt/module/

1.2.2 进入jdk解压路径

cd /opt/module/
cd jdk1.8.0_321/

1.2.3 配置JAVA_HOME环境

1.2.3.1 在profile.d下配置
#进入文件
cd /etc/profile.d/

#查看下面的文件
ll

#创建自己的my_env.sh
sudo vim my_env.sh

#里面写入并保存退出
#JAVA_HOME
export JAVA_HOME=/opt/module/jdk1.8.0_321
export PATH=$PATH:$JAVA_HOME/bin

#重新加载profile
source /etc/profile

#检查路径是否成功
echo $JAVA_HOME

1.3 安装hadoop

把hadoop上传到/opt/software里

1.3.1 解压hadoop

tar -zxvf hadoop-3.3.2.tar.gz -C /opt/module/

1.3.2 进入hadoop解压路径

cd /opt/module/
cd hadoop-3.3.2/

1.3.3 配置hadoop环境变量

#查询hadoop路径
pwd
#复制路径
/opt/module/hadoop-3.3.2

#编辑我们自己的环境变量文件
sudo vim /etc/profile.d/my_env.sh

#写入HADOOP_HOME环境变量
#HADOOP_HOME
export HADOOP_HOME=/opt/module/hadoop-3.3.2
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin

#将hadoop各进程的用户设为root
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

#重新加载profile
source /etc/profile

#检查路径是否成功
echo $HADOOP_HOME

1.3.4hadoop文件下各目录作用

1.3.4.1 bin目录(经常使用)
  • hdfs:存储相关
  • mapred:MapReduce计算相关
  • yarn:资源调度
1.3.4.2 etc目录(经常使用)
  • hdfs-site.xml:hdfs相关配置
  • mapred-site.xml:跟计算相关配置
  • yarn-site.xml:跟资源相关配置
  • core-site.xml:核心配置
  • workers
1.3.4.3 include头文件
1.3.4.4 lib本地动态链接库/lib/native(偶尔使用)
1.3.4.5 sbin(经常使用)
  • start-dfs.sh:启动整个集群
  • start-yarn.sh:启动资源调度器
  • mr-jobhistory-daemon.sh:启动历史服务器
  • hadoop-daemon.sh:单节点启动
1.4.6 share 案例、说明

1.4 完全分布式运行模式(开发重点)

分析:

  1. 准备3台客户机(关闭防火墙,静态IP,主机名称)
  2. 安装JDK
  3. 配置环境变量
  4. 安装Hadoop
  5. 配置环境变量
  6. 配置集群
  7. 单点启动
  8. 配置ssh
  9. 群起并测试集群

1.4.1 虚拟机准备

1.1-1.2章节查看步骤

1.4.2 编写集群分发脚本xsync

1.4.2.1 scp(secure copy)安全拷贝

从hadoop102拷贝到hadoop103和hadoop104

#拷贝jdk到hadoop103
scp -r jdk1.8.0_321/ lizi@hadoop103:/opt/module/

#拷贝hadoop到hadoop103(从hadoop102拉取数据到hadoop103)
scp -r lizi@hadoop102:/opt/module/hadoop-3.3.2 ./

#拷贝jdk和hadoop到hadoop104(使用hadoop103,从hadoop102拷贝到hadoop104)
scp -r lizi@hadoop102:/opt/module/* lizi@hadoop104:/opt/module/

1.4.2.2 rsync远程同步工具(集群分发脚本)
1.4.2.2.1 rsync原始命令
rsync -av /opt/module lizi@hadoop103:/opt/
1.4.2.2.2 使rsync脚本在任何路径都能使用,配置全局环境变量(这里直接放置在/home/lizi/bin)
#进入/home/lizi家目录
cd /home/lizi/

#创建bin目录
mkdir bin

创建名为xsync的脚本,内容如下

#!/bin/bash

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

#2.遍历集群所有机器
for host in hadoop102 hadoop103 hadoop104
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 xsync

1.4.3 SSH免密登录

1.4.3.1 配置hadoop102 ssh免密登录hadoop103和hadoop104
#进入/home/lizi家目录
cd ~

#进入.ssh目录
cd .ssh

#执行命令,获取公钥和私钥,输入后三下回车即可
ssh-keygen -t rsa

#拷贝公钥到hadoop103和hadoop104
ssh-copy-id hadoop103
ssh-copy-id hadoop104
ssh-copy-id hadoop102
1.4.3.2 配置hadoop103 ssh免密登录hadoop102和hadoop104
#进入/home/lizi家目录
cd ~

#进入.ssh目录
cd .ssh

#执行命令,获取公钥和私钥,输入后三下回车即可
ssh-keygen -t rsa

#拷贝公钥到hadoop103和hadoop104
ssh-copy-id hadoop102
ssh-copy-id hadoop104
ssh-copy-id hadoop103
1.4.3.3 配置hadoop104 ssh免密登录hadoop102和hadoop103
#进入/home/lizi家目录
cd ~

#进入.ssh目录
cd .ssh

#执行命令,获取公钥和私钥,输入后三下回车即可
ssh-keygen -t rsa

#拷贝公钥到hadoop103和hadoop104
ssh-copy-id hadoop102
ssh-copy-id hadoop103
ssh-copy-id hadoop104
1.4.3.4 检测是否成功

每一台执行如下命令

ssh hadoop102

ssh hadoop103

ssh hadoop104

#退出登录
exit

同理,配置root用户

1.4.4 集群配置

1.4.4.1 配置hadoop-env.sh

切换到hadoop配置文件所在目录

cd /opt/module/hadoop-3.3.2/etc/hadoop

修改hadoop-env.sh

vim hadoop-env.sh

找到修改如下内容:

#修改前
# JAVA_HOME=/user/Java/testing hdfs dfs -ls

#修改为(去掉#注解,并改成你自己的jdk路径)
JAVA_HOME=/opt/module/jdk1.8.0_321
1.4.4.2 配置core-site.xml

切换到hadoop配置文件所在目录

cd /opt/module/hadoop-3.3.2/etc/hadoop

vim core-site.xml

修改core-site.xml,在中添加

<!--HDFS 临时路径-->
<property>
    <name>hadoop.tmp.dir</name>
    <value>/opt/module/hadoop-3.3.2/tmp</value>
</property>
<!--HDFS 的默认地址、端口 访问地址-->
<property>
    <name>fs.defaultFS</name>
    <value>hdfs://hadoop102:9000</value>
</property>
1.4.4.3 配置yarn-site.xml

切换到hadoop配置文件所在目录

cd /opt/module/hadoop-3.3.2/etc/hadoop

vim yarn-site.xml

修改yarn-site.xml,在中添加

<!-- Site specific YARN configuration properties -->
<!--集群master-->
<property>
    <name>yarn.resourcemanager.hostname</name>
    <value>hadoop102</value>
</property>

<!--NodeManager上运行的附属服务-->
<property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
</property>

<!--容器可能会覆盖的环境变量,而不是使用NodeManager的默认值-->
<property>
  <name>yarn.nodemanager.env-whitelist</name>
  <value>JAVA_HOME,HADOOP_COMMON_HOME,HADOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_HOME,PATH,LANG,TZ</value>
</property>

<!--关闭内存检测,在虚拟机环境中不做配置会报错-->
<property>
    <name>yarn.nodemanager.vmem-check-enabled</name>
    <value>false</value>
</property>
1.4.4.4 配置mapred-site.xml

切换到hadoop配置文件所在目录

cd /opt/module/hadoop-3.3.2/etc/hadoop

vim mapred-site.xml

修改mapred-site.xml,在中添加

<!--local表示本地运行,classic表示经典mapreduce框架,yarn表示新的框架-->
<property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
</property>

<!--如果map和reduce任务访问本地库(压缩等),则必须保留原始值
当此值为空时,设置执行环境的命令将取决于操作系统-->
<property>
    <name>mapreduce.admin.user.env</name>
    <value>HADOOP_MAPRED_HOME=/opt/module/hadoop-3.3.2</value>
</property>

<!--可以设置AM【AppMaster】端的环境变量-->
<property>
    <name>yarn.app.mapreduce.an.env</name>
    <value>HADOOP_MAPRED_HOME=/opt/module/hadoop-3.3.2</value>
</property>
1.4.4.5 配置hdfs-site.xml

切换到hadoop配置文件所在目录

cd /opt/module/hadoop-3.3.2/etc/hadoop

vim hdfs-site.xml

修改hdfs-site.xml,在中添加

<!--hdfs web的地址-->
<property>
    <name>dfs.namenode.http-address</name>
    <value>hadoop102:50070</value>
</property>
<!--副本数-->
<property>
    <name>dfs.replication</name>
    <value>3</value>
</property>
<!--是否启用HDFS权限,当值为false时,代表关闭-->
<property>
    <name>dfs.permissions.enabled</name>
    <value>false</value>
</property>
<!--块大小,默认字节128MB-->
<property>
    <name>dfs.blocksize</name>
    <!--128m-->
    <value>134217728</value>
</property>
1.4.4.6 修改workers文件

切换到hadoop配置文件所在目录

cd /opt/module/hadoop-3.3.2/etc/hadoop

vim workers

添加

hadoop102
hadoop103
hadoop104

1.4.5 远程复制文件

#执行rxyncrsync远程同步工具脚本xsync(名字随意改)
sudo /home/lizi/bin/xsync /opt/module/hadoop-3.3.2/etc/hadoop

1.4.6 验证Hadoop

1.4.6.1格式化
hadoop namenode -format

没有报错格式化成功

如果在使用hadoop中出错,或者启动不起来,可能需要删除hadoop的data和logs文件夹,再重新格式化

#停止hadoop
stop-all.sh

#进入hadoop安装目录
cd /opt/module/hadoop-3.3.2

#删除data和logs文件夹
rm -rf data/ logs/

#格式化
hadoop namenode -format
1.4.6.2 启动hadoop

在hadoop102上使用命令

#启动命令
start-all.sh

#停止命令
stop-all.sh

启动hadoop所有进程

出现如下状态表示启动成功

Starting namenodes on [hadoop102]
Last login: Mon Apr 18 08:11:35 PDT 2022 on pts/1
Starting datanodes
Last login: Mon Apr 18 08:24:43 PDT 2022 on pts/1
localhost: Warning: Permanently added 'localhost' (ECDSA) to the list of known hosts.
hadoop103: WARNING: /opt/module/hadoop-3.3.2/logs does not exist. Creating.
hadoop104: WARNING: /opt/module/hadoop-3.3.2/logs does not exist. Creating.
Starting secondary namenodes [hadoop102]
Last login: Mon Apr 18 08:24:46 PDT 2022 on pts/1
Starting resourcemanager
Last login: Mon Apr 18 08:24:49 PDT 2022 on pts/1
Starting nodemanagers
Last login: Mon Apr 18 08:24:53 PDT 2022 on pts/1
1.4.6.3 查看相关进程

使用命令

jps

[root@hadoop102 hadoop-3.3.2]# jps
5666 Jps
4499 DataNode
4757 SecondaryNameNode
5222 NodeManager
4268 NameNode
5022 ResourceManager
[root@hadoop103 hadoop-3.3.2]# jps
4050 Jps
3928 NodeManager
3806 DataNode

[root@hadoop104 hadoop-3.3.2]# jps
3792 DataNode
4035 Jps
3913 NodeManager

1.4.6.4 使用hadoop命令查看HDFS上的命令
hadoop fs -ls /

还没有文件,暂时查询不到

1.4.6.5 浏览器访问

在浏览器上输入http://hadoop102:50070/,即可查看hadoop运行相关信息

  • 1
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

栗子叔叔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值