Centos7上搭建hadoop2.6.5详细图文教程

Centos7上搭建hadoop2.6.5详细图文教程,第1张

Centos7上搭建hadoop2.6.5详细图文教程 版本

VM 15 Pro
Centos 7
Hadoop 2.6.5
FinalShell 3.9.2.2

步骤 1. 安装虚拟机、Centos,配置网络环境
    创建虚拟机;配置网络;配置 *** 作系统;进入GUI界面配置;配置静态网络并验证网络连通性;使用FinalShell连接Centos

详细步骤:
VMWare上搭建Centos7并配置网络用FinalShell连接(详细图文教程)

2. 创建三台虚拟机并相互连通 (1)克隆虚拟机

先关闭虚拟机

鼠标右键单击Master虚拟机,点击管理里的克隆

点击下一步


创建完整克隆

完成克隆

再根据自己需求去调整Slave1的内存和磁盘大小

以此方式,再克隆出Slave2

参考文章:
虚拟机的克隆(带图详解)

(2)连通三台虚拟机网络 1)修改主机名,以Master为例
sudo vi /etc/hostname


Slave1和Slave2,分别修改为slave1和slave2

reboot重启,使主机名生效

2)根据设置的IP地址范围,规划网络


再进入centos中,修改配置主机配置文件
三个节点中都需要更改,以Master为例

[admin@master ~]$ sudo vi /etc/hosts


规划master、slave1和slave2的IP地址如上

再更改网络接口配置信息,三个节点中都需要更改,以master为例:

sudo vi /etc/sysconfig/network-scripts/ifcfg-ens33 


在Slave1和Slave2中的IPADDR分别改为192.168.44.102和192.168.44.103

再输入命令行重启网络服务:

sudo service network restart | systemctl restart network.service

验证宿主机和虚拟机之间的连通性,虚拟机上的DNS服务


正常连通,salve1和slave2的方式同上

再在FinalShell上设置三个主机的连接信息

3)关闭系统防火墙和内核防火墙

由于hadoop中的程序都是网络服务,需要监听端口,这些端口默认会被linux防火墙挡住。因此要把hadoop中的端口一个个打开,或者把防火墙关掉。由于都是内网,所以将三台虚拟机的防火墙直接全部关闭就行

    永久关闭内核防火墙
    输入命令行sudo vi /etc/selinux/config

    先临时关闭防火墙
    sudo systemctl stop firewalld

    再禁止开机启动防火墙(永久关闭)
    sudo systemctl disable firewalld

验证三台主机的连通性




三台主机网络连接正常

(3)SSH互信配置 1)三台虚拟机上生成密钥

输入su再输入密码,切换到管理员身份,进入到根目录cd ~

在三台虚拟机上生成密钥,输入ssh-keygen -t rsa,三次回车,生成密钥

注: FinalShell可在下方的命令窗口里直接发送同一条命令,给三台虚拟机,进行相同指令 *** 作。

2)Master上生成公钥(仅Master执行)

在/root/.ssh文件下生成id_dsa id_dsa.pub,在该文件下建立一个authorized_keys文件,将id_dsa.pub文件内容拷贝authorized_keys文件中,同时赋予该文件600权限“只有拥有者有读写权限”

[root@master .ssh]# cat /root/.ssh/id_rsa.pub > /root/.ssh/authorized_keys
[root@master .ssh]# ls
authorized_keys  id_rsa  id_rsa.pub
[root@master .ssh]# chmod 600 /root/.ssh/authorized_keys

资料拓展:
Linux权限详解(chmod、600、644、666、700、711、755、777、4755、6755、7755)

3)复制其他节点公钥

再复制Slave1和Slave2中的公钥(仅Maser执行):

ssh slave1 cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys
ssh slave2 cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys


执行命令后,输入yes,再输入slave1的登录密码,执行Slave2时,同方式。

4)复制公钥到其他节点

再将Master上的公钥复制到Slave1和Slave2上

scp /root/.ssh/authorized_keys root@slave1:/root/.ssh/authorized_keys
scp /root/.ssh/authorized_keys root@slave2:/root/.ssh/authorized_keys


