Hadoop分布式集群环境的搭建(CentOS6.5-CentOS7.0)

1 准备阶段

1.1 VMware的安装

(1)VMware 有两个版本,分别是 VMware Workstation Pro 和 VMware Workstation Player。

  • Player 是免费版本,只能用于非商业用途,适合个人学习。
  • Pro 是商业版本,功能最强大,付费以后才能使用。

(2)VMware官网:https://www.vmware.com/cn.html

1.2 CentOS的安装

(1)CentOS6.5官网下载链接:https://vault.centos.org/6.5/isos/x86_64/

(2)打开VMware,单击左上角【文件】-【新建虚拟机】,即可创建虚拟机,如下图所示。
在这里插入图片描述

(3)选择【典型(推荐)】,单击【下一步】。选择【安装程序光盘映像文件( iso ) ) ,选择指定的centOS系统的.iso文件,单击【下一步】,如下图所示,就是我们为该新建的虚拟机选择的CentOS 6.5 Linux操作系统。
在这里插入图片描述

(4)填写信息单击【下一步】。注意,这里的全名指的是Linux操作系统的全称,类似于Windows操作系统也有一个全称一样,这个名字可以随意取,只要符合命名规范就行。用户名,指的是在本服务器上装Linux操作系统时需要指定一个默认的用户,随后通过这个默认的用户名才能登录操作系统,进而操作本台服务器。下面的两个文本框就是指定当前用户名的密码和确认密码,用户名或者密码都可以根据个人的喜好自定义,只要符合命名规范即可。如下图所示。

在这里插入图片描述

(5)填写虚拟机名称,选择安装位置,然后单击【下一步】按钮,如下图所示。

在这里插入图片描述

(6)我们克隆两台虚拟机,共有三台,每台占用10GB,因此需要预留30GB的磁盘大小,如下图所示。

在这里插入图片描述

(7)点击【下一步】-【完成】,进入虚拟机安装界面,如下图所示。(下图以CentOS为例)

在这里插入图片描述

(8)安装完成后点击用户名,并输入密码登录系统,如下图所示。

在这里插入图片描述
在这里插入图片描述

1.3 虚拟机的克隆

(1)克隆两台服务器:HadoopSlave和 HadoopSlave1

(2)关闭HadoopMaster服务器,在该节点单击鼠标右键,选择【管理】-【克隆】选项。

(3)保持界面中的默认选项,继续单击【下一步】按钮,选择【创建完整克隆】,单击【下一步】按钮,如下图所示。

在这里插入图片描述

(4)将虚拟机重命名为HadoopSlave ,并选择一个存储位置,单击【完成】按钮,如图下所示。

在这里插入图片描述

(5)系统会自动完成克隆,随后单击【关闭】按钮,如下图所示。

在这里插入图片描述

(6)以同样的方式再克隆出一台名为Hadoopslave1的服务器。最后可以在左侧的列表栏看到HadoopSlave和 HadoopSlave1虚拟机。至此,3台服务器创建完毕,即搭建Hadoop分布式集群的硬件环境准备完毕。

1.4 Xshell的安装

(1)安装Xshell之后,就可以通过Xshell在 Windows本地操作来远程控制Linux服务器了。Xshell下载链接:https://xshell.en.softonic.com/。(其实可以不用安装,因为可以直接把文件拖进CentOS中来)

(2)安装好Xshell后双击该图标,会出现以下界面。

在这里插入图片描述

(3)选择【文件】-【新建】,在新出现的界面(如下图所示)中的名称:处输入HadoopMaster ,表示连接的主机是HadoopMaster ,协议:SSH,主机:输入本机IP地址,端口号:默认的22 。【说明】可以自己填写,比如“连接到主机 HadoopMaster节点”,最后单击【确定】按钮。

在这里插入图片描述

​ 【注意】查找本机IP地址:在虚拟机终端窗口输入命令:ifconfig,如下图所示。

在这里插入图片描述

(4)接着会弹出SSH安全警告的弹窗,单击【接收并保存】,然后输入前面设置的用户名和密码,单击【确定】,弹出下图,则表明和远程Linux服务器连接上了。

在这里插入图片描述

1.5 虚拟机的相关配置

(1)打开前面已经安装好的虚拟机 HadoopMaster HadoopSlave和 HadoopSlave1 ,如果出现下图所示的异常提示窗口,选择【否】即可。(这是因为虚拟机在启动时默认要去连接ide1:0的设备,但此时没有,所以我们选择不连接,这不会对后面的集群搭建产生影响。)

