前言:
    系统:macOS Catalina10.15.5
    虚拟机:VMware-Fusion-12.0.0
    Linux:centos6.5
    三个节点:master、slave1、slave2
    本文基于这篇博客,有更详细步骤,并修改其中错误

    • 第一步:centos的安装与克隆

    点击下载centos6.5
    打开VMware—文件—新建—从光盘或映象中安装—继续—(选择刚刚下载的centos6.5)—输入用户名(自己设置)—继续—完成—(此处我把这台虚拟机取名为master,以便在VMware区分)等待安装完成即可
    截屏2020-12-14 下午2.14.44.png
    安装完之后,将master关机,进入VMware,选择master右键,创建完整克隆,并取名为slave1,
    同样的方法创建slave2
    截屏2020-12-14 下午2.27.55.png

    • 第二步:配置节点名

    在master的终端:su 进入root用户下,以下操作我们全在root用户下
    输入vi /etc/sysconfig/network 开始编辑
    截屏2020-12-14 下午2.40.26.png
    i 进入INSERT模式,改为如下(为与虚拟机一致,我改成master)
    截屏2020-12-14 下午2.41.32.png
    修改好后,按Esc键,输入 :wq 回车保存退出
    截屏2020-12-14 下午2.48.53.png
    在slave1、slave2上做同样的操作,并修改HOSTNAME=slave1、HOSTNAME=slave2
    重启各个节点,你会发现 root@名字 已修改

    • 第三步:配置hosts

    (1)root用户下,在master终端:ifconfig 查看ip地址(红线标注)
    截屏2020-12-14 下午2.59.55.png
    在slave1、slave2做同样的操作,并记下它们的ip地址
    (2)master终端:vi /etc/hosts 编辑hosts文件,注释掉前两行,添加各节点名信息(ip地址改成自己的),保存退出
    继续输入:hostname master 使之生效
    以后直接ping名字就可以,不用ping地址
    截屏2020-12-14 下午3.10.26.png
    (3)在slave1、slave2做与(2)相同的操作(hostname那一步注意修改后面的名字)
    (4)master终端:ping slave1 测试是否成功(crtl+c中止)

    第四步、第五步建议先跳过

    • 第四步:关闭防火墙

    centos版本不同,操作不同,自行百度,直到成功

    • 第五步:时间同步

    root用户下,master终端:ntpdate -u ntp1.aliyun.com
    继续输入:date 下图表示成功
    截屏2020-12-14 下午3.44.40.png
    slave1、slave2相同操作

    • 第六步:配置ssh无密码访问

    (1)生成公钥密钥对
    root用户下,在master终端:ssh-keygen -t rsa 一直回车,直到生成结束
    此时,master终端:ls ~/.ssh 会看到两个文件,前者为私钥,后者为公钥
    slave1、slave2做(1)的相同操作
    (2)配置免密文件
    将slave生成的文件拷贝到master(需要输入yes和密码):
    slave1终端:scp /root/.ssh/id_rsa.pub root@master:/root/.ssh/id_rsa_slave1.pub
    slave2终端:scp /root/.ssh/id_rsa.pub root@master:/root/.ssh/id_rsa_slave2.pub
    将公钥全部放入到authorized_keys文件中:
    master终端:cp /root/.ssh/id_rsa.pub /root/.ssh/authorized_keys
    master终端:cat /root/.ssh/id_rsa_slave1.pub>> /root/.ssh/authorized_keys
    master终端:cat /root/.ssh/id_rsa_slave2.pub>> /root/.ssh/authorized_keys
    修改权限:
    master终端:chmod 0600 ~/.ssh/authorized_keys
    将主节点文件authorized_keys拷贝到子节点上(需要输入yes和密码):
    master终端:scp /root/.ssh/authorized_keys root@slave1:/root/.ssh/
    master终端:scp /root/.ssh/authorized_keys root@slave2:/root/.ssh/
    (3)测试
    分别在各个节点上 ssh 名字 ,这步一定要做,
    如在master上,界面可能稍有不同,不用密码且能登录表示成功
    截屏2020-12-14 下午6.42.11.png
    终端:exit ssh 关闭ssh

    • 第七步:配置jdk

    jdk版本:jdk-8u144-linux-x64.tar.gz
    下载好之后,如果你是macOS系统,直接拖拽到master的Downloads文件夹之下(需要先在VMware-master-设置-隔离-勾选启用拖拽、拷贝粘贴功能),如果你是Windows系统,推荐搜索FileZilla软件。
    截屏2020-12-14 下午6.55.31.png
    (1)解压jdk到/usr/local下(也可以解压到别的地方,但要记住这个路径)
    root用户下,master终端:tar -zxvf /home/sunergao/Downloads/jdk-8u144-linux-x64.tar.gz -C /usr/local
    截屏2020-12-14 下午7.11.01.png
    红线标注:sunergao换成自己的(不知道看上图),C为大写
    (2)配置环境变量
    master终端:vi /etc/profile
    在文件末尾添加以下信息:
    export JAVA_HOME=/usr/local/jdk1.8.0_144
    export JRE_HOME=$JAVA_HOME/jre
    export PATH=$JAVA_HOME/bin:$PATH
    export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib
    截屏2020-12-14 下午7.45.37.png
    保存退出,继续输入使刚才的更改生效:source /etc/profile
    (3)测试
    master终端:java -version 下图表示成功
    截屏2020-12-14 下午7.34.59.png
    (4)拷贝jdk到子节点
    master终端:scp -r /usr/local/jdk1.8.0_144 root@slave1:/usr/local/
    master终端:scp -r /usr/local/jdk1.8.0_144 root@slave2:/usr/local/
    (5)拷贝配置文件profile到子节点
    此处先不拷贝,配置完Hadoop后一起拷贝

    在开始第八步之前建议用VMware拍摄下master的快照,保存下当前的状态,因为后面容易出错,不然还得从头再来。。。

    • 第八步:安装Hadoop、配置Hadoop

    Hadoop版本:hadoop-2.10.1.tar.gz
    (1)解压hadoop-2.10.1.tar.gz到/usr/local下
    参照jdk的解压方法,将其解压到/usr/local路径下

    (2)配置环境变量
    master终端:vi /etc/profile
    在文件末尾添加以下信息:
    export HADOOP_HOME=/usr/local/hadoop-2.10.1
    export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
    截屏2020-12-14 下午7.55.36.png
    保存退出,继续输入使刚才的更改生效:source /etc/profile

    (3)配置hadoop
    首先进入配置路径看看
    master终端:cd /usr/local/hadoop-2.10.1/etc/hadoop/
    master终端:ls
    截屏2020-12-14 下午8.02.29.png
    我们需要对红线标注的文件修改(mapred-site.xml你可能没有,下面再说)

    • master终端:vi hadoop-env.sh

    添加export JAVA_HOME=/usr/local/jdk1.8.0_144到下图位置
    截屏2020-12-14 下午8.25.46.png

    • master终端:vi yarn-env.sh

    添加export JAVA_HOME=/usr/local/jdk1.8.0_144到下图位置
    截屏2020-12-14 下午8.28.40.png

    • 先创建个temp文件夹,master终端:mkdir /usr/temp2

    master终端:vi core-site.xml
    末尾添加以下代码,将原来的标签删掉


    fs.defaultFS
    hdfs://master:9000


    io.file.buffer.size
    131072


    hadoop.tmp.dir
    file:/usr/temp


    hadoop.proxyuser.root.hosts
    *


    hadoop.proxyuser.root.groups
    *


    **

    • 先创建个data文件夹,master终端:mkdir /usr/dfs

      1. master终端:**mkdir /usr/dfs/data**<br />master终端:**vi hdfs-site.xml**<br />末尾添加以下代码,将原来的<configuration></configuration>标签删掉<br />**<configuration>**<br />** <property>**<br />** <name>dfs.namenode.secondary.http-address</name>**<br />** <value>master:9001</value>**<br />** </property>**<br />** <property>**<br />** <name>dfs.namenode.name.dir</name>**<br />** <value>file:/usr/dfs/name</value>**<br />** </property>**<br />** <property>**<br />** <name>dfs.datanode.data.dir</name>**<br />** <value>file:/usr/dfs/data</value>**<br />** </property>**<br />** <property>**<br />** <name>dfs.replication</name>**<br />** <value>2</value>**<br />** </property>**<br />** <property>**<br />** <name>dfs.webhdfs.enabled</name>**<br />** <value>true</value>**<br />** </property>**<br />** <property>**<br />** <name>dfs.permissions</name>**<br />** <value>false</value>**<br />** </property>**<br />** <property>**<br />** <name>dfs.web.ugi</name>**<br />** <value>supergroup</value>**<br />** </property>**<br />**</configuration>**<br />**
    • 缺少mapred-site.xml文件,把mapred-site.xml.template重命名

    master终端:mv mapred-site.xml.template mapred-site.xml
    master终端:vi mapred-site.xml
    末尾添加以下代码,将原来的标签删掉


    mapreduce.framework.name
    yarn


    mapreduce.jobhistory.address
    master:10020


    mapreduce.jobhistory.webapp.address
    master:19888


    **

    • master终端:vi yarn-site.xml

    末尾添加以下代码,将原来的标签删掉



    yarn.nodemanager.aux-services
    mapreduce_shuffle


    yarn.nodemanager.aux-services.mapreduce.shuffle.class
    org.apache.hadoop.mapred.ShuffleHandler


    yarn.resourcemanager.address
    master:8032


    yarn.resourcemanager.scheduler.address
    master:8030


    yarn.resourcemanager.resource-tracker.address
    master:8031


    yarn.resourcemanager.admin.address
    master:8033


    yarn.resourcemanager.webapp.address
    master:8088


    **

    • master终端:vi slaves

    注释掉localhost(前面加#),添加以下内容
    master
    slave1
    slave2

    (4)拷贝hadoop到子节点
    master终端:
    scp -r /usr/local/hadoop-2.10.1 root@slave1:/usr/local/
    master终端:
    scp -r /usr/local/hadoop-2.10.1 root@slave2:/usr/local/

    (5)拷贝配置文件profile到子节点
    master终端:scp /etc/profile root@slave1:/etc/
    master终端:scp /etc/profile root@slave2:/etc/
    在三个节点上分别执行:source /etc/profile 使之生效
    在三个节点上分别执行:hadoop version 测试是否安装
    到此配置完成,最好重启下三个节点,并保存快照。

    • 第九步:测试

    (1)格式化主节点的namenode
    root用户下,master终端:hdfs namenode -format
    截屏2020-12-15 上午12.20.03.png
    出现上图表示成功,hdfs namenode -format这个操作一般运行这一次就可以了,除非遇到问题。

    (2)启动hadoop
    master终端:start-dfs.sh
    截屏2020-12-15 上午12.21.02.png
    出现上图表示成功,中间可能要输入一次 yes

    master终端:start-yarn.sh
    截屏2020-12-15 上午12.23.00.png
    出现上图表示成功

    (3)查看jps
    root用户下,master终端:jps
    截屏2020-12-15 上午12.23.50.png
    出现上图表示成功

    root用户下,slave1终端:jps
    截屏2020-12-15 上午12.24.45.png
    出现上图表示成功

    root用户下,slave2终端:jps
    截屏2020-12-15 上午12.26.31.png
    出现上图表示成功

    (4)master节点浏览器打开http://localhost:50070/
    截屏2020-12-15 上午12.29.02.png
    此页面表示成功
    截屏2020-12-15 上午12.29.30.png
    此页面表示成功,可以看到存活节点数有3个

    (5)建立文件夹,上传个文件试一下
    root用户下,master终端:hdfs dfs -mkdir -p /test/ 建一个test文件夹
    截屏2020-12-15 上午12.34.44.png
    有个WARN ……. 临时解决办法

    master终端:cd /home/sunergao/Downloads/ 进入Downloads文件夹,里面有两个文件
    截屏2020-12-15 上午12.38.35.png
    master终端:hdfs dfs -put hadoop-2.10.1.tar.gz /test/ 把第一个文件传上去
    截屏2020-12-15 上午12.40.00.png

    回到网站,查看这个地方截屏2020-12-15 上午12.42.01.png

    点击 test 文件夹
    截屏2020-12-15 上午12.42.58.png

    点击刚刚上传的文件
    截屏2020-12-15 上午12.43.33.png

    可以看到文件分成4块,存放在不同的节点上
    截屏2020-12-15 上午12.44.48.png

    最后,可以在master终端:stop-dfs.sh
    master终端:stop-yarn.sh 停止HDFS系统

    至此Hadoop完全分布式搭建完毕————2020.12.15 00:55