hadoop-3.2.0分布式环境搭建--详细教程

手把手教大家使用hadoop-3.2.0搭建MapReduce分布式环境

笔者使用VMware-workstation15+CentOS7+hadoop-3.2.0+jdk1.8.0_11,在本机使用虚拟机搭建了一主两从三个结点。话不多说,上干货。

  1. 下载WMwork15,并安装,如需破解,请百度一个注册码即可,至于hadoop,jdk和CentOS7,大家也可以在网上自行下载,这里就不赘述。

  2. 打开WMwork15,并新建虚拟机,
    hadoop-3.2.0分布式环境搭建--详细教程_第1张图片
    下一步:
    hadoop-3.2.0分布式环境搭建--详细教程_第2张图片
    下一步:
    hadoop-3.2.0分布式环境搭建--详细教程_第3张图片
    【注】主节点一般命名为namenode.安装位置不要选在C盘,虚拟机很占空间。
    下一步:
    hadoop-3.2.0分布式环境搭建--详细教程_第4张图片
    下一步:
    hadoop-3.2.0分布式环境搭建--详细教程_第5张图片
    【注】这里点击自定义硬件可以修改虚拟机的设置,笔者在这里把主节点的内存设置为了2048MB

  3. 对CentOS7的设置:
    hadoop-3.2.0分布式环境搭建--详细教程_第6张图片
    对系统模块进行点击设置
    hadoop-3.2.0分布式环境搭建--详细教程_第7张图片
    hadoop-3.2.0分布式环境搭建--详细教程_第8张图片
    【注】在这里选择带界面的安装还是简单安装,笔者将主节点的安装设置带操作界面的模式。

下一步:进行网络设置,点击wmwork的编辑–虚拟网络编辑器。选择NAT模式:
hadoop-3.2.0分布式环境搭建--详细教程_第9张图片
【注】为保证虚拟机和宿主机处于同一网段中(只有这样才能 ping 通),设置网卡地址与 VMne8t 同网段,故虚拟机的 IP 地址应设为 192.168.137.x,这里设置为 192.168.137.130。 点击“NAT 设置”,查看网关 IP,一般为 xxx.xxx.xxx.2,这里设置为 192.168.137.2
hadoop-3.2.0分布式环境搭建--详细教程_第10张图片
再对centos7的网络进行设置:
hadoop-3.2.0分布式环境搭建--详细教程_第11张图片
hadoop-3.2.0分布式环境搭建--详细教程_第12张图片
【注】注意修改主机名,如若忘记,安装完成后也可修改

hadoop-3.2.0分布式环境搭建--详细教程_第13张图片
hadoop-3.2.0分布式环境搭建--详细教程_第14张图片
【注】创建完成后,安静等待一会儿。

安装完成后,以 root 用户登录,关闭防火墙,并禁止开机启动防火墙。这样能省很多麻烦。

[root@namenode ~]# systemctl stop firewalld.service 
[root@namenode ~]# systemctl disable firewalld.service 

测试网络连通性: 在本机使用cmd等ping一下
hadoop-3.2.0分布式环境搭建--详细教程_第15张图片
【注】如果返回结果如图所示就说明网络配置成功。当然,也可以在虚拟机中ping宿主机。
若ping不通,查看虚拟机的防火墙是否关闭,宿主机的防火墙也可在控制面板中关闭。

3.1 对从节点进行安装设置
hadoop-3.2.0分布式环境搭建--详细教程_第16张图片
hadoop-3.2.0分布式环境搭建--详细教程_第17张图片
hadoop-3.2.0分布式环境搭建--详细教程_第18张图片

hadoop-3.2.0分布式环境搭建--详细教程_第19张图片
关闭防火墙等
3.2 第二个从节点既可以通过克隆实现,也可以通过手动再安装一遍,如若害怕出错,笔者推荐手动再安装一次。但是笔者在这里介绍一个克隆的方法。

关闭虚拟机 datanode1,选择菜单栏中的“虚拟机”——>“管理”——>“克隆”。 克隆类型选择“创建完整克隆”

hadoop-3.2.0分布式环境搭建--详细教程_第20张图片
hadoop-3.2.0分布式环境搭建--详细教程_第21张图片
更改虚拟机的MAC地址

datanode1: HWADDR=00:0C:29:F6:EA:26 
datanode2: HWADDR=00:50:56:32:A1:9A 

地址与被克隆的虚拟机不重复即可。

以 root 用户登录,更改新建主机的 hostname

[root@datanode1 ~]# vi /etc/hostname 

将原有的 datanode1 改为 datanode2。
更改 datanode2 的 IP 配置,其中 eno16777736 是 CentOS 7 默认的网卡名称(7 之 前的版本默认名称为 eth0)。

[root@datanode1~]#vi/etc/sysconfig/network-scripts/ifcfg-eno16777736 IPADDR="192.168.137.132

关闭防火墙。

