Hadoop分布式集群环境的搭建,超详细教程

1、 安装准备

1.1、虚拟机安装

虚拟机资源下载:
点击传送门
提取码:f7fs

(1)下载并安装好VMware Workstation虚拟软件工具
在这里插入图片描述

在这里插入图片描述

(2)创建新的虚拟机,选择好操作系统和安装位置,并完成命名
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

(3)选择好处理器和内存

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

(4)完成安装
在这里插入图片描述

(5)选择虚拟机镜像文件
在这里插入图片描述

(6)启动虚拟机

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

(7)完成一些基础设置
在这里插入图片描述

在这里插入图片描述

(8)命名并完成网络配置

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

(9)选择时间
在这里插入图片描述

(10)设置密码
在这里插入图片描述

在这里插入图片描述

到此,虚拟机安装完毕。

1.2、 Xshell6客户端的安装

用于上传文件到虚拟机

Xshell资源下载:
点击传送门
提取码:419y

(1)双击下载好的Xshell6.exe,打开安装界面:
在这里插入图片描述

点击下一步:
在这里插入图片描述

点击下一步:
在这里插入图片描述

(2)选择安装路径,点击下一步:
在这里插入图片描述

(3)选择程序文件,点击安装:
在这里插入图片描述

(4)等待安装完成:
在这里插入图片描述

1.3、虚拟机克隆

(1)在虚拟机关机状态选择创建完整克隆
在这里插入图片描述

在这里插入图片描述

(2)虚拟机命名

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

在这里插入图片描述

同样的,再克隆一个虚拟机slave2

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

最后,集群搭建所需要的三台虚拟机便克隆好了
在这里插入图片描述

这里,题主克隆了三台虚拟机用于演示。

1.4、 虚拟机网络配置

(1)配置Linux系统网络
在这里插入图片描述
在这里插入图片描述

(2)打开qf1虚拟机,以root用户身份修改网卡配置

cd /etc/sysconfig/network-scripts/
vi ./ifcfg-eth0	

在这里插入图片描述

	service network restart  //重启网卡,将ip配置生效

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

Ifconfig查看网卡信息:
在这里插入图片描述

 ping 192.168.142.2      //连接网关,看是否丢包

在这里插入图片描述

 ping www.baidu.com //宿主机(window操作系统)能联网

在这里插入图片描述

(3)设置节点的局域网访问名称
查看虚拟机的主机名: hostname
设置虚拟机主机名 hostname
vi /etc/sysconfig/network

  HOSTNAME=master

在这里插入图片描述

设置局域网的虚拟机的主机名与IP地址的映射关系(当前机可以通过主机名访问对应的计算机)
vi /etc/hosts

192.168.142.110 master

在这里插入图片描述

(4)关闭防火墙

	service iptables stop //临时关闭防火墙

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

在这里插入图片描述

(5)完成插件安装

首先,安装lrzsz插件,可以通过客户端上传文件到虚拟机端

	 yum install -y lrzsz  // 要保证宿主机能联网,虚拟机能ping www.baidu.com

其次,安装update插件,保证宿主机和虚拟机之间的时间同步
yum update
安装到这里就报错了,说是url访问不了,也就是说无法访问需要下载的资源。
在这里插入图片描述

网上查阅了相关文档,有的是说网络问题,有的说是DNS问题,这两块我都检查了没发现问题,然后就应该是镜像地址这块的问题了。
查看CentOS-Base.repo文件命令:

		cat /etc/yum.repos.d/CentOS-Base.repo

果不其然(由于早就改好了,所以截图先欠着),由于默认的网址是国外的镜像,但是现在挂了,所以自然就无法访问了。

那就只能另寻它法了:

无需科学上网,点击此处即可!

这里我给的是清华镜像的网址,里面的资源都是可以访问的(亲测有效!!)

部分需要下载的资源我也贴在了下图中(访问没有报错,确实证明此镜像网站里面的资源可以下载到虚拟机中):
在这里插入图片描述
然后就动手改CentOS-Base.repo文件吧!
我把完整的文件直接拿出来:

CentOS-Base.repo

[base]
name=CentOS-$releasever - Base
#mirrorlist=http://mirrorlist.centos.org/?release=6&arch=$basearch&repo=os&infra=$infra
#baseurl=http://mirror.centos.org/centos/$6/os/$basearch/
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos-vault/6.8/os/x86_64/
gpgcheck=1
#gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
gpgkey=https://mirrors.tuna.tsinghua.edu.cn/centos-vault/6.8/os/x86_64/RPM-GPG-KEY-CentOS-6

#released updates 
[updates]
name=CentOS-$releasever - Updates
#mirrorlist=http://mirrorlist.centos.org/?release=6&arch=$basearch&repo=updates&infra=$infra
#baseurl=http://mirror.centos.org/centos/6/updates/$basearch/
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos-vault/6.8/updates/x86_64/
gpgcheck=1
#gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
gpgkey=https://mirrors.tuna.tsinghua.edu.cn/centos-vault/6.8/os/x86_64/RPM-GPG-KEY-CentOS-6

