【Hadoop】伪分布式集群搭建(CentOS7)

  1. 在VMware中创建虚拟机
  2. 修改主机名、关闭防火墙、设置固定IP
  3. ssh上传jdk和hadoop安装包
  4. 配置jdk环境变量、配置hadoop
  5. 虚拟机克隆
  6. 配置ip映射和节点免密登陆
  7. 启动hadoop
  8. hadoop集群功能测试:测试HDFS、测试MapReduce

一、在vmware中创建虚拟机

这里用的VMware Workstation版本为15.0.1,CentOS操作系统版本为7.5(1804)

01.在VMware Workstation中新建虚拟机,选择【典型】安装
【Hadoop】伪分布式集群搭建(CentOS7)_第1张图片
02.选择【稍后安装操作系统】
【Hadoop】伪分布式集群搭建(CentOS7)_第2张图片
03.选择虚拟机操作系统为【Linux】,版本为【CentOS 7 64位】
【Hadoop】伪分布式集群搭建(CentOS7)_第3张图片
04.虚拟机名称改为【CentOS01】,位置自定义
【Hadoop】伪分布式集群搭建(CentOS7)_第4张图片
05.指定磁盘容量,这里默认为【20G】,虚拟磁盘拆分
【Hadoop】伪分布式集群搭建(CentOS7)_第5张图片
06.完成创建
【Hadoop】伪分布式集群搭建(CentOS7)_第6张图片
07.【编辑虚拟机设置】,选择【使用IOS映像文件】,使用在CentOS官网下载的【CentOS-7-x86_64-DVD-1804.iso】
【Hadoop】伪分布式集群搭建(CentOS7)_第7张图片

08.开启虚拟机,出现下图界面按【ENTER】进入

【Hadoop】伪分布式集群搭建(CentOS7)_第8张图片

09.选择语言为【简体中文】,点击【继续】
【Hadoop】伪分布式集群搭建(CentOS7)_第9张图片
10.【安装源】为默认;【软件选择】为【GNOME桌面】,右侧的附加选项可以根据需要进行勾选,也可以不选择,此处不进行勾选;【安装位置】为默认自动选择;可以单击【网络和主机名】选项,查看虚拟机的IP地址,开启以太网卡,使虚拟机连接上网络,也可以不进行配置,在操作系统完成安装时手动配置,此处不进行配置。
【Hadoop】伪分布式集群搭建(CentOS7)_第10张图片
【Hadoop】伪分布式集群搭建(CentOS7)_第11张图片
【Hadoop】伪分布式集群搭建(CentOS7)_第12张图片
【Hadoop】伪分布式集群搭建(CentOS7)_第13张图片
11.设置【root】密码,并创建一个名为hadoop的管理员用户
【Hadoop】伪分布式集群搭建(CentOS7)_第14张图片
【Hadoop】伪分布式集群搭建(CentOS7)_第15张图片
【Hadoop】伪分布式集群搭建(CentOS7)_第16张图片
12.安装完成后【重启】
【Hadoop】伪分布式集群搭建(CentOS7)_第17张图片
13.重启后进入初始化设置,点击【LICENSE INFORMATION】后勾选【我同意许可协议】,点击左上角【完成】,点击【完成配置】
【Hadoop】伪分布式集群搭建(CentOS7)_第18张图片
【Hadoop】伪分布式集群搭建(CentOS7)_第19张图片
14.为避免此后操作出现用户权限不够而切换身份的麻烦,此处选择以root身份登入
【Hadoop】伪分布式集群搭建(CentOS7)_第20张图片
【Hadoop】伪分布式集群搭建(CentOS7)_第21张图片
【Hadoop】伪分布式集群搭建(CentOS7)_第22张图片
15.进入图形界面,默认选择【汉语】,然后一直点击【前进】,【跳过】
【Hadoop】伪分布式集群搭建(CentOS7)_第23张图片
【Hadoop】伪分布式集群搭建(CentOS7)_第24张图片
【Hadoop】伪分布式集群搭建(CentOS7)_第25张图片
【Hadoop】伪分布式集群搭建(CentOS7)_第26张图片
【Hadoop】伪分布式集群搭建(CentOS7)_第27张图片
至此,第一台虚拟机创建成功。

二、修改主机名、关闭防火墙、设置固定IP

1.修改主机名

在分布式集群中,主机名用于区分不同的节点,并方便节点之间相互访问,因此需要修改主机的主机名。

