1、准备环境

jdk1.8.0_91

hadoop-3.2.0.tar.gz

centos7:(在虚拟机中创建三台centos7,可以先创建好一台配置好环境,然后克隆2台出来)

      spark-master

      spark-slave-1

      spark-slave-2

最终达到的效果如下图:

hadoop官网下载winutils hadoop官网下载太慢了_spark

2、安装jdk

如果不会安装jdk,可以参考我以前写的Centos7通过yum安装JDK1.8

3、下载hadoop

官网下载hadoop太慢了,我下了7个小时,csdn上的资源太贵了,本来想传一个给大家用的,结果资源存在,不能上传,

没办法了,大家可以去官网自己下载

或者通过命令下载(也是慢的要死):wget http://archive.apache.org/dist/hadoop/core/hadoop-3.2.0/hadoop-3.2.0.tar.gz

4、安装hadoop

  1. 将文件下载下来以后,使用tar解压命令进行解压,我是在/usr/local文件夹下创建了一个hadoop文件夹,然后直接解压到/usr/local/hadoop下
    解压命令:tar -zxvf hadoop-3.2.0.tar.gz -C /usr/local/hadoop/
  2. 设置环境变量
以编辑的方式打开profile文件:
vi /etc/profile

在文件底部增加下面语句:
export HADOOP_HOME=/usr/local/hadoop/hadoop-3.2.0
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

  1. 刷新环境变量
source /etc/profile

hadoop官网下载winutils hadoop官网下载太慢了_hdfs_02

  1. 检查是否安装成功
    输入:hadoop version 发现出现如下图问题

问题:查询hadoop版本报ERROR: JAVA_HOME is not set and could not be found.

解决方法:配置hadoop-env.sh文件,修改JAVA_HOME,修改成jdk的安装路径

输入命令:vi /usr/local/hadoop/hadoop-3.2.0/etc/hadoop/hadoop-env.sh

hadoop官网下载winutils hadoop官网下载太慢了_hadoop官网下载winutils_03


在文件最后添加:export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.282.b08-1.el7_9.x86_64

hadoop官网下载winutils hadoop官网下载太慢了_spark_04


再次查询hadoop版本(成功):hadoop version

hadoop官网下载winutils hadoop官网下载太慢了_hdfs_05

 

5、创建hdfs相关目录

在“/usr/local/hadoop/hadoop-3.2.0”目录下创建hdfs相关目录(目录随便在哪了,配置的时候不要错了就行,建议直接放在hadoop目录下)

hadoop官网下载winutils hadoop官网下载太慢了_spark_06

在hdfs文件夹下创建dn,nn,tmp文件夹

dn: 指定DataNode存储目录

nn: 指定NameNode存储目录

tmp: 指定hadoop存储目录

hadoop官网下载winutils hadoop官网下载太慢了_spark_07

6、配置hadoop

    配置文件存放在/opt/hadoop/etc/hadoop中,先进入到hadoop文件夹中

   输入命令:cd /usr/local/hadoop/hadoop-3.2.0/etc/hadoop/

hadoop官网下载winutils hadoop官网下载太慢了_hadoop官网下载winutils_08

  1. 修改hadoop-env.sh
    之前解决问题的时候已经修改过了,这里就不再赘述了。
  2. 修改core-site.xml
    输入命令:vi core-site.xml,修改内容如下:
<configuration>

<!--指定hadoop存储目录-->
    <property>
        <name>hadoop.tmp.dir</name>
        <value>file:/usr/local/hadoop/hadoop-3.2.0/hdfs/tmp</value>
        <description>A base for other temporary directories.</description>
    </property>
    <property>
        <name>io.file.buffer.size</name>
        <value>131072</value>
    </property>
        <!--指定NameNode地址-->
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://spark-master:9000</value>
    </property>

</configuration>
  1. 修改hdfs-site.xml
    输入命令:vi hdfs-site.xml