在这里插入图片描述

(2)配置同步时钟

​ 因为计算机之间的通信和数据的传输一般都是以时间为约定条件的,所以让3台服务器的时钟保持一致非常重要。

①使用Linux命令配置,以root用户登录HadoopMaster节点的命令行,命令如下:

/usr/sbin/ntpdate cn.pool.ntp.org

②按下回车键,如果出现下图所示的命令,则表示时钟同步配置成功。

在这里插入图片描述

③再进入HadoopSlave和 HadoopSlave1节点,分别执行上述时钟同步的操作。

(3)配置主机名

​ HadoopMaster、HadoopSlave和HadoopSlave1都不是它们各自的网络主机名,这3台的网络主机名默认都是LOCALHOST 。它们的名字是重复的,因为这是它们的默认网络主机名。因此,需要改变这3台主机的名称来区分这三台主机。可根据集群的架构来命名,将这三台主机分别命名为master 、slave和 slave1 。

①将HadoopMaster节点的主机名配置为master 。

  • 以root用户身份登录HadoopMaster节点,使用vim编辑器打开network网络配置文件,命令如下:

vim /etc/sysconfig/network

  • 打开network文件,配置信息如下,将HadoopMaster节点的主机名修改为master ,命令如下:

NETWORKING=yes #启动网络

HOSTNAME=master #主机名按

  • 按下ESC键,输入:wq保存退出。

  • 确认修改生效,输入:hostname master

  • 在操作之前要关闭当前的终端,重新打开一个终端:hostname

  • 执行完命令会看到下图所示的输出。

在这里插入图片描述

②同理分别将HadoopSlave和HadoopSlave1节点的主机名分别配置为slave和slave1。

(4)使用setup命令配置网络环境

①以root用户身份登录HadoopMaster,输入命令:ifconfig 查看网络环境,如下图所示。
在这里插入图片描述

如果看到图中第四行的部分出现,即存在内网IP、广播地址和子网掩码,说明该节点的网络环境正常,不需要配置。否则,进行如下操作。

  • 在终端中执行setup命令,使用光标键移动选择【Network configuration )】,按回车键进入该项,接着使用光标键移动选择【etho 】 ,按回车键进入该项。输入各项内容,这里IP的地址需要根据自己的网络环境和局域网地址进行修改。

  • 修改完成后,退出操作界面,切换到Terminal终端,输入重启网络服务的命令:/sbin/service network restart

  • 在Terminal终端输入ifconfig检查是否修改成功。

  • 如果看到和上图所示的内容(IP不一定和图中的内容相同,根据之前的配置检验即可)则配置成功。

②同理在其余两台虚拟机中均要配置,检查。

(5)关闭防火墙

​ 在分布式集群环境中,每个节点的防火墙若不关闭,那么集群中节点之间就会受到防火墙的阻碍,无法进行通信。在分布式集群中,各个节点之间的通信,即数据同步,是频繁发生的,如果每个节点都有防火墙,那么势必会造成通信成本的大大增加,不利于集群的分布式存储和计算。

在root用户中输入如下命令:

service iptables stop #临时关闭防火墙

chkconfig iptables off && setenforce 0 #永久关闭防火墙及军用级防火墙

​ 由于有时启动终端会自动开启防火墙,因此建议永久关闭防火墙。同理在其余两台虚拟机中均要关闭防火墙。

(6)配置hosts列表

​ 配置hosts列表,就是配置服务器的主机列表,主机列表的作用是让集群中的每台服务器彼此之间都知道对方的主机名和IP地址。

①首先以root用户身份登录HadoopMaster节点,输入编辑命令vim/etc/hosts ,将下面3行代码添加到主机列表/etc/hosts文件中。(要根据自己虚拟机上的IP地址来配,可通过ifconfig命令查看)

192.168.152.131 master # IP地址和主机名
192.168.152.132 slave  # IP地址和主机名
192.168.152.135 slave1 # IP地址和主机名

②输入:wq保存退出,配置完毕。

③同理在其余两台虚拟机中均要进行配置。

④验证主机 hosts是否配置成功的分别输入如下命令:

ping master

ping slave

ping slave1

如果出现下图内容则表示配置成功。

在这里插入图片描述

⑤至此,HadoopMaster节点的主机 hosts配置成功。采用上述方法登录HadoopSlave和 HadoopSlave1节点,继续配置各自的主机 ,并验证是否配置成功。

1.6 JDK的安装