注: scp(secure copy)基于 SSH 协议在网络之间进行安全传输的命令,其格式为“scp [参数] 本地文件 远程帐户@远程 IP 地址:远程目录”

5)免密连接测试
ssh slave1 ip addr 
ssh slave2 ip addr

拓展资料:
如何在CentOS 7上设置SSH密钥

3.安装JDK环境

注: 若不是minimal(最小化)安装的,有可能出现openjdk已安装的情况,会导致到软件冲突,我们在这里先将openjdk进 行卸载。

(1)查询是否已有jdk文件
rpm -qa|grep java


最小化安装:仅安装系统关键部件,安装最基本的程序。使之可以运行,确保开机后可以进入系统而不崩溃,不安装其他任何可扩展软件。

(2)删除已有包
rpm -e --nodeps java-1.8.0-openjdk-1.8.0.191.b12-1.el7_6.x86_64


再次检查时,已被删除

(3)上传文件

将JDK文件jdk-8u172-linux-x64.tar.gz上传到虚拟机中,因/usr/local/src仅root用户可读写,为方便后续将上传的安装都放置在此,改为777权限(三台虚拟机共同执行):

[root@master admin]# chmod 777 -R /usr/local/src

然后上传jdk-8u172-linux-x64.tar.gz

解压文件至/usr/local/src

tar -zxvf /usr/local/src/jdk-8u172-linux-x64.tar.gz -C /usr/local/src



将JDK包复制给Slave1和Slave2

scp -r  /usr/local/src/jdk1.8.0_172   root@slave1:/usr/local/src/
scp -r  /usr/local/src/jdk1.8.0_172   root@slave2:/usr/local/src/
(4)配置环境变量
[root@master hadoop-2.6.5]# vim ~/.bashrc

注: 此时修改的为root下的.bashrc进行全局变量修改

在文件后加入

export JAVA_HOME=/usr/local/src/jdk1.8.0_172
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib

再将环境变量赋值给Slave1和Slave2

[root@master admin]# scp ~/.bashrc root@slave1:~/
[root@master admin]# scp ~/.bashrc root@slave2:~/


重新载入环境

source  ~/.bashrc 

测试环境是否配置成功

java -version


JDK环境配置成功

4. 搭建hadoop2.6.5 (1)hadoop集群规划 \MasterSlave1Slave2HDFSNameNode、SecondaryNameNodeDataNodeDataNodeYARNResourceManagerNodeManagerNodeManager (2)hadoop配置文件概述

Hadoop配置文件分两类:默认配置文件和自定义配置文件,只有用户想修改某一默认配置值时,才需要修改自定义配置文件,更改相应属性值。

默认配置文件 要获取的默认文件文件存放在Hadoop的jar包中的位置[core-default.xml]hadoop-common-2.6.5.jar/ core-default.xml[hdfs-default.xml]hadoop-hdfs-2.6.5.jar/ hdfs-default.xml[yarn-default.xml]hadoop-yarn-common-2.6.5.jar/ yarn-default.xml[mapred-default.xml]hadoop-mapreduce-client-core-2.6.5.jar/ mapred-default.xml

自定义配置文件
core-site.xml、hdfs-site.xml、yarn-site.xml、mapred-site.xml四个配置文件存放在$HADOOP_HOME/etc/hadoop这个路径上,用户可以根据项目需求重新进行修改配置。 (3)上传hadoop文件

将hadoop-2.6.5.tar.gz上传到/usr/local/src,打开目录,解压hadoop安装包

[root@master ~]$ cd /usr/local/src
[root@master src]$ tar zxvf hadoop-2.6.5.tar.gz 

(4)修改hadoop-env.sh
[root@master hadoop]$ vim hadoop-env.sh

修改为export JAVA_HOME=/usr/local/src/jdk1.8.0_172

(5)修改yarn-env.sh
[root@master hadoop]$ vim yarn-env.sh

修改为export JAVA_HOME=/usr/local/src/jdk1.8.0_172

