1 安装三台虚拟机
1.1 单机模式(standalone)
单机模式是Hadoop的默认模式。当首次解压Hadoop的源码包时,Hadoop无法了解硬件安装环境,便保守地选择了最小配置。在这种默认模式下所有3个XML文件均为空。当配置文件为空时,Hadoop会完全运行在本地。因为不需要与其他节点交互,单机模式就不使用HDFS,也不加载任何Hadoop的守护进程。该模式主要用于开发调试MapReduce程序的应用逻辑。
1.2 伪分布模式(Pseudo-Distributed Mode)
伪分布模式在“单节点集群”上运行Hadoop,其中所有的守护进程都运行在同一台机器上。该模式在单机模式之上增加了代码调试功能,允许你检查内存使用情况,HDFS输入输出,以及其他的守护进程交互。简单的说就是主从都是一台机器,修改主机名即可,在hosts文件中进行主机的注册(tips:如果不注册在启动Hadoop时候报错),之后就是集群操作,只不过在workers不同而已
1.3 全分布模式(Fully Distributed Mode)
Hadoop守护进程运行在一个集群上。以下搭建为纯分布式集群搭建
1.4 配置完成三台虚拟机
这三台虚拟机只配置了jdk,固定ip,配置hosts,主机名
2 Hadoop的安装与配置
其实每一个节点的安装和配置是相同的。实际工作中,通常在Master上完成安装和配置后,然后将安装目录复制到其他节点即可。这里的所有操作都使用普通用户权限。
2.1 解压Hadoop安装包
http://www.apache.org/dyn/closer.cgi/hadoop/common/hadoop-3.1.0/hadoop-3.1.0.tar.gz是下载Hadoop 3.1压缩包的官方地址。读者自行找到Hadoop-3.1.0.tar.gz文件,请将其复制到Master的“/home/csu”下的resources子目录内(可以直接拖曳)。注意,这里使用普通用户权限。
首先将Hadoop-3.1.0.tar.gz文件复制到安装目录的上一级目录,我们这里指定为“/home/csu”,执行“cp /home/csu/resources/hadoop-3.1.0.tar.gz ~/”命令。
按解压缩hadoop-3.1.0.tar.gz文件,屏幕上会不断显示解压过程的信息,执行成功后,系统将在csu目录下自动创建hadoop-3.1.0子目录,即Hadoop的安装目录。我们进入Hadoop的安装目录查看一下安装文件,如果显示如图4-7所示的文件列表,说明解压缩成功。
bin目录的内容:
sbin管理集群的内容:
2.2 配置Hadoop环境变量
Hadoop环境变量文件是hadoop-env.sh,它位于“~/hadoop-3.1.0/etc/hadoop”子目录下,我们只需要配置该文件的JDK路径即可。用gedit编辑器修改hadoop-env.sh文件。
在文件的前面找到“# export JAVA_HOME=”代码,将其修改为实际的JDK安装路径,即输入export JAVA_HOME=/usr/local/jdk1.8.0_171。
2.3 配置Yarn环境变量
Yarn环境变量文件是yarn-env.sh,也位于“~/hadoop-3.1.0/etc/hadoop”子目录下。对于早期版本的Hadoop,如Hadoop 2.6.0,我们需要配置该文件的JDK路径;可使用gedit编辑器修改yarn-env.sh文件和上述操作一样配置java.
Hadoop 3.1版本不需要在yarn-env.sh中配置Java路径了,因为Hodoop 3.1统一使用hadoop-env.sh中的Java路径。yarn-env.sh的其他配置可以暂时采用默认值(即目前可不编辑该文件)。
2.4 配置核心组件
Hadoop的核心组件文件是core-site.xml,也位于“~/hadoop-3.1.0/etc/hadoop”子目录下。使用gedit编辑器修改core-site.xml文件。
需要将下面的配置代码放在文件的<configuration>和</configuration >之间。
<property> <name>fs.defaultFS</name> <value>hdfs://master:9000</value> </property> <property> <name>hadoop.tmp.dir</name> <value>/home/csu/hadoopdata</value> </property>
配置完毕后,保存退出即可。
2.5 配置文件系统
Hadoop文件系统的配置文件是hdfs-site.xml,也位于“~/hadoop-3.1.0/etc/hadoop”子目录下。使用gedit编辑器修改该文件。
需要将下面的代码填充到文件的<configuration>和</configuration>之间。
<property> <name>dfs.replication</name> <value>1</value> </property>
实际上,这里的dfs.replication就是HDFS数据块的副本数。我们知道,系统的默认值为3,这意味着如果用户没有设置dfs.replication时,副本数是3。但是如果修改为1,那么修改以后的副本数就是1了。注意,把dfs.replication配置成超过3的数是没有意义的,因为HDFS的最大副本数是3。
2.6 配置yarn site.xml文件
配置yarn-site.xml文件需要将下面的代码填充到文件的<configuration>和</configuration>之间。
<property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <property> <name>yarn.resourcemanager.address</name> <value>master:18040</value> </property> <property> <name>yarn.resourcemanager.scheduler.address</name> <value>master:18030</value> </property> <property> <name>yarn.resourcemanager.resource-tracker.address</name> <value>master:18025</value> </property> <property> <name>yarn.resourcemanager.admin.address</name> <value>master:18141</value> </property> <property> <name>yarn.resourcemanager.webapp.address</name> <value>master:18088</value> </property>
2.7 配置MapReduce计算框架文件
对于早期的Hadoop,如Hadoop 2.6.0,在“~/hadoop-2.6.0/etc/hadoop”子目录下有一个mapred-site.xml.template文件,我们需要将其复制并改名,位置不变,使用的命令是“cp ~/hadoop-2.6.0/etc/hadoop/mapred-site.xml.template ~/ ~/hadoop-2.6.0/etc/hadoop/mapred-site.xml”。
但是,Hadoop 3.1则无须上述改名操作,可直接使用getit编辑器修改mapred-site.xml文件。
需要将下面的代码填充到文件的<configuration>和</configuration>之间。
<property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> <property> <name>yarn.app.mapreduce.am.env</name> <value>HADOOP_MAPRED_HOME=/home/csu/hadoop-3.1.0</value> </property> <property> <name>mapreduce.map.env</name> <value>HADOOP_MAPRED_HOME=/home/csu/hadoop-3.1.0</value> </property> <property> <name>mapreduce.reduce.env</name> <value>HADOOP_MAPRED_HOME=/home/csu/hadoop-3.1.0</value> </property>
与Hadoop 2.6.0比较,Hadoop 3.1中mapred-site.xml文件的内容增加了不少。Hadoop 2.6.0只需要上述代码中的第一个<property>和</property>之间的代码即可,但是,Hadoop 3.1则需要明确指出各个计算组件的环境变量。
2.8 配置Master中的workers文件
早期的Hadoop,如Hadoop 2.6.0,需要编辑slaves文件,该文件给出了Hadoop集群的Slave的列表。Slaves文件十分重要,因为在启动Hadoop时,系统是根据slaves文件中Slave列表启动集群的,不在列表中的Slave便不会被视为计算节点。Hadoop 3.1没有slaves文件,而改用workers文件,但作用是一样的。
采用gedit编辑器修改workers文件,如图4-21所示。
读者应当根据自己所搭建集群的实际情况来修改workers文件。例如,这里由于已经安装了slave0和slave1,并且计划将它们全部投入Hadoop集群运行,所以应当输入如下代码:
slave0 slave1
2.9 将Master上的Hadoop复制到Slave
通过复制Master上的Hadoop,能够大大提高系统部署效率。由于这里有slave0和slave1,所以要复制两次。其中一条复制命令是“scp -r /home/csu/hadoop-3.1.0 csu@slave0:~/”。
由于我们前面已经配置了免密钥登录,因此这里不用输入密钥进行认证,按下Enter键后可立即开始复制(复制需要一些时间,请耐心等待)。
至此,我们就完成了Hadoop的安装与配置。