①直接把下载好的JDK压缩包(我使用的是1.8.0_202)拖到/home/cxl(根据自己设定的用户名来写)目录中。

②以root用户身份登录HadoopMaster节点,将jdk-8u202-linux-x64.tar.gz从/home/cxl目录下复制到新建的/usr/java目录下,进行解压安装,分别输入如下命令:

mkdir /usr/java

cp /home/cxl/jdk-8u202-linux-x64.tar.gz/usr/java

cd /usr/java

tar -zxvf jdk-8u202-linux-x64.tar.gz

可通过在/usr/java目录中输入ls命令,查看是否成功压缩JDK。

③输入vim /home/cxl/.bash_profile打开cxl用户的系统环境变量文件/home/cxl/.bash_profile ,在最下面输入下面两行内容:

export JAVA_HOME=/usr/java/jdk1.8.0_202
export PATH=$JAVA_HOME/bin:$PATH

如下图所示。

在这里插入图片描述

④输入:wq保存退出,如果.bash_profile文件被修改,需要通过输入source/home/ydh/.bash_profile使命令生效,此时环境变量配置生效。

⑤验证JDK安装是否成功及环境变量是否配置成功:输入命令 javac 。如果出现下图所示的信息,则说明HadoopMaster节点上 cxl用户的JDK环境变量配置成功,至此HadoopMaster节点上JDK安装成功。

在这里插入图片描述

⑥同理登录HadoopSlave和 HadoopSlave1节点,继续配置各自的JDK ,并验证是否配置成功。

1.7 免密钥登录配置

​ 免密钥登录是指从一台节点通过SSH方式登录另外一台节点时,不用输入该节点的用户名和密码,就可以直接登录进去,对其中的文件内容直接进行操作,没有任何校验和拦截。

(1)HadoopMaster节点

①在 HadoopMaster节点上,从root用户切换到cxl用户(根据自己设定的用户名来写),输入su cxl ,在终端生成密钥,输入命令:ssh-keygen -t rsa

其中,ssh-keygen是生成密钥的命令, -t rsa表示使用rsa算法进行加密。运行结果如下图所示:

在这里插入图片描述

②生成的密钥在/home/cxl/.ssh/目录下,私钥为id_rsa , 公钥为id_rsa.pub 。

③复制公钥文件到authorized_keys文件中,命令如下:

cat /home/cxl/.ssh/id_rsa.pub >> /home/cxl/.ssh/authorized_keys

④修改authorized_keys文件的权限,只有当前用户cxl有权限操作authorized_keys文件,命令如下:

chmod 600/home/cxl/.ssh/authorized_keys

输入ll命令查看文件,如下图所示。

在这里插入图片描述

⑤将HadoopMaster主节点生成的authorized_keys公钥文件复制到HadoopSlave和 HadoopSlave1从节点,命令如下:

scp /home/cxl/.ssh/authorized_keys cxl@slave:/home/cxl/.ssh/

scp /home/cxl/.ssh/authorized_keys cxl@slave1:/home/cxl/.ssh/

如果出现提示,则输入yes并按回车键,输入密码。此时, HadoopMaster节点的公钥文件信息就被复制到HadoopSlave和 HadoopSlave1节点上了。如下图所示。

在这里插入图片描述

(2)HadoopSlave节点

①以cxl用户身份登录HadoopSlave节点,进入到/home/cxl/.ssh目录,输入以下命令:

cd /home/ydh/.ssh/

ll /home/ydh/.ssh/

此时就会看到从HadoopMaster节点复制过来的authorized_keys文件在当前目录下。

②修改authorized_keys文件的权限为当前用户可读可写,输入以下命令:

chmod 600 /home/cxl/.ssh/authorized_keys

③此时,在HadoopSlave节点上就存放了HadoopMaster节点的公钥,那么HadoopMaster节点就可以以SSH方式直接登录Hadoopslave节点。

(3)HadoopSlave1节点同(2)的过程一样,就不再详述。

(4)验证免密钥登录

①在HadoopMaster节点的Terminal终端上输入以下命令验证免密钥登录:

ssh slave

在这里插入图片描述

ssh slave1

在这里插入图片描述

2 Hadoop环境搭建阶段

​ 本阶段的安装部署都是在 普通用户 的身份下完成的,下面所有的操作都使用cxl用户(根据自己设置的用户名来写),切换到cxl用户的命令是:su cxl

2.1 解压Hadoop安装文件