4.建立三个结点的ssh免密互访,
笔者使用的XShell连接工具,大家也可使用 SecureCRT
hadoop-3.2.0分布式环境搭建--详细教程_第22张图片
hadoop-3.2.0分布式环境搭建--详细教程_第23张图片
双击,并输入普通用户的账号密码进行登录,成功如下图所示
登录成功
同理,建立其他两个连接即可

	以 root 用户登录 namenode,修改/etc/hosts 文件。 将原有的内容注释,并改为以下内容
192.168.137.130 namenode 
192.168.137.131 datanode1 
192.168.137.132 datanode2 

将/etc/hosts 文件拷贝至另两台虚拟机中。

[root@namenode ~]# scp /etc/hosts root@192.168.137.131:/etc/hosts 
[root@namenode ~]# scp /etc/hosts root@192.168.137.132:/etc/hosts 

hadoop-3.2.0分布式环境搭建--详细教程_第24张图片
分别在 namenode、datanode1、datanode2 虚拟机中,使用 hadoop 用户登录,生成 密钥对。

[trs@namenode ~]$ ssh-keygen -t rsa 

中途采用默认值(需按三次“回车”)。
hadoop-3.2.0分布式环境搭建--详细教程_第25张图片
同理,在datanode1和datanode2中执行相同的操作。
此时,在/home/trs(你的用户名)/.ssh/目录下分别生成一个私钥 id_rsa 和一个公钥 id_rsa.pub。

分别以 trs用户(普通用户)登录 datanode1 和 datanode2,复制主节点 namenode 的公钥文件 至从节点 datanode1 和 datanode2。

[trs@datanode1 ~]$ scp /home/trs/.ssh/id_rsa.pub trs@namenode:/home/hadoop/.ssh/id_rsa.pub.datanode1
[trs@datanode2 ~]$ scp /home/trs/.ssh/id_rsa.pub trs@namenode:/home/hadoop/.ssh/id_rsa.pub.datanode2
[trs@namenode ~]$ cd /home/trs/.ssh/ 
[trs@namenode .ssh]$ cat id_rsa.pub >> authorized_keys 
[trs@namenode .ssh]$ cat id_rsa.pub.datanode1 >> authorized_keys 
[trs@namenode .ssh]$ cat id_rsa.pub.datanode2 >> authorized_keys 
[trs@namenode .ssh]$ chmod 600 ~/.ssh/authorized_keys 

这一步就是将三个结点的ssh公钥导入到namenode的authorized_keys 文件中,
【注】一定要对authorized_keys 进行赋权。
再将这个文件拷贝到其他两个文件中

[trs@namenode .ssh]$ scp ~/.ssh/authorized_keys trs@datanode1:/home/trs/.ssh/authorized_keys 
[trs@namenode .ssh]$ scp ~/.ssh/authorized_keys trs@datanode2:/home/trs/.ssh/authorized_keys 

说明:[hadoop@namenode ~]$ ssh-keygen -t rsa 这个命令将为 namenode 上的用 户 hadoop 生成其密钥对,询问其保存路径时直接回车采用默认路径,当提示要为生成的密钥输入 passphrase 的时候,直接回车,也就是将其设定为空密码。 生成的密钥对 id_rsa, id_rsa.pub,默认存储在/home/hadoop/.ssh 目录下然后将 id_rsa.pub 的内容复制到每个机器(也 包括本机)的/home/dbrg/.ssh/authorized_keys 文件中,如果机器上已经有 authorized_keys 这个 文件了,就在文件末尾加上 id_rsa.pub 中的内容,如果没有 authorized_keys 这个文件,直接 复制过去就行。

测试连通性

[trs@datanode1 ~]$ ssh namenode 
[trs@datanode1 ~]$ ssh datanode2 
[trs@datanode2 ~]$ exit

对三个结点进行相同测试即可

  1. 安装jdk和hadoop

    首先在/home/trs(你的用户名)下建立Hadoop目录,使用FlashFXP将jdk与hadoop3.2的安装包导入此目录中,使用如下命令进行解压

tar -zxvf jdk-8u11-linux-x64.tar.gz -C /home/trs/Hadoop
tar -zxvf hadoop-3.2.0.tar.gz -C /home/trs/Hadoop

解压后效果如图:
hadoop-3.2.0分布式环境搭建--详细教程_第26张图片
以下都是配置普通用户的环境变量,使用普通用户登录。配置jdk环境变量,执行命令

vim ~/.bash_profile

编辑该文件,内容如下:

	if [ -f ~/.bashrc ]; then
        . ~/.bashrc
	fi

	export JAVA_HOME=/home/trs/Hadoop/jdk1.8.0_11
	export JRE_HOME=/home/trs/Hadoop/jdk1.8.0_11/jre
	export CLASSPATH=.:$CLASSPATH:${JAVA_HOME}/lib:$JRE_HOME/lib
	export PATH=$JAVA_HOME/bin:$PATH:$JRE_HOME/bin

编辑完成并保存退出后,刷新上述配置,使配置立即生效:

source ~/.bash_profile

运行java或javac命令

java -version

hadoop-3.2.0分布式环境搭建--详细教程_第27张图片
配置hadoop

vi /home/trs/Hadoop/hadoop-3.2.0/etc/hadoop/hadoop-env.sh

添加以下内容

export JAVA_HOME=/home/trs/Hadoop/jdk1.8.0_11

