VMware workstation 15player+centos7搭建Hadoop2.9.2分布式集群详细步骤

一:虚拟机

1.下载虚拟机https://www.vmware.com/cn/products/workstation-player/workstation-player-evaluation.html
2.下载centos7镜像ios文件:下载地址http://isoredirect.centos.org/centos/7/isos/x86_64
3.安装好虚拟机后如下图创建新的虚拟机:
创建新虚拟机>>选择稍后安装操作系统>>选择Linux //centos7>>设置名称…下一步完成
然后点击虚拟机设置(如下图二)使用iOS映像文件,找到并选择下载好的文件,确定,然后重启虚拟机,按照步骤安装即可,root用户密码自行设置,安装完成后如下图三,然后重启虚拟机即安装完成;
在这里插入图片描述在这里插入图片描述
在这里插入图片描述在这里插入图片描述

二:搭建前准备

因为我们是要搭建Hadoop集群,所以我们这里建三个机,由于这个版本的虚拟机没有克隆功能,所以如何进行虚拟机克隆呢?我查了一下啊,通过复制修改已经建好系统了的虚拟机的相应文件即可:具体这个网址:VMware Workstation player 克隆多个CentOS实践
如上图一,我已经建好了centos7 centos7-1 centos7-2三台机器;

1.查看IP,并固定IP(将IP修改为静态的)

通过ls命令可以查看/etc/sysconfig/network-scripts/ 目录
通过vi /etc/sysconfig/network-scripts/ ifcfg-ens33修改网卡信息,如果没有学过Linux的可以先去看看常用用的Linux命令,要注意的是不同版本的Linux系统命令有小部分不同;
在这里插入图片描述
编辑完成后,保存,然后重启network(service network restart)就行了,同理另外两台机器也是一样的,IPaddr自己设置;本人的三个虚拟机IP为:
192.168.184.184
192.168.184.185
192.168.184.186
在这里插入图片描述

2.配置java环境

2.1下载安装jdk

我们知道Hadoop是通过Java语言来编程的,所以要配置Java环境,学过java的应该知道,Java环境即jdk
安装jdk,这一步很重要,需要注意的是jdk版本问题,本人用的是jdk8,这里附上下载网址:
https://www.oracle.com/java/technologies/javase-jdk8-downloads.html

在这里插入图片描述
下载完成后需要把安装包传到虚拟机客户端中即可,传输需要借助软件,可以用大家都知道的xftp工具
这里要注意的是端口问题,远程连接用的是22号端口,所以需要先把Linux系统的22号端口打开次啊可以连接上;打开方法:输入命令iptables -I INPUT -p tcp --dport 22 -j ACCEPT,然后重启服务,service network restart;如下图,我把它放在root文件下:
在这里插入图片描述
下载链接(因为是登录账号才能下载,此页面会过期)
https://download.oracle.com/otn/java/jdk/8u241-b07/1f5b5a70bf22433b84d0e960903adac8/jdk-8u241-linux-x64.tar.gz?AuthParam=1583407894_c6dd6332089b134a77afbc40df6f5413
也可通过命令直接向Linux系统下载jdk:

yum -y install wget
wget https://download.oracle.com/otn/java/jdk/8u241-b07/1f5b5a70bf22433b84d0e960903adac8/jdk-8u241-linux-x64.tar.gz?AuthParam=1583407894_c6dd6332089b134a77afbc40df6f5413

2.2解压jdk

传输到root目录下,解压jdk:tar -zvxf jdk-8u241-linux-x64.tar.gz
在这里插入图片描述

2.3配置jdk环境变量:

输入vi /etc/profile(或vim /etc/profile 需要安装vim)添加配置如下(*记住一点 一定 要在文件最后添加!*我本人因为在其他地方添加了几次。。。一直不行。。。。入了几次坑)
在这里插入图片描述按照上述步骤对每台机器进行配置!

3.配置ssh免密登录

