一、准备工作

  • 安装Jdk1.8,(必须)并配置JAVA_HOME环境变量;(步骤略)

二、下载安装Hadoop

本次采用Hadoop3.2.3版本

1、下载安装包,解压

  • 国内阿里云镜像下载
wget https://mirrors.aliyun.com/apache/hadoop/common/hadoop-3.2.3/hadoop-3.2.3.tar.gz
  • 任选一目录,解压
tar -xvf hadoop-3.2.3.tar.gz 
  • 解压后的目录文件
    在这里插入图片描述

2、配置文件调整

Hadoop官方推荐有三种启动方式,分别是单节点模式、伪集群模式、集群模式(生产环境使用)。本次介绍集群模式下的安装。
Hadoop2.X和3.X版本架构整体无较大改动。HDFS主要由namenode、datanode组成;YARN 主要由resourcemanager、nodemanager组成,map-reduce主要由historyserver进程组成;其中namenode、resourcemanager只能安装在单台节点上,安装的节点一般称作主节点; nodemanager、datanode一般安装在多台节点上,并称为从节点;初始化配置文件:

  • etc/hadoop/core-site.xml
    在这里插入图片描述
    示例:
	<configuration>
		<property>
			<!-- Hadoop 使用的默认文件系统的结构、主机名、端口号。该值表示使用 HDFS 文件系统,名称节点的运行于本地,并使用 9000端口  -->
		    <name>fs.defaultFS</name>
		    <value>hdfs://172.17.0.2:9000</value>
		</property>
	</configuration>

描述集群中NameNode节点的URI(包括协议、主机名称、端口号),其主机是NameNode的主机名称或IP地址,端口是NameNode监听RPC的端口,如果没有指定,默认是8020;
参见:https://developer.aliyun.com/ask/367219

注意:namenode启动时需要此参数;datanode启动时也需要此参数,且要和namenode的参数配置一样;不然集群启动会有问题;

  • etc/hadoop/hdfs-site.xml
    在这里插入图片描述
    示例:
<configuration>
	<property>
		<!-- namenode工作目录 -->
	    <name>dfs.namenode.name.dir</name>
	    <value>/data/software/hadoop-3.2.3/data/namenode</value>
	</property>
	<property>
		<!-- datanode 工作目录 -->
	    <name>dfs.datanode.data.dir</name>
	    <value>/data/software/hadoop-3.2.3/data/datanode</value>
	</property>
	<property>
		<!-- 文件块复制系数 -->
	    <name>dfs.replication</name>
	    <value>1</value>
	</property>
	<property>
	    <name>dfs.namenode.datanode.registration.ip-hostname-check</name>
	    <value>false</value>
	</property>
</configuration>

注意:如果namenode节点上,core-site.xml 中fs.defaultFS参数值是ip而不是hostname;则要在nodemanager节点上的
hdfs-site.xml配置文件中配置此参数为false:dfs.namenode.datanode.registration.ip-hostname-check,代表namenode不按照hostname解析各从节点的ip;

  • etc/hadoop/yarn-site.xml
    在这里插入图片描述在这里插入图片描述
    示例:
<configuration>
	<property>
	   <name>yarn.nodemanager.aux-services</name>
	   <value>mapreduce_shuffle</value>
	</property>
	<property>
	   <name>yarn.nodemanager.aux-services.mapreduce_shuffle.class</name>
	   <value>org.apache.hadoop.mapred.ShuffleHandler</value>
	</property>
	<property>
	   <name>yarn.resourcemanager.hostsname</name>
	   <value>172.17.0.2</value>
	</property>
	<property>
		<!-- ResourceManager ip和端口,针对每个nodemanager使用的;CC启动时,此文件这个参数要和resourcemanager所在的节点参数配置相同,不然hadoop集群发现不了其他节点nodemanager正常加入集群  -->
	   <name>yarn.resourcemanager.resource-tracker.address</name>
	   <value>172.17.0.2:8036</value>
	</property>
</configuration>

注意:对于resourcemanager节点来说,yarn.resourcemanager.resource-tracker.address参数代表yarn集群中resourcemanager节点本身的ip和端口;
对于nodemanager节点来说,此参数代表当前nodemanager节点要和哪个resourcemanager节点连接组成集群;也就是这个参数整个集群中各节点要保持一致;

  • etc/hadoop/mapred-site.xml
    在这里插入图片描述
    示例:
  • Slave File文件说明
    集群模式搭建,可利用 集群配置文件Slave File文件快速搭建集群。集群配置文件为:etc/hadoop/workers,代表集群中从节点列表;如果是集群模式下搭建,可以此文件中列出每个从节点的hostname 或ip;Hadoop Helper scripts 会使用此文件,在此文件中列出的主机上一次性执行相关命令;前提是机器之间要配置免密访问登录;

3、启动Hadoop集群

把上面配置文件分发到集群中各节点,目录结构都保持一致;要启动Hadoop集群,您需要同时启动hdfs和yarn集群

  • (单台某节点执行)初始化namenode: 第一次打开HDFS时,必须对其进行格式化。将新的分布式文件系统格式化为hdfs,并启动namenode:

    bin/hdfs namenode -format
    

    启动namenode

    bin/hdfs --daemon start namenode
    
  • (所有datanode的节点执行)启动datanode

    bin/hdfs --daemon start datanode
    
  • 【快速启动】如果在etc/hadoop/workers 文件中,配置了多台主机节点,并且各主机之间ssh访问已被打通,其他主机所有HDFS进程都可以通过实用程序脚本启动:

    sbin/start-dfs.sh
    
  • (单台主节点运行)启动yarn进程,resourcemanager, 在resourcemanager节点上

    bin/yarn --daemon start resourcemanager
    
  • (所有从节点上运行)在集群各主机节点上,启动yarn进程,nodemanager

    bin/yarn --daemon start nodemanager
    
  • 【快速启动】如果在etc/hadoop/workers 文件中,配置了多台主机节点,快速启动yarn集群:

    sbin/start-yarn.sh
    
  • (单台节点运行)使用以下命令启动MapReduce JobHistory服务器,在指定的服务器上以mapred运行:

    bin/mapred --daemon start historyserver