​ 直接把下载好的Hadoop压缩包(我使用的是2.5.2)拖到/home/cxl(根据自己设定的用户名来写)目录中。进入到cxl用户主目录,输入以下命令进行解压:

tar -zxvf hadoop-2.5.2.tar.gz

cd hadoop-2.5.2

ls -l

在这里插入图片描述

2.2 配置环境变量hadoop-env.sh

(1)输入以下命令,打开Hadoop的环境变量文件,只需要配置JDK的路径。

vim /home/cxl/hadoop-2.5.2/etc/hadoop/hadoop-env.sh

(2)在文件靠前的部分找到以下代码:

export JAVA_HOME=${JAVA_HOME}

(3)将这行代码修改为:

export JAVA_HOME=/usr/java/jdk1.8.0_202

(4)保存文件:wq, Hadoop的环境变量hadoop-env.sh配置成功,此时Hadoop具备了运行时的环境。

2.3 配置环境变量yarn-env.sh

(1)输入以下命令,打开Hadoop的YARN模块的环境变量文件yarn-env.sh ,只需要配置JDK的路径。

vim /home/cxl/hadoop-2.5.2/etc/hadoop/yarn-env.sh

(2)在文件靠前的部分找到以下代码:

export JAVA_HOME=/home/y/libexec/jdk1.6.0/

(3)将这行代码修改为:

export JAVA_HOME=/usr/java/jdk1.8.0_202

(4)保存文件:wq,Hadoop的YARN的环境变量yarn-env.sh配置成功。此时, Hadoop的YARN模块具备了运行时的环境。

2.4 配置核心组件core-site.xml

(1)输入下面的命令打开Hadoop的核心配置文件core-site.xml。

vim /home/cxl/hadoop-2.5.2/etc/hadoop/core-site.xml

(2)使用下面的代码替换core-site.xml文件中的内容。

<?xml version=1.0" encoding="UTF-8"?>
<?xm-stylesheet type="text/xsl" href="configuration.xsl"?>
<!-- Put site-specific property overrides in this file.-->
<configuration>
	<!--HDFS文件系统的入口地址信息.-->
	<property>
		<name>fs.defaultFS</name>
		<value>hdfs://master:9000</value>
	</property>
	<!--HDFS文件系统数据落地到本地磁盘的路径信息,/home/zkpk/hadoopdata该目录需要单独创建,后面将在启动hadoop集群时统一创建-->
	<property>
		<name>hadoop.tmp.dir</name>
		<value>/home/cxl/hadoopdata</value>			     </property>
</configuration>

(3)保存文件:wq ,至此,Hadoop集群的核心配置完成。

2.5 配置文件系统hdfs-site.xml

(1)输入以下命令,打开hdfs-site.xml配置文件。

vim /home/cxl/hadoop-2.5.2/etc/hadoop/hdfs-site.xml

(2)用下面的代码替换hdfs-site.xml中的内容。

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!-- Put site-specific property overrides in this file.--> 
<configuration>
	<property>
		<!--配置数据块的副因子(即副本数)2-->			    
		<name>dfs.replication</name>
		<value>2</value>
	</property>
</configuration>

(3)保存文件:wq ,至此, Hadoop集群HDFS分布式文件系统的数据块副本配置完成。

2.6 配置YARN资源系统yarn-site.xml

(1)使用以下命令打开yarn-site.xml配置文件。

vim /home/cxl/hadoop-2.5.2/etc/hadoop/yarn-site.xml

(2)用下面的代码替换yarn-site.xml中的内容。

<configuration>
	<! -- site specific YARN configuration properties
	<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>
</configuration>

(3)保存文件:wq ,至此, Hadoop集群HDFS分布式文件系统的YARN资源系统配置完成。

2.7 配置计算框架mapred-site.xml

(1)通过以下命令打开mapred-site.xml配置文件。

【注意】有可能打开此文件内容为空,不过不要紧,输入以下代码并保存退出即可。

vim /home/cxl/hadoop-2.5.2/etc/hadoop/mapred-site.xml

(2)用下面的代码替换mapred-site.xml中的内容:

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
	<!-MapReduce计算框架的资源交给YARN来管理-->
	<property>
		<name>mapreduce.framework.name</name>
		<value>yarn</value>
	</property>
</configuration>

(3)在HadoopMaster节点配置slaves

①使用以下命令打开slaves配置文件。

vim /home/cxl/hadoop-2.5.2/etc/hadoop/slaves

②用下面的内容替换slaves文件中的内容:

slave
slave1