because:在集群中,Hadoop控制脚本依赖SSH来执行针对整个集群的操作。例如,某个脚本能够终止并重启集群中的所有守护进程。所以,需要安装SSH,但是,SSH远程登陆的时候,需要密码验证,集群中数千台计算机,数千台计算机都需要手工输入密码,这是不太现实的,所以,就需要配置SSH无密码登录
3.1 检查是否安装了ssh:输入命令which ssh简单直接,没有的话就安装yum install -y openssl openssh-server
3.2 在客户端节点创建密钥文件:输入 ls ~/.ssh,查看是否有密钥存在。没有,执行下面
创建密钥,输入以下指令: ssh-keygen -t rsa ,一直默认Enter下去;输入ls ~/.ssh,查看是否多了两个文件(id_rsa.pub和id_rsa)。
依次在各个节点创建密钥文件
3.3 将客户端节点自己的公钥写入到自己的authorized_keys中,(这里要特别注意,最好先进入~/.ssh/ 进入的命令:cd ~/.ssh)
cat ~/.ssh/id_rsa.pub >> authorized_keys或者cp ~/.ssh/id_rsa.pub authorized_keys
然后通过vi ~/.ssh/authorized_keys查看公钥是否写入到该文件
然后修改.ssh和authorized_keys的权限,输入如下命令

sudo chmod 644 ~/.ssh/authorized_keys

sudo chmod 700 ~/.ssh

然后重启ssh,centos7的重启命令是systemctl restart sshd
(查看sshd服务状态:systemctl status sshd.service
启动sshd服务:systemctl start sshd.service
重启 sshd 服务:systemctl restart sshd.service
设置服务开启自启:systemctl enable sshd.service)

注意:这里的authorized_keys文件一定要在/.ssh/下,不然就不行,注意注意注意!!!本人就是在这里入坑了,浪费了一下午时间…

3.4修改客户端节点的名称,并设置ip
这个步骤是为了方便输入和去分辨三台客户端;
hostnamectl set-hostname 【你取的名字】 这样会修改三种主机名
重启后你的hostname就变了
我这里是将一个改为wx1
另外两个为wx2和wx3
输入vim /etc/hosts 修改如下,这样在这三台主机间才能通过hostname来识别彼此 ,不需要输入长IP了
在这里插入图片描述
然后检验一下:ssh wx1
在这里插入图片描述

4.关闭防火墙

因为集群都是内网搭建的,对外还有一个服务器的,那个服务器有防火墙,由它来访问内网集群,如果内网内开启防火墙,内网集群通讯会出现很多问题。
关闭防火墙: systemctl stop firewalld.service
禁用防火墙;systemctl disable firewalld.service
查看防火墙状态:firewall-cmd --state

三、安装Hadoop

1.下载Hadoop包,

我这里用的是Hadoop2.9.2(第一次使用的2.10.0的,失败了几次,就换了)
下载地址:https://hadoop.apache.org/releases.html
在这里插入图片描述

2.解压Hadoop

2.1下载好了后,还是通过xftp传输到虚拟机,因为前面我的jdk也在root目录下,为了区分开,我把Hadoop放在home目录下,然后一样tar -zxvf hadoop-2.9.0.tar.gz 解压tar包
在这里插入图片描述2.2配置Hadoop环境变量,跟前面jdk一样,我们输入vi /etc/profile(或vim /etc/profile )添加配置如下
在这里插入图片描述
然后输入source /etc/profile运用,输入hadoop version检验是否成功
在这里插入图片描述

3.配置Hadoop相关文件

这里需要配置七个文件:core-site.xml , hdfs-site.xml , mepred-site.xml, yarn-site.xml,hadoop.env.sh、yarn-env.sh,slaves需要注意的是,因为下面的内容是我的配置,我的虚拟机节点名称为wx1,这个需要修改一下;然后就是路径问题,由于解压或其他问题肯导致Hadoop文件夹名称改变,所以一定要注意路径问题;
1.core-site.xml:

vi /home/hadoop-2.9.2/etc/hadoop/core-site.xml

<configuration> </configuration>节点中增加如下内容:

<property>
    <name>fs.default.name</name>
    <value>hdfs://wx1:9000</value>
</property>
<property>
    <name>hadoop.tmp.dir</name>
    <value>/home/hadoop-2.9.2/tmp</value>
</property>
<property>
    <name>io.file.buffer.size</name>
    <value>131702</value>
</property>

2.hdfs-site.xml

vi /home/hadoop-2.9.2/etc/hadoop/hdfs-site.xml

<configuration> </configuration>节点中增加如下内容:

<property>
    <name>dfs.namenode.name.dir</name>
    <value>file:///home/hadoop-2.9.2/dfs/name</value>
</property>
<property>
    <name>dfs.datanode.data.dir</name>
    <value>file:///home/hadoop-2.9.2/dfs/data</value>