#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/extras/$basearch/
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos-vault/6.8/extras/x86_64/
gpgcheck=1
#gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
gpgkey=https://mirrors.tuna.tsinghua.edu.cn/centos-vault/6.8/os/x86_64/RPM-GPG-KEY-CentOS-6

#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/centosplus/$basearch/
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos-vault/6.8/centosplus/x86_64/
gpgcheck=1
enabled=0
#gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
gpgkey=https://mirrors.tuna.tsinghua.edu.cn/centos-vault/6.8/os/x86_64/RPM-GPG-KEY-CentOS-6

#contrib - packages by Centos Users
[contrib]
name=CentOS-$releasever - Contrib
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=contrib&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/contrib/$basearch/
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos-vault/6.8/contrib/x86_64/
gpgcheck=1
enabled=0
#gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
gpgkey=https://mirrors.tuna.tsinghua.edu.cn/centos-vault/6.8/os/x86_64/RPM-GPG-KEY-CentOS-6

可以直接替换使用。

其实就是把原先的国外镜像网址改成了清华镜像对应的网址。

接下来,就可以安装时间同步插件了:

	yum -y install ntpdate

在这里插入图片描述

ntpdate -u ntp.api.bz

在这里插入图片描述

格式化显示时间

	date "+%Y-%m-%d %H:%M:%S"

在这里插入图片描述

(6)新增一个普通的用户

	useradd  hadoop

设置用户密码

	passwd   hadoop

在这里插入图片描述

(7)同理,完成slave1和slave2的网络配置。
i.修改克隆机(slave1,slave2)的IP地址,在root用户下
删除/etc/sysconfig/network-scripts/ifcfg-eth0 文件中的物理地址
删除两行:UUID和HWADDR
修改IPADDR=IP地址
Slave1:
在这里插入图片描述
在这里插入图片描述

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

删除文件/etc/udev/rules.d/70-persistent-net.rules

	rm -rf /etc/udev/rules.d/70-persistent-net.rules

在这里插入图片描述

ii.reboot重启
iii.检查网络是否连通

	ping www.baidu.com

在这里插入图片描述

iv. 在root用户下修改克隆机的hostname

	vi /etc/sysconfig/network

把HOSTNAME=master分别修改为HOSTNAME=slave1和slave2
在这里插入图片描述
在这里插入图片描述

Reboot重启,以使主机名修改生效
在这里插入图片描述

v.以root用户将所有节点(三个虚拟机)hosts文件修改

vi /etc/hosts

	192.168.100.110 master
	192.168.100.111 slave1
	192.168.100.112 slave2

在这里插入图片描述

vi.服务器间文件拷贝命令scp
scp 本地文件(目录) 主机名:目标文件(目录)

	scp /etc/hosts  slave1:/etc/hosts
	 scp /etc/hosts  slave2:/etc/hosts

2、 分布式环境搭建

2.1、权限设置

①Linux临时提升管理员权限(sudo方法)
Root用户下进行修改:

	vi /etc/sudoers

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

②Hadoop用户下新建目录

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

③用xshell客户端,以普通用户身份登录上传架包
在这里插入图片描述

④解压jdk

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

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

	mv jdk1.8.0_161 ~/service/jdk1.8

在这里插入图片描述

⑤配置用户bin的加载环境
vi ~/.bash_profile

	PATH=$PATH:$HOME/bin
	export JAVA_HOME=/home/hadoop/service/jdk1.8/jdk1.8.0_161/
	export JRE_HOME=${JAVA_HOME}/jre
	export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
	PATH=$PATH:${JAVA_HOME}/bin

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

⑥加载修改的配置

	source ~/.bash_profile

⑦查看是否成功

	java –version

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

在这里插入图片描述

⑧完成hadoop2.7压缩包的上传,
在这里插入图片描述

⑨解压并重命令hadoop

	tar -zxvf hadoop-2.7.3.tar.gz -C ~/service/hadoop2.7/

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

		mv hadoop-2.7.3 ./hadoop2.7

在这里插入图片描述

2.2 、配置环境变量

①修改环境变量