配置环境变量:

vim ~/.bash_profile

在底部添加如下内容

export HADOOP_HOME=/home/trs/Hadoop/hadoop-3.2.0
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

是配置立即生效

source ~/.bash_profile
hadoop version

hadoop-3.2.0分布式环境搭建--详细教程_第28张图片

  1. 分布式环境的实现
    配置Hadoop环境脚本文件中的JAVA_HOME参数,路径:/home/trs/Hadoop/hadoop-3.2.0/etc/hadoop:分别在hadoop-env.sh、mapred-env.sh、yarn-env.sh文件中添加或修改如下参数
export JAVA_HOME=/home/trs/Hadoop/jdk1.8.0_11

修改core-site.xml中的内容
【注】其中的文件夹若不存在,请手动创建

<configuration>
		<property>
			<name>fs.defaultFSname>
			<value>hdfs://node178:9000value>
		property>
		<property>
			
			<name>hadoop.tmp.dirname>
			<value>/home/trs/Hadoop/hadoop-3.2.0/tmpvalue>
		property>
	configuration>

修改hdfs-site.xml文件

<configuration>
	
      <property>
         
          <name>dfs.namenode.http-addressname>
          <value>node178:50070value>
      property>
	  
      <property>
          <name>dfs.namenode.name.dirname>
          <value>file:/home/trs/Hadoop/hadoop-3.2.0/dfs/namevalue>
      property>
	  
     <property>
         <name>dfs.datanode.data.dirname>
         <value>file:/home/trs/Hadoop/hadoop-3.2.0/dfs/datavalue>
     property>
	 
     <property>
        
        <name>dfs.replicationname>
        <value>3value>
     property>
	 
     <property> 
    <name>dfs.webhdfs.enabledname> 
    <value>truevalue> 
  property>

  <property>
    <name>dfs.permissionsname>
    <value>falsevalue>
    <description>配置为false后,可以允许不要检查权限就生成dfs上的文件,方便倒是方便了,但是你需要防止误删除.description>
  property>

	configuration>

修改mapred-site.xml文件

<configuration>
      <property>
          <name>mapreduce.framework.namename>
          <value>yarnvalue> 
		  
      property>
	 
	configuration>

修改yarn-site.xml文件

<configuration>
	
	<property>
         <name>yarn.resourcemanager.hostnamename> #指定yarn的ResourceManager管理界面的地址,不配的话,Active Node始终为0
         <value>node178value>
    property>
	 
     <property>
         <name>yarn.nodemanager.aux-servicesname>  #reducer获取数据的方式
         <value>mapreduce_shufflevalue>
     property>
	
	<property>
	<name>yarn.nodemanager.vmem-check-enabledname>
	<value>falsevalue>
	<description>忽略虚拟内存的检查,如果你是安装在虚拟机上,这个配置很有用,配上去之后后续操作不容易出问题。description>
	property>
	
	configuration>

修改workers文件(其他版本的hadoop可能是slaves文件)

namdenode
datanode1
datanode2

将配置好的文件夹拷贝到datanode1、datanode2

scp -r /home/trs/Hadoop trs@datanode1:/home/trs/
scp -r /home/trs/Hadoop trs@datanode2:/home/trs/

【说明】将整个Hadoop目录拷贝到node180的trs用户目录下,包括子目录、文件

  1. 运行hadoop
    运行前需格式化目录
hdfs namenode -format

在hadoop-3.2.0/sbin目录下执行

start-all.sh

启动hadoop(stop-all.sh是停止hadoop)
使用jps命令查看正在运行的进程
namenode:
hadoop-3.2.0分布式环境搭建--详细教程_第29张图片
datanode1和datanode2:
在这里插入图片描述
出现如上内容,说明配置完成了!
【注】

  • HDFS管理首页,浏览器访问地址:
    http://192.168.137.130:50070/

  • Yarn管理页,浏览器访问地址:
    http://192.168.137.130:8088/cluster

问题总结:

  • 出现配置问题,请仔细检查三个结点中的用户名是不是和你的用户名相同
  • 从节点的hadoop没启动,请检查网络通信是否配置正确。
  • 出现了java.net.UnknownHostException: NW_PL3S_RZFX: NW_PL3S_RZFX: 未知的名称或服务。验证hostname是否正确。编辑/etc/hostname文件
	127.0.0.1       localhost
	192.168.137.130		NW_PL3S_RZFX
  • ssh免密登录设置,遇到下述问题,是./ssh文件访问权限不够,ssh-keygen -t rsa -P ‘’ -f ~/.ssh/id_rsa
    Generating public/private rsa key pair.
    Saving key “/home/trs/.ssh/id_rsa” failed: Permission denied 解决办法:
    登录root用户,赋予普通用户./ssh文件夹的访问权限

结束语
hadoop分布式环境配置是一件挺麻烦的事,希望大家保持耐心,相信自己能配置成功。
在这里感谢我的同事,上面很多内容是他的总结,他也帮助我解决了不少问题。这里贴出他的邮箱,以示感谢:[email protected]

你可能感兴趣的:(hadoop配置)