<configuration>
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>file:/usr/local/hadoop/hadoop-3.2.0/hdfs/nn</value>
        <final>true</final>
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>file:/usr/local/hadoop/hadoop-3.2.0/hdfs/dn</value>
        <final>true</final>
    </property>
        <!--nn web访问地址-->
    <property>
        <name>dfs.namenode.http-address</name>
        <value>spark-master:9870</value>
    </property>
        <!--2nn web访问地址-->
    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>spark-slave-2:9868</value>
    </property>

    <property>
        <name>dfs.webhdfs.enabled</name>
        <value>true</value>
    </property>
    <property>
        <name>dfs.permissions</name>
        <value>false</value>
    </property>
</configuration>
  1. 修改mapred-site.xml
    输入命令:vi mapred-site.xml
<configuration>
<!--指定mapreduce运行在yarn上-->
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
</configuration>
  1. 修改yarn-site.xml
    输入命令:vi yarn-site.xml
<!--指定ResourcesManager地址-->
    <property>
        <name>yarn.resourcemanager.address</name>
        <value>spark-slave-1:18040</value>
    </property>
    <property>
        <name>yarn.resourcemanager.scheduler.address</name>
        <value>spark-slave-1:18030</value>
    </property>
    <property>
        <name>yarn.resourcemanager.webapp.address</name>
        <value>spark-slave-1:8088</value>
    </property>
    <property>
        <name>yarn.resourcemanager.resource-tracker.address</name>
        <value>spark-slave-1:18025</value>
    </property>
    <property>
        <name>yarn.resourcemanager.admin.address</name>
        <value>spark-slave-1:18141</value>
    </property>
<!--指定MR走shuffle-->
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    <property>
        <name>yarn.nodemanager.auxservices.mapreduce.shuffle.class</name>
        <value>org.apache.hadoop.mapred.ShuffleHandler</value>
    </property>

</configuration>

6、格式化HDFS集群

输入命令:hdfs namenode -format

7、xsync分发脚本

到这里你可以选择克隆另外2个服务器出来,或者使用xsync脚本将创建好的hadoop文件进行分发。

如果你要用xsync脚本进行分发需要先创建ssh免密码登录,可以参考我的centos7创建ssh免密登录

创建xsync文件可以参考我之前写的创建xsync文件博客进行创建,也可以直接下载我创建好的文件

分发脚本命令:xsync hadoop-3.2.0/

这样就可以将hadoop-3.2.0文件分发到其他服务器对应的位置上了

hadoop官网下载winutils hadoop官网下载太慢了_spark_09

8、启动hadoop

进入到/usr/local/hadoop/hadoop-3.2.0/sbin目录下 执行 ./start-dfs.sh 命令

发现出现以下问题:

hadoop官网下载winutils hadoop官网下载太慢了_spark_10

在/hadoop/sbin路径下:
将start-dfs.sh,stop-dfs.sh两个文件顶部添加以下参数

HDFS_DATANODE_USER=root
HDFS_DATANODE_SECURE_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root

hadoop官网下载winutils hadoop官网下载太慢了_hdfs_11

还有,start-yarn.sh,stop-yarn.sh顶部也需添加以下:

YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root

hadoop官网下载winutils hadoop官网下载太慢了_hadoop_12

先启动spark-master服务器上启动HDFS和YARN

启动hdfs 输入命令:./start-dfs.sh

hadoop官网下载winutils hadoop官网下载太慢了_hadoop官网下载winutils_13

启动yarn 输入命令:./start-yarn.sh 

hadoop官网下载winutils hadoop官网下载太慢了_hadoop_14

这是查看三个服务器的进程

hadoop官网下载winutils hadoop官网下载太慢了_spark_15

hadoop官网下载winutils hadoop官网下载太慢了_hadoop_16

hadoop官网下载winutils hadoop官网下载太慢了_hdfs_17

文章最上面的的预期结果表格对比发现

缺少了ResourcesManager进程

hadoop官网下载winutils hadoop官网下载太慢了_hadoop_18

ResourcesManager需要在spark-slave-1中进行启动

输入命令:./start-yarn.sh

hadoop官网下载winutils hadoop官网下载太慢了_hdfs_19

查看结果:

hadoop官网下载winutils hadoop官网下载太慢了_spark_20

至此hadoop集群搭建完毕