vi ~/.bash_profile

	export JAVA_HOME=/home/hadoop/service/jdk1.8/jdk1.8.0_161/
	export JRE_HOME=${JAVA_HOME}/jre
	export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
	export PATH=$PATH:${JAVA_HOME}/bin
	export HADOOP_HOME=/home/hadoop/service/hadoop2.7/hadoop2.7.7
	export PATH=$PATH:${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin

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

②加载配置

	source ~/.bash_profile
	Hadoop version

在这里插入图片描述

2.3、hadoop文件配置

i.mapred-env.sh

	  #export JAVA_HOME=/home/y/libexec/jdk1.6.0/
	export JAVA_HOME=/home/hadoop/service/jdk1.8/jdk1.8.0_161/

在这里插入图片描述

ii.hadoop-env.sh

	export JAVA_HOME=${JAVA_HOME}改成自己的真实jdk
	export JAVA_HOME=/home/hadoop/service/jdk1.8/jdk1.8.0_161/

在这里插入图片描述

iii.yarn-env.sh,设置jdk路径:

	#some Java parameters
	#export JAVA_HOME=/home/y/libexec/jdk1.6.0/
	export JAVA_HOME=/home/hadoop/service/jdk1.8/jdk1.8.0_161/

在这里插入图片描述

iv.打开core-site.xml

	<configuration>
	<!-- HDFS的默认路径,端口9000 -->
	<property>
	<name>fs.defaultFS</name>
	<value>hdfs://master:9000</value>
	</property>
	<!-- hadoop运行时,存放数据的临时文件的路径 -->
	<property>
	<name>hadoop.tmp.dir</name>
	<value>/home/hadoop/hadoop/datas</value>
	</property>
	</configuration>

在这里插入图片描述

v.hdfs-site.xml:

	<configuration>
	<property>
	<name>dfs.replication</name>
	<value>1</value>
	</property>
	<property>
	<name>dfs.permissions</name>
	<value>false</value>
	</property>
	</configuration>

在这里插入图片描述

vi.yarn-site.xml:

	<?xml version="1.0"?>
	<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> 
	</configuration>

在这里插入图片描述

vii.mapred-site.xml.template

	<?xml version="1.0"?>
	<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
	<configuration>
	<property>
	<name>mapreduce.framework.name</name>
	<value>yarn</value>
	</property>
	</configuration>

在这里插入图片描述

2.4、ssh服务配置

①为三台虚拟机都设置SSH免密登录,在hadoop用户下

	ssh-keygen -t rsa (一些列回车)

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

在这里插入图片描述

	cp ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys

在这里插入图片描述

②以自定义角色(hadoop)登录master节点
将~/.ssh/id_rsa.pub的内容提供给slave1和slave2节点,如此当master节点操作slave1、slave2节点时可以免密操作

	ssh-copy-id -i slave1

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

	ssh-copy-id -i slave2

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

或者

	scp   ~/.ssh/authorized_keys slave1:~/.ssh/
	scp   ~/.ssh/authorized_keys slave2:~/.ssh/

③普通用户下(hadoop)修改hadoop的相关配置项
创建 datas

	mkdir ~/hadoop/datas

④修改~/service/hadoop2.7/hadoop2.7.7/etc/hadoop/slaves,添加子节点信息

	 slave1
	 slave2

在这里插入图片描述

⑤完成服务器间文件的拷贝

	scp   ~/service/hadoop2.7/hadoop2.7.7/etc/hadoop/slaves 
	slave1:  ~/service/hadoop2.7/hadoop2.7.7/etc/hadoop/slaves
	
	scp  ~/service/hadoop2.7/hadoop2.7.7/etc/hadoop/slaves 
	slave2:  ~/service/hadoop2.7/hadoop2.7.7/etc/hadoop/slaves

⑥修改hdfs配置
在目录/home/service/hadoop2.7/hadoop2.7.7/etc/hadoop/hdfs-site.xml下

	 <configuration>
	<!-- 数据文件存放的副本数,默认情况是3个 -->
	<property>
	<name>dfs.replication</name>
	<value>3</value>
	</property>
	</configuration>

在这里插入图片描述

⑦完成hdfs配置修改后,将修改后的文件拷贝到slave1和slave2中

	scp~/service/hadoop2.7/hadoop2.7.7/etc/hadoop/slaves 
	slave1:  ~/service/hadoop2.7/hadoop2.7.7/etc/hadoop/slaves
	scp  ~/service/hadoop2.7/hadoop2.7.7/etc/hadoop/slaves 
	slave2:  ~/service/hadoop2.7/hadoop2.7.7/etc/hadoop/slaves

⑧保证hadoop集群的时间同步
i.root用户下

	yum -y install ntpdate
	ntpdate -u ntp.api.bz

ii.格式化显示时间

	date "+%Y-%m-%d %H:%M:%S"

3、 启动Hadoop集群

3.1、格式化集群

在master主机中执行命令

 hadoop namenode –format

在这里插入图片描述

3.2、启动集群

 start-all.sh

 Jps

① master节点:

这里是引用

②Slave1从节点:

这里是引用

③ Slave2从节点:

这里是引用

④Jps命令:

这里是引用
我这里是少了一个nameNode结点,原因是多次格式化造成的!


tips:
解决多次格式化集群造成的问题,可以按照下面步骤来:
1、停集群

2、清空各个节点配置的hadoop tmp目录、name目录、data目录、以及hadoop logs目录

3、最后可以格式化namenode

$ hadoop namenode -format

接着在start-all启动整个集群就ok了,可以看到有6个进程在运行了,nameNode也开起了;
在这里插入图片描述

码字不易,喜欢的话,不要忘了三连一波!!!

后面会不定期更新博客。
欢迎一起学习交流!

猜你喜欢

转载自blog.csdn.net/qq_44810972/article/details/114044257