③保存文件:wq

(4)复制到从节点

在Hadoop集群中,每个节点上的配置和安装的应用都是一样的,这是分布式集群的特性,所以,此时我们已经在HadoopMaster节点上安装了Hadoop-2.5.2的应用,只需要将此应用复制到各个从节点(即HadoopSlave节点和 HadoopSlave1节点)即可。使用下面的命令将已经配置完成的Hadoop复制到从节点HadoopSlave和 HadoopSlave1 上。

scp -r/home/cxl/hadoop-2.5.2 ydh@slave:~/

scp -r/home/cxl/hadoop-2.5.2 ydh@slave1:~/

2.8 配置Hadoop启动的系统环境变量

Hadoop集群需要通过/home/cxl/hadoop-2.5.2/sbin/start-all.sh脚本启动,如果每次都要进入这个目录下启动,非常麻烦,所以和JDK的配置环境变量一样,也要配置一个Hadoop集群的启动环境变量PATH。

(1)此配置需要都在HadoopMaster 、HadoopSlave和HadoopSlave1上进行操作,操作命令如下:

vim /home/cxl/.bash_profile

(2)将下面的代码追加到.bash_profile文件的末尾:

#Hadoop Path configuration
export HADOOP_HOME=/home/cxl/hadoop-2.5.2
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH

(3)输入:wq保存退出,并执行生效命令:

source /home/cxl/.bash_profile

(4)登录HadoopSlave和 HadoopSlave1节点,依照上述配置方法,配置Hadoop启动环境变量。

2.9 创建数据目录

(1)在HadoopMaster节点的主目录下输入以下命令创建数据目录:

mkdir /home/cxl/hadoopdata

(2)登录Hadoopslave和 HadoopSlave1节点的主目录,输入同样的命令来创建数据目录。

3 启动Hadoop集群

3.1 格式化文件系统

​ Hadoop集群包含两个基本模块:分布式文件系统HDFS和分布式并行计算框架MapReduce。启动集群时,首先要做的就是在 HadoopMaster节点上格式化分布式文件系统HDFS:

hdfs namenode -format

【注意】格式化只需要执行一次,后面启动都不要再格式化了。

3.2 启动Hadoop

(1)HDFS分布式文件格式化成功之后,就可以输入启动命令来启动Hadoop集群了。Hadoop是主从架构,启动时由主节点带动从节点,所以启动集群的操作需要在主节点HadoopMaster完成,命令如下:

cd /home/cxl/hadoop-2.5.2

sbin/start-all.sh

执行命令后,在提示处输入yes。

(2)查看进程是否启动(左侧的数字可以不和图片上的一样)

  • 在 HadoopMaster的Terminal终端执行jps命令,在打印结果中会看到4个进程,分别是ResourceManager、Jps、NameNode和 SecondaryNameNode ,如下图所示。如果出现了这4个进程,就表示主节点进程启动成功。

在这里插入图片描述

  • 在HadoopSlave的终端执行jps命令,在打印结果中会看到3个进程,分别是NodeManager、DataNode和 Jps,如下图所示。如果出现了这3个进程,就表示从节点进程启动成功。

在这里插入图片描述

  • 在HadoopSlave1的终端执行jps命令,在打印结果中会看到3个进程,分别是NodeManager 、DataNode和Jps ,如下图所示。如果出现了这3个进程,就表示从节点进程启动成功。

在这里插入图片描述

(3)web UI查看集群是否成功启动

  • 在 HadoopMaster 上启动Firefox浏览器,在浏览器地址栏中输入 http://master:50070/,检查NameNode和 DataNode是否正常,UI页面如下图所示。

在这里插入图片描述

  • 在 HadoopMaster上启动Firefox浏览器,在浏览器地址栏中输入 http://master:18088/,检查 YARN是否正常,UI页面如下图所示。

在这里插入图片描述

(4)运行PI实例检查集群是否启动成功

  • 在HadoopMaster节点上,进入hadoop安装主目录,执行下面的命令,会看到下图所示的执行结果。

    cd hadoop-2.5.2/share/hadoop/mapreduce/

    hadoop jar hadoop-mapreduce-examples-2.5.2.jar pi 10 10

在这里插入图片描述

最后输出为:

Estimated value of Pi is 3.20000000000000000000

在这里插入图片描述

如果以上验证步骤都没有问题,说明Hadoop集群已正常启动。


【注】由于写的时候时间匆忙,可能存在不少错误,欢迎指出。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BELLฅ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值