大数据学习之搭建完全分布式运行模式(三台服务器)

发布于:2023-01-12 ⋅ 阅读:(335) ⋅ 点赞:(0)

hadoop完全分布式三台节点集群的搭建

完全分布式运行模式搭建

目录

完全分布式运行模式搭建

一、准备工作:

二、模板虚拟机环境准备

1.安装JDK并配置环境变量

2.安装hadoop

3.配置hadoop环境变量

 三、克隆两台Linux操作系统

 四、分发脚本xsync

五、ssh免密登录

六、hadoop集群的规划

1.修改配置文件

core-site.xml

hdfs-site.xml

yarn-site.xml

mapred-site.xml

2.配置workers

3.分发hadoop

4.格式化NameNode

七、启动hadoop


一、准备工作:

安装VMware Workstation虚拟机

安装xshell

安装JDK并配置环境变量

二、模板虚拟机环境准备

1.安装JDK并配置环境变量

2.安装hadoop

hadoop下载地址:https://archive.apache.org/dist/hadoop/common/hadoop-3.1.3/

创建/opt/software目录,将hadoop安装包上传至该目录下

mkdri /opt/software
mkdir /opt/module
cd /opt/software/

将两个目录修改为linghuchong:linghuchong

sudo chown linghuchong:linghuchong -R /opt/module
sudo chown linghuchong:linghuchong -R /opt/software

将其加压到/opt/module目录中

tar -zxvf hadoop-3.1.3.tar.gz /opt/module/

3.配置hadoop环境变量

编辑/etc/profile.d/my_env.sh文件,添加如下内容

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

使环境变量生效

source /etc/profile

 查看环境变量是否生效

hadoop version

显示以下的内容说明配置成功

 三、克隆两台Linux操作系统

在VMware中右键hadoop102,选择管理,然后点击克隆

这里选择创建完整克隆

 配置基本信息

同理克隆出hadoop104

修改克隆虚拟机的静态IP

[root@hadoop103 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33

修改为

DEVICE=ens33
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=static
NAME="ens33"
IPADDR=192.168.202.103
PREFIX=24
GATEWAY=192.168.202.2
DNS1=192.168.202.2

查看Linux虚拟机的虚拟网络编辑器,编辑->虚拟网络编辑器->VMnet8

查看Windows系统适配器VMware Network Adapter VMnet8的IP地址

修改主机名称

vim /etc/hostname/
hadoop103

 重启虚拟机

reboot

 四、分发脚本xsync

1.进入~,创建bin目录

 cd ~
mkdir bin

 2.编写分发脚本

cd bin
vim 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

3.给分发脚本添加执行权限

chmod 777 xsync 

4.将脚本拷贝到根目录下

sudo cp /home/linghuchong/bin/xsync /bin/

五、ssh免密登录

在~目录下,显示全部文件,我们可以看到一个.ssh的文件夹,这里存放ssh免密登录的公钥和私钥

ll -a 

进入.ssh文件夹,在文件夹中生成公钥和私钥

ssh-keygen -t rsa

连续敲击三次回车,就会生成两个文件,id_rsa(私钥),id_rsa.pub(公钥)

将公钥拷贝到需要免密登录的目标机器上

[linghuchong@hadoop102 .ssh]$ ssh-copy-id hadoop102
[linghuchong@hadoop102 .ssh]$ ssh-copy-id hadoop103
[linghuchong@hadoop102 .ssh]$ ssh-copy-id hadoop104

hadoop103和hadoop104也需重复以上操作,实现免密登录

六、hadoop集群的规划

hadoop102 hadoop103 hadoop104
HDFS

NameNode

DataNode

DataNode

SecondNameNode

DataNode

YARN NodeManager

ResourceManager

NodeManager

NodeManager

1.修改配置文件

cd /opt/module/hadoop-3.1.3/etc/hadoop/core-site.xml

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://hadoop102: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>linghuchong</value>
    </property>
</configuration>

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>hadoop102:9870</value>
    </property>
	<!-- 2nn web端访问地址-->
    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>hadoop104:9868</value>
    </property>
</configuration>

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>hadoop103</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>

    <!-- 开启日志聚集功能 -->
    <property>
        <name>yarn.log-aggregation-enable</name>
        <value>true</value>
    </property>
    <!-- 设置日志聚集服务器地址 -->
    <property>  
        <name>yarn.log.server.url</name>  
        <value>http://hadoop102:19888/jobhistory/logs</value>
    </property>
    <!-- 设置日志保留时间为7天 -->
    <property>
        <name>yarn.log-aggregation.retain-seconds</name>
        <value>604800</value>
    </property>

</configuration>

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>
    <!-- 历史服务器端地址 -->
    <property>
        <name>mapreduce.jobhistory.address</name>
        <value>hadoop102:10020</value>
    </property>

    <!-- 历史服务器web端地址 -->
    <property>
        <name>mapreduce.jobhistory.webapp.address</name>
        <value>hadoop102:19888</value>
    </property>

</configuration>

2.配置workers

vim /opt/module/hadoop-3.1.3/etc/hadoop/workers
hadoop102
hadoop103
hadoop104

 结尾不允许有空格,文件中不允许有空行

3.分发hadoop

xsync /opt/module/hadoop-3.1.3/

4.格式化NameNode

如果是第一次启动,需要在hadoop102格式化NameNode

如果在启动的过程中报错,需要重新格式化NameNode,需要将namenode和datanode进程全部停止,并且删除所有机器的data和logs目录,然后进行格式化

hdfs namenode -format

七、启动hadoop

在hadoop102启动HDFS

sbin/start-dfs.sh

在hadoop103上启动yarn

sbin/start-yarn.sh


网站公告

今日签到

点亮在社区的每一天
去签到