(6)修改slaves
[root@master hadoop]# vim slaves

修改为slave1和slave2

(7)修改core-site.xml(核心配置文件)
[root@master hadoop]# vim core-site.xml

修改为





        
                fs.defaultFS
                hdfs://master:9000
                指定HDFS中NameNode地址(用来指定默认的文件系统)
        
        
                hadoop.tmp.dir
                file:/usr/local/src/hadoop-2.6.5/tmp
                hadoop运行时产生临时文件的存放目录
        

(8)修改hdfs-site.xml(HDFS配置文件)
[root@master hadoop]# vim hdfs-site.xml

修改为








        
                dfs.namenode.secondary.http-address
                master:9001
                secondaryNamenode地址和端口
        
        
                dfs.namenode.name.dir
                file:/usr/local/src/hadoop-2.6.5/dfs/name
                保存FsImage镜像的目录,作用是存放hadoop的名称节点namenode里的metadata
        
        
                dfs.datanode.data.dir
                file:/usr/local/src/hadoop-2.6.5/dfs/data
                存放HDFS文件系统数据文件的目录,作用是存放hadoop的数据节点datanode里的多个数据块
        
        
                dfs.replication
                2
                block块副本数,默认值3
        

(9)配置mapred-site.xml(MapReduce配置文件)
[root@master hadoop]# cp mapred-site.xml.template mapred-site.xml
[root@master hadoop]# vim mapred-site.xml

修改为






	
		mapreduce.framework.name
		yarn
		指定运行mapreduce的环境是yarn
	
	
	
		mapreduce.jobhistory.address
		master:10020
		MR JobHistory服务器进程间通信地址
	
	
		mapreduce.jobhistory.webapp.address
		master:19888
		MR JobHistory服务器的用户界面地址
	
	
		mapreduce.jobhistory.done-dir
		/mr-history/done
		已执行完毕作业信息存储位置
	
	
		mapreduce.jobhistory.intermediate-done-dir
		/mr-history/tmp
		正在运行的作业信息存储位置
	
	
		yarn.app.mapreduce.am.staging-dir
		/mr-history/hadoop-yarn/
		MR作业在提交时所使用的临时目录, 是一个本地路径
	
	
		mapreduce.map.memory.mb
		2048
		调度器为每个map task申请的内存数,各Job也可以单独指定,如果实际使用的资源量超过该值,则会被强制杀死
	
	
		mapreduce.reduce.memory.mb
		2048
		调度器为每个reduce task申请的内存数,同map task,超出强制杀死
	
	
		mapreduce.job.reduce.slowstart.completedmaps
		0.8
		当map task完成80%时,为reduce申请资源,reduce开始进行拷贝map结果数据和做reduce shuffle *** 作,默认0.05
	

(10)配置yarn-site.xml(YARN配置文件)
[root@master hadoop]# vim yarn-site.xml 

打开文件后用gg跳转至文件首行,
再用dG指令清屏(dG为删除光标所在行以及其下所有行的内容;d为删除,G为跳转到文件末尾行;)
修改为






	
	
		yarn.log-aggregation-enable
		true
		开启日志聚合功能,开启后日志保存在hdfs上
	
	
		yarn.log-aggregation.retain-seconds
		86400
		聚合后的日志在hdfs上的保存时间,单位为秒
	
	
		yarn.log.server.url
		http://master:19888/jobhistory/logs
		日志聚合服务器URL
	
	
		yarn.nodemanager.aux-services
		mapreduce_shuffle
		NodeManager上运行的附属服务,需配置成mapreduce_shuffle,才可运行MapReduce程序
	
	
		yarn.nodemanager.aux-services.mapreduce.shuffle.class
		org.apache.hadoop.mapred.ShuffleHandler
	
	
		yarn.resourcemanager.address
		master:8032
		RM 对客户端暴露的地址。客户端通过该地址向RM提交应用程序,杀死应用程序
	
	
		yarn.resourcemanager.scheduler.address
		master:8030
		RM 对ApplicationMaster暴露的访问地址。AM通过该地址向RM申请资源、释放资源
	
	
		yarn.resourcemanager.resource-tracker.address
		master:8035
		RM 对NodeManager暴露的地址,NM通过该地址向RM汇报心跳,领取任务
	
	
		yarn.resourcemanager.admin.address
		master:8033
		RM 对管理员暴露的访问地址。管理员通过该地址向RM发送管理命令等
	
	
		yarn.resourcemanager.webapp.address
		master:8088
		RM对外web ui地址。用户可通过该地址在浏览器中查看集群各类信息
	
	
	
		yarn.nodemanager.pmem-check-enabled
		false
		是否启动一个线程检查每个任务正使用的物理内存量,如果任务超出分配值,则直接将其杀掉,默认为true
	
	
		yarn.nodemanager.vmem-check-enabled
		false
		是否启动一个线程检查每个任务正使用的虚拟内存量,如果任务超出分配值,则直接将其杀掉,默认是true
	