查看主机名
hostname
执行以下命令,修改hostname文件内容,将主机名改为centos01:
vi /etc/hostname
【Hadoop】伪分布式集群搭建(CentOS7)_第28张图片
重启系统使修改生效。
reboot
注意:修改主机名需要重启才能生效。

2.关闭防火墙

集群一般都是内网搭建的,如果内网内开启防火墙,内网集群通讯会容易出现很多问题。因此需要关闭集群中每个节点的防火墙。

执行以下命令进行关闭防火墙:
systemctl stop firewalld.service
然后执行以下命令,禁止防火墙开机启动:
systemctl disable firewalld.service
【Hadoop】伪分布式集群搭建(CentOS7)_第29张图片
查看防火墙状态:
systemctl status firewalld

3.设置固定IP

为了避免后续启动操作系统后,IP地址改变了,导致本地SSH连接不上,节点间无法访问,需要将操作系统设置为固定IP,这里配centos01的IP地址为192.168.170.133

执行以下命令,修改文件ifcfg-ens33:
vi /etc/sysconfig/network-scripts/ifcfg-ens33
修改内容如下:

BOOTPROTO=static 
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
DEVICE=ens33
ONBOOT=yes#开机启用本配置
IPADDR=192.168.170.133#IP地址
NETMASK=255.255.255.0#子网掩码
GATEWAY=192.168.170.2 #默认网关,虚拟机安装的话,通常是2,也就是VMnet8的网关设置
DNS2=114.114.114.114 #DNS 配置,虚拟机安装的话,DNS就网关就行

【Hadoop】伪分布式集群搭建(CentOS7)_第30张图片

修改完成后重启网络服务:
service network restart
查看改动后的IP:
ifconfig

三、 ssh上传jdk和hadoop安装包

这里使用的工具是SSH Secure Shell Client,jdk版本jdk1.8.0_144,hadoop版本为hadoop-2.8.2

1.在虚拟机创建文件存放目录
在/opt下创建目录softwares(存软件压缩包)、modules(存软件解压包)、data(存数据),分别用于存放软件安装包、软件安装数据和其它数据:
mkdir /opt/softwares
mkdir /opt/modules
mkdir /opt/data

