栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

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

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

搭建Hadoop集群
  • 1、 安装准备
    • 1.1、虚拟机安装
    • 1.2、 Xshell6客户端的安装
    • 1.3、虚拟机克隆
    • 1.4、 虚拟机网络配置
  • 2、 分布式环境搭建
    • 2.1、权限设置
    • 2.2 、配置环境变量
    • 2.3、hadoop文件配置
    • 2.4、ssh服务配置
  • 3、 启动Hadoop集群
    • 3.1、格式化集群
    • 3.2、启动集群

1、 安装准备 1.1、虚拟机安装

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

(1)下载并安装好VMware Workstation虚拟软件工具

(2)创建新的虚拟机,选择好操作系统和安装位置,并完成命名

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


(4)完成安装

(5)选择虚拟机镜像文件

(6)启动虚拟机


(7)完成一些基础设置

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


(9)选择时间

(10)设置密码

到此,虚拟机安装完毕。

1.2、 Xshell6客户端的安装

Xshell6客户端的作用:

  • 用于上传文件到虚拟机

Xshell6客户端下载:

Xshell资源下载(已更新链接,可下载):
点击传送门
提取码:wuk3


(1)双击下载好的Xshell6.exe,打开安装界面:

点击下一步:

点击下一步:

(2)选择安装路径,点击下一步:

(3)选择程序文件,点击安装:

(4)等待安装完成:

1.3、虚拟机克隆

(1)在虚拟机关机状态选择创建完整克隆

(2)虚拟机命名


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


最后,集群搭建所需要的三台虚拟机便克隆好了

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

1.4、 虚拟机网络配置

(1)配置Linux系统网络

(2)打开master主机,以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文件吧!
我把完整的文件直接拿出来:

[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

copy一下,可以直接替换使用。

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


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

	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

	
	
	
	fs.defaultFS
	hdfs://master:9000
	
	
	
	hadoop.tmp.dir
	/home/hadoop/hadoop/datas
	
	

v.hdfs-site.xml:

	
	
	dfs.replication
	1
	
	
	dfs.permissions
	false
	
	

vi.yarn-site.xml:

	
	
	
	yarn.nodemanager.aux-services
	mapreduce_shuffle
	
	
	yarn.resourcemanager.address
	master:18040
	
	
	yarn.resourcemanager.scheduler.address
	master:18030
	
	
	yarn.resourcemanager.resource-tracker.address
	master:18025
	
	
	yarn.resourcemanager.admin.address
	master:18141
	
	
	yarn.resourcemanager.webapp.address
	master:18088
	 
	

vii.mapred-site.xml.template

	
	
	
	
	mapreduce.framework.name
	yarn
	
	


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下

	 
	
	
	dfs.replication
	3
	
	


⑦完成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也开起了;

码字不易,喜欢的话,欢迎收藏关注!
后面会不定期更新博客。
有问题欢迎一起学习交流!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/336310.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号