(11)创建临时文件和文件目录
[root@master hadoop]# mkdir /usr/local/src/hadoop-2.6.5/tmp
[root@master hadoop]# mkdir -p /usr/local/src/hadoop-2.6.5/dfs/name
[root@master hadoop]# mkdir -p /usr/local/src/hadoop-2.6.5/dfs/data

根据之前配置中规划的路径,创建临时文件和目录

(12)配置hadoop环境变量

在.bashrc中添加hadoop环境变量

[root@master hadoop-2.6.5]# vim ~/.bashrc 

添加内容

export HADOOP_HOME=/usr/local/src/hadoop-2.6.5
export PATH=$PATH:$HADOOP_HOME/bin

(13)将文件赋值给其他节点

将.bashrc文件复制到Slave1和Slave2上

[root@master hadoop-2.6.5]# scp -r ~/.bashrc root@slave1:~/
[root@master hadoop-2.6.5]# scp -r ~/.bashrc root@slave2:~/


刷新环境变量

source ~/.bashrc


将hadoop包复制到Slave1和Slave2上

scp -r /usr/local/src/hadoop-2.6.5 root@slave1:/usr/local/src/
scp -r /usr/local/src/hadoop-2.6.5 root@slave2:/usr/local/src/

5. 启动hadoop集群 (1)初始化Namenode
[root@master hadoop-2.6.5]# ./bin/hadoop namenode -format

第一次启动集群需要初始化(仅Master执行)


要保证过程不报错

(2)启动集群并检查是否正常启动 1)启动集群

在Master上启动集群

[root@master hadoop-2.6.5]# sbin/start-all.sh

正常启动:

出现上图为启动成功

* 踩坑点1:之前启动时报错


排查错误: 发现找不到slave2,但master和slave1启动正常,推测整体文件修改时应该没有大的共性错误,否则maser和slave1也无法正常启动,那么问题可能仅是在有修改有slave2内容时,填写的错误。而在整个修改过程中,仅有slaves文件涉及salve2,故问题可能在slaves中

原因:进入/usr/local/src/hadoop-2.6.5/etc/hadoop/下的slaves文件中,发现把slaves写错成salve1,更改为slave1后,启动成功

2)查看服务进程
[root@master hadoop-2.6.5]# jps



* 踩坑点2: 输入jps时,显示jps命令无法找到

排查错误: 进入到java/bin输入jps,发现可正常显示进程服务,说明没有文件损失,可能为修改环境配置文件时错误。

原因: 查看环境配置文件,发现JAVA_HOME路径有内容敲错,修改后,可直接启动jps

注: sbin/start-dfs.sh为开启hdfs,sbin/start-yarn.sh为开启yarn

3)查看集群信息状态

Master执行

[root@master hadoop-2.6.5]# hadoop dfsadmin -report


上述两个命令可正常执行显示,则说明hadoop集群正常启动

(3)修改宿主机hosts文件

进入C:WindowsSystem32driversetc,修改hosts

修改完后,可在浏览器上输入master:8088直接访问

(4)关闭hadoop
[root@master hadoop-2.6.5]# ./sbin/stop-all.sh 

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5700232.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存