修改目录权限为hadoop用户:
chown -R hadoop:hadoop /opt/*
查看目录权限是否修改成功:
ll /opt
【Hadoop】伪分布式集群搭建(CentOS7)_第31张图片

2.设置本地网络,将本地VMNATE8的设置改为固定IP,与centos01在同一号段
【Hadoop】伪分布式集群搭建(CentOS7)_第32张图片
【Hadoop】伪分布式集群搭建(CentOS7)_第33张图片
【Hadoop】伪分布式集群搭建(CentOS7)_第34张图片

3.ssh上传
打开ssh,点击【Quick Connect】,配置如图
【Hadoop】伪分布式集群搭建(CentOS7)_第35张图片
输入密码连接成功后将本地jdk1.8.0_144和hadoop-2.8.2的安装包上传到centos01下的/opt/softwares目录下
【Hadoop】伪分布式集群搭建(CentOS7)_第36张图片
传输完成后在centos01输入命令ll /opt/softwares验证是否传输成功
【Hadoop】伪分布式集群搭建(CentOS7)_第37张图片

如图,上传成功。

四、配置jdk环境变量,配置hadoop

1.首先删除原有的jdk

输入rpm -qa|grep java命令查看系统已有的jdk
【Hadoop】伪分布式集群搭建(CentOS7)_第38张图片
挨个执行以下命令,将系统已有的java环境全部删除
rpm -e --nodeps \python-javapackages-3.4.1-11.el7.noarch
rpm -e --nodeps \java-1.8.0-openjdk-headless-1.8.0.161-2.b14.el7.x86_64
rpm -e --nodeps \tzdata-java-2018c-1.el7.noarch
rpm -e --nodeps \java-1.7.0-openjdk-1.7.0.171-2.6.13.2.el7.x86_64
rpm -e --nodeps \java-1.8.0-openjdk-1.8.0.161-2.b14.el7.x86_64
rpm -e --nodeps \javapackages-tools-3.4.1-11.el7.noarch
rpm -e --nodeps \ java-1.7.0-openjdk-headless-1.7.0.171-2.6.13.2.el7.x86_64

执行rpm -qa|grep java验证是否都已删除

2.解压jdk和hadoop

分别执行以下命令解压上传的jdk和hadoop-2.8.2到/opt/modules目录下
tar -zxvPf jdk-8u144-linux-x64.tar.gz -C /opt/modules/
tar -zxvPf hadoop-2.8.2.tar.gz -C /opt/modules/

3.配置jdk

修改文件/etc/profile,配置JDK环境变量:
vi /etc/profile
在文件末尾加入以下内容:

export JAVA_HOME=/opt/modules/jdk1.8.0_144
export PATH=$JAVA_HOME/bin:$PATH

【Hadoop】伪分布式集群搭建(CentOS7)_第39张图片

刷新profile文件,使修改生效。
source /etc/profile

执行java -version命令,查看是否能成功输出JDK版本信息,信息如下:
【Hadoop】伪分布式集群搭建(CentOS7)_第40张图片
至此,jdk环境变量配置成功

4.配置hadoop
4.1配置hadoop环境变量
Hadoop所有的配置文件都存在于安装目录/opt/modules/hadoop-2.8.2/etc/hadoop中,修改如下配置文件:
vi hadoop-env.sh
vi mapred-env.sh
vi yarn-env.sh

【Hadoop】伪分布式集群搭建(CentOS7)_第41张图片
三个文件分别加入JAVA_HOME环境变量,如下:

export JAVA_HOME=/opt/modules/jdk1.8.0_144

4.2配置HDFS
(1)修改配置文件core-site.xml,加入以下内容:


   
	 fs.defaultFS
	 hdfs://centos01:9000
   
    
        hadoop.tmp.dir
        file:/opt/modules/hadoop-2.8.2/tmp
     

【Hadoop】伪分布式集群搭建(CentOS7)_第42张图片
fs.defaultFS:HDFS的默认访问路径。
hadoop.tmp.dir:Hadoop临时文件的存放目录,可自定义。

(2)修改配置文件hdfs-site.xml,加入以下内容:


   
	  dfs.replication
	  2
	
    
	  dfs.permissions.enabled
	  false
	
	
	  dfs.namenode.name.dir
	  file:/opt/modules/hadoop-2.8.2/tmp/dfs/name
	
	
	  dfs.datanode.data.dir
	  file:/opt/modules/hadoop-2.8.2/tmp/dfs/data
	

【Hadoop】伪分布式集群搭建(CentOS7)_第43张图片

dfs.replication:文件在HDFS系统中的副本数。
dfs.namenode.name.dir:HDFS名称节点数据在本地文件系统的存放位置。
dfs.datanode.data.dir:HDFS数据节点数据在本地文件系统的存放位置。

(3)修改slaves文件,配置DataNode节点。slaves文件原本无任何内容,需要将所有DataNode节点的主机名都添加进去,每个主机名占一整行。本次搭建过程,DataNode为三个节点:

centos01
centos02
centos03

4.3配置YARN

(1)重命名mapred-site.xml.template文件为mapred-site.xml,修改mapred-site.xml文件
mv mapred-site.xml.template mapred-site.xml
vim mapred-site.xml

添加以下内容,指定以yarn集群方式运行。

  
      
       mapreduce.framework.name  
       yarn 
     

【Hadoop】伪分布式集群搭建(CentOS7)_第44张图片

(2)修改yarn-site.xml文件,添加以下内容:

  
      
       yarn.nodemanager.aux-services  
       mapreduce_shuffle  
         

【Hadoop】伪分布式集群搭建(CentOS7)_第45张图片

yarn.nodemanager.aux-services :NodeManager上运行的附属服务。需配置成mapreduce_shuffle才可运行MapReduce程序。

五、虚拟机克隆

1.将centos01关机,右键【centos01】,选择菜单栏中的【管理】,点击【克隆】,克隆centos01的当前状态,点击【下一步】
【Hadoop】伪分布式集群搭建(CentOS7)_第46张图片
2.点击【创建完整克隆】,下一步
【Hadoop】伪分布式集群搭建(CentOS7)_第47张图片
3.自定义名称为centos02,自定义安装位置,点击【完成】
【Hadoop】伪分布式集群搭建(CentOS7)_第48张图片
centos03的克隆同centos02

六、配置IP映射和节点间免密登录

启动三台虚拟机,均以root身份登入。

将主机centos02的主机名改为centos02,将主机centos03的主机名改为centos03,重启生效。
使用ifconfig命令查看三台虚拟机的IP,并将centos02与centos03的IP分别改为固定IP。本次搭建三台主机IP分别为:
192.168.170.133
192.168.170.134
192.168.170.135

1.配置IP映射
在各个节点上分别执行以下命令,修改hosts文件:
vi /etc/hosts
在hosts文件中加入以下内容:

192.168.170.133       centos01  
192.168.170.134       centos02  
192.168.170.135       centos03  

每个节点的hosts文件中都要加入同样的内容,这样可以保证每个节点都可以通过主机名访问到其它节点。
配置完后,使用ping命令检查是否配置成功:
ping centos01
ping centos02
ping centos03

最后,配置一下本地Windows系统的主机IP映射,方便本地通过主机名直接访问虚拟机。进入Windows操作系统的目录C:\Windows\System32\drivers\etc编辑hosts文件,加入以下内容:

192.168.170.133 centos01
192.168.170.134 centos02
192.168.170.135 centos03

2.配置各节点间免密登录

Hadoop的进程间通信使用SSH(Secure Shell)方式。SSH是一种通信加密协议,使用非对称加密方式,可以避免网络窃听。为了使Hadoop各节点之间能够无密码相互访问,需要配置各节点的SSH无秘钥登录。

【登录原理】
使用一种被称为"公私钥"认证的方式来进行ssh登录. "公私钥"认证方式简单的解释是首先在客户端上创建一对公私钥 (公钥文件:~/.ssh/id_rsa.pub; 私钥文件:/.ssh/id_rsa)然后把公钥放到服务器上(~/.ssh/authorized_keys), 自己保留好私钥当ssh登录时,ssh程序会发送私钥去和服务器上的公钥做匹配.如果匹配成功就可以登录了
【Hadoop】伪分布式集群搭建(CentOS7)_第49张图片
ssh-copy-id命令可以把本地主机的公钥复制并追加到远程主机的authorized_keys文件中,ssh-copy-id命令也会给远程主机的用户主目录(home)和~/.ssh, 和~/.ssh/authorized_keys设置合适的权限。

若没有cd ~/.ssh/目录,请先执行一次ssh localhost
分别在三个节点中执行以下命令,生成秘钥文件:
ssh-keygen -t rsa
生成秘钥文件时,会有提示,都按回车就可以

分别在三个节点中执行以下命令,将公钥信息拷贝并追加到对方节点的授权文件authorized_keys中:
ssh-copy-id centos01
ssh-copy-id centos02
ssh-copy-id centos03

测试centos01无秘钥登录centos02和centos03
ssh centos02
ssh centos03

【Hadoop】伪分布式集群搭建(CentOS7)_第50张图片

不用输入密码则配置免密登录成功
centos02和centos03的测试方法与centos01相同

七、启动hadoop

启动Hadoop之前,需要先格式化NameNode。格式化NameNode可以初始化HDFS文件系统的一些目录和文件,在centos01节点上执行以下命令,进行格式化操作:
vim /etc/profile
追加内容:

export HADOOP_HOME=/opt/modules/hadoop-2.8.2
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

【Hadoop】伪分布式集群搭建(CentOS7)_第51张图片
刷新生效
source /etc/profile

然后可以在任意目录下执行以下命令:
hadoop namenode -format

格式化成功后,在centos01节点上执行以下命令,启动Hadoop集群:
start-all.sh

也可以执行start-dfs.shstart-yarn.sh分别启动HDFS和YARN集群。

在各个节点执行命令jps查看各节点启动进程,各节点结果显示如下,则hadoop集群启动成功。

centos01
【Hadoop】伪分布式集群搭建(CentOS7)_第52张图片
centos02
【Hadoop】伪分布式集群搭建(CentOS7)_第53张图片
centos03
【Hadoop】伪分布式集群搭建(CentOS7)_第54张图片

八、hadoop集群功能测试:测试HDFS、测试MapReduce

1.测试HDFS

访问网址:http://192.168.170.133 :50070可以查看HDFS的NameNode信息,界面如下:
【Hadoop】伪分布式集群搭建(CentOS7)_第55张图片
2.测试MapReduce

在centos01节点的HDFS根目录创建文件夹input,并将Hadoop安装目录下的文件README.txt上传到新建的input文件夹中。命令如下:
hdfs dfs -mkdir /input
hdfs dfs -put /opt/modules/hadoop-2.8.2/README.txt /input

运行Hadoop自带的MapReduce单词计数程序,统计/input文件夹中的所有文件的单词数量:
hadoop jar /opt/modules/hadoop-2.8.2/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.8.2.jar wordcount /input /output
统计完成后,执行以下
【Hadoop】伪分布式集群搭建(CentOS7)_第56张图片

如果以上测试没有问题,则Hadoop集群搭建成功。

你可能感兴趣的:(【Hadoop】伪分布式集群搭建(CentOS7))