</property>
<property>
    <name>dfs.replication</name>
    <value>1</value>
</property>
<property>
    <name>dfs.namenode.secondary.http-address</name>
    <value>wx1:50090</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>

3.mapred-site.xml

vi /home/hadoop-2.9.2/etc/hadoop/mapred-site.xml

<configuration> </configuration>节点中增加如下内容:

<property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
      <final>true</final>
</property>
<property>
 <name>mapreduce.jobtracker.http.address</name>
 <value>wx1:50030</value>
</property>
<property>
    <name>mapreduce.jobhistory.address</name>
    <value>wx1:10020</value>
</property>
<property>
    <name>mapreduce.jobhistory.webapp.address</name>
    <value>wx1:19888</value>
</property>
<property>
    <name>mapred.job.tracker</name>
    <value>http://wx1:9001</value>
</property>

4.yarn-site.xml

vi /home/hadoop-2.9.2/etc/hadoop/yarn-site.xml

<configuration> </configuration>节点中增加如下内容:

<property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
</property>
<property>     
 <name>yarn.nodemanager.auxservices.mapreduce.shuffle.class</name>
    <value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
    <name>yarn.resourcemanager.address</name>
    <value>wx1:8032</value>
</property>
<property>
   <name>yarn.resourcemanager.scheduler.address</name>
    <value>wx1:8030</value>
</property>
<property>
   <name>yarn.resourcemanager.resource-tracker.address</name>
    <value>wx1:8031</value>
</property>
<property>
    <name>yarn.resourcemanager.admin.address</name>
    <value>wx1:8033</value>
</property>
<property>
    <name>yarn.resourcemanager.webapp.address</name>
    <value>wx1:8088</value>
</property>
 <property>
   <name>yarn.resourcemanager.hostname</name>
   <value>wx1</value>
</property>
<property>
    <name>yarn.nodemanager.resource.memory-mb</name>
    <value>2048</value>
</property>

5.hadoop-env.sh和yarn-env.sh

配置/home/hadoop-2.9.2/etc/hadoop目录下hadoop-env.sh、yarn-env.sh的JAVA_HOME,jdk环境变量

vi /home/hadoop/hadoop-2.9.0/etc/hadoop/hadoop-env.sh
vi /home/hadoop/hadoop-2.9.0/etc/hadoop/yarn-env.sh

在文件中找到JAVA_HOME,取消JAVA_HOME的注释,设置为 export JAVA_HOME=/root/jdk1.8.0_241

8,slaves

配置/home/hadoop/hadoop-2.9.2/etc/hadoop目录下的slaves,删除默认的localhost,添加2个从节点:
前面提到的我的三个客户端节点名称为wx1,wx2,wx3。 wx1为主节点

vi /home/hadoop-2.9.2/etc/hadoop/slaves
 wx2
 wx3

4.复制Hadoop至从节点

将wx1服务器上配置好的Hadoop复制到各个节点对应位置上,通过scp传送:

scp -r /home/hadoop  wx2:/home/
scp -r /home/hadoop  wx3:/home/

因为Hadoop比较大,这里可能需要几分钟时间

5.启动Hadoop

在wx1主节点启动hadoop服务,各个从节点会自动启动,cd /home/hadoop-2.9.2进入/homep/hadoop-2.9.0/目录,hadoop的启动和停止都在wx1上进行;
1.初始化,输入命令:hdfs namenode -format
2.启动命令:start-all.sh
启动顺序:NameNode,DateNode,SecondaryNameNode,JobTracker,TaskTracker
3.输入jps命令查看相关信息,master上截图如下:
4.slave节点上输入jps查看:

在这里插入图片描述
5.停止命令:stop-all.sh
关闭顺序性:JobTracker,TaskTracker,NameNode,DateNode,SecondaryNameNode

6.访问页面

访问Hadoop页面,注意这两个页面是在Hadoop启动状态下访问的,然后就是防火墙要关闭,前面步骤中提到过,输入http://192.168.184.184:50070,看到如下界面:
在这里插入图片描述

输入http://192.168.184.184:8088,看到如下界面:
  在这里插入图片描述

到了这一步。如果以上页面都能实现以及jps查看的各个节点都存活,那么基本上完成了hadoop集群的搭建了!开心^ - ^


刚接触大数据的一名大学生;
如有不足之处,还望大佬指出;
如有不懂之处,欢迎评论询问;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章