(入门教程)centos-7系统下的Hadoop3.X分布式集群配置部署

环境准备:

我的集群是三个节点,主机名分别为master slave1 slave2

主机名修改

可以用hostnamectl set-hostname

hostnamectl set-hostname master
hostnamectl set-hostname slvae1
hostnamectl set-hostname slave2

修改之后可以用bash 立即执行

bash

在三个节点分别查询一下IP地址 使用ifconfig命令

ifconfig

修改hosts文件

查看并复制三个节点的IP地址 用于修改hosts文件

vi /etc/hosts

进入hosts文件后按键盘上的i键进入编辑模式,在文件中 添加三个节点的IP和主机名

192.168.8.130 master
192.168.8.131 slave1
192.168.8.132 slave2 

按ESC键退出编辑模式 再输入:wq保存并退出文件

三个节点分别关闭防火墙

systemctl stop firewalld

同步时间

键入代码:

timedatectl set-timezone 'Asia/Shanghai'

然后三个节点分别下载ntp

yum install -y ntp

master是ntp的主服务器,在master上面修改ntp的配置文件

vi /etc/ntp.conf

在文件中添加

server 127.127.1.0
fudge  127.127.1.0  stratum  10 #stratum这个数据0-15都可以

定时服务

crontab -e

早十晚五,每隔半个小时同步一下时间

*/30 10-17 * * * /usr/sbin/ntpdate master

查询

crontab -l

重启ntp服务

/bin/systemctl restart ntpd.service

然后就是从节点同步(slave1 slave2)等个五六分钟吧 然后登录两个从节点

ntpdate master

配置SSH免密

master产生公私密钥

ssh-keygen
#一路回车就行

密钥产生的目录在用户主目录下的.ssh文件中  可以查看

cd ~/.ssh

id_dsa为私钥 id_dsa.pub为公钥 把公钥文件复制为authorized_keys文件(只在主节点的.ssh/路径下操作)

cat id_dsa.pub >> authorized_keys

 然后就可以实现ssh内回环 即可以在主节点上连接自己

ssh master

分别将.ssh文件使用scp命令传递给两个从节点

scp -r ~/.ssh root@slave1:~/
scp -r ~/.ssh root@slave2:~/

这样以后主节点就可以连接两个从节点了,在主节点键入ssh 命令#第一次登录需要输入密码

退出登录输入exit

ssh slave1
ssh slave2

第一次登录需要输入密码,之后就不需要啦 

安装jdk

安装jdk可以先在主节点进行操作,主节点安装配置好以后复制给两个从节点。首先查询一下系统是否自带有jdk

java -version

 如果提示有jdk,就键入命令卸载掉

rpm -qa | grep -i java | xargs -n1 rpm -e --nodeps

再次输入java -version查询一下是否卸载成功

把上传的jdk压缩包解压到当前目录(tar -zxvf 后面跟的就是压缩包名)

mkdir /usr/java
tar -zxvf jdk-8u212-linux-x64.tar.gz -C /usr/java

 然后配置环境变量修改profile文件

vim /etc/profile

 在文件底部加入一下内容

export JAVA_HOME=/usr/java/jdk1.8.0_212   #jdk的安装目录
export PATH=$PATH:$JAVA_HOME/bin

退出文件并执行立即生效的命令

source /etc/profile

然后可以用java -version查询一下安装结果

主节点的jdk安装好以后,可以使用scp命令复制给从节点,后面Hadoop的安装配置也是这样操作的。scp -r +jdk的路径 root@主机名:从节点准备放置jdk的目录(scp命令使用之前 记得把从节点系统自带的jdk先删除掉,和主节点操作步骤一样。

scp -r /usr/java/jdk1.8.0_212 root@slave1:/usr
scp -r /usr/java/jdk1.8.0_212 root@slave2:/usr

然后把profile文件也复制到从节点上

scp -r /etc/profile root@slave1:/etc/
scp -r /etc/profile root@slave2:/etc/

 然后分别在两个从节点上面执行立即生效命令

source /etc/profile

 操作完成以后,可以查询一下 java -version

Hadoop的配置部署

Hadoop的安装和配置部署也是现在主节点上完成操作,然后使用scp命令把配置好的环境复制到两个从节点上面去。首先在当前目录解压已经上传好的压缩包

mkdir /usr/hadoop
tar -zxvf /home/happy/hadoop-3.1.3.tar.gz -C /usr/hadoop

使用cd命令打开Hadoop文件夹

cd /usr/hadoop/hadoop-3.1.3/etc/hadoop

可以使用ll命令查询一下Hadoop文件夹里面的东西,我们要配置的文件大部分都在里面

配置环境变量hadoop-env.sh文件

hadoop-env.sh我们只需要配置jdk的路径就可以了

vim hadoop-env.sh

在文件中找到一行代码:#export JAVA_HOME=${JAVA_HOME}修改或者直接写入

export JAVA_HOME=/usr/java/jdk1.8.0_212   #配置的是你自己的jdk路径

编辑好以后wq保存并退出,Hadoop的环境变量hadoop-env.sh配置完成,此时Hadoop具备了运行时的环境

配置环境变量yarn-env.sh

YARN负责管理Hadoop集群的资源,这个模块也是用JAVA语言开发的,所以同样需要配置其运行时的环境变量jdk

vim yarn-env.sh

在文件比较靠前的部分找到#export JAVA_HOME=/home/y/..../jdk1.6.0/并修改或者直接写入

export JAVA_HOME=/usr/java/jdk1.8.0_212   #配置的是你自己的jdk路径

 编辑好以后wq保存并退出

还有mapred-env.sh文件也是写入jdk路径

配置核心组件core-site.xml

这个文件的配置是关于集群中分布式文件系统的入口地址和分布式文件系统中数据落地到服务器本地磁盘位置的。HDFS是分布式存储文件的核心系统,他的入口地址决定了Hadoop集群架构的主节点hdfs://master:9000  协议为hdfs 主机为master也就是主节点 端口号为9000

vim core-site.xml

在文件中添加一下内容

<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://master:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/hadoop/hadoop-3.1.3/hdfs/tmp</value>
</property>
</configuration>

配置hdfs-site.xml文件

这个主要是配置数据块副本个数和namenode\datanode的文件地址的,在Hadoop集群中,主节点是不存储数据副本的,所以副本都存储在从节点上面,我们这个集群是三台服务器,其中从节点是两个,所以这里的数据块副本数只能配置1或2 。具体的数据块副本这个概念关系到HDFS文件存储数据的机制,我就不做赘述了。

vim hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/hadoop/hadoop-3.1.3/hdfs/name</value>
<final>true</final>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/hadoop/hadoop-3.1.3/hdfs/data</value>
<final>true</final>
</property>
</configuration>

配置YARN资源系统yarn-site.xml

yarn是主从结构,运行在主节点上的守护进程是ResourceManager,负责整个集群资源的管理协调;运行在从节点上的守护进程是NodeManager,负责从节点本地的资源管理协调。Hadoop集群有两大核心模块:HDFS分布式文件系统和MapReduce分布式并行计算框架。MR在运行一个计算任务的时候需要集群的内存和CPU的资源,这个时候MR就会向ResourceManager申请计算需要的集群资源。下面开始配置这个yarn-site.xml

vim yarn-site.xml
<configuration>
<property>
<name>yarn.resourcemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!--yarn.resourcemanager.address是ResourceManager对客户端暴露的访问地址,客户端通过该地址向ResourceManager提交或结束MapReduce应用程序-->
<property>
<name>yarn.resourcemanager.address</name>
<value>master:18040</value>
</property>
<!--yarn.resourcemanager.scheduler.address是ResourceManager对ApplicationMaster暴露的访问地址(客户端把那个mapreduce应用程序提交到集群中,resourcemanager接受客户端应用程序的提交以后,把这个应该程序分配给某一个nodemanager,对这个mapreduce应该程序进行初始化,从而产生一个应用程序初始化JAVA对象这个产生的对象被称为ApplicationMaster)ApplicationMaster申请mapreduce应用程序在运行过程中所需要的资源,以及程序运行结束后对使用资源的释放 -->
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>master:18030</value>
</property>
<!--yarn.resourcemanager.resource-tracker.address是ResourceManager对NodeManager暴露的访问地址-->
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>master:18025</value>
</property>
<!--yarn.resourcemanager.admin.address是ResourceManager对管理员admin暴露的访问地址-->
<property>
<name>yarn.resourcemanager.resourcemanager.admin.address</name>
<value>master:18141</value>
</property>
<!--yarn.resourcemanager.webapp.address是ResourceManager YARN平台提供用户查看正在运行的MapReduce程序的进度和状态的WEB UI 系统的访问地址,可以通过这个地址在浏览器查看应用程序的运行状态-->
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>master:18088</value>
</property>
<property>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>8192</value>
</property>
<property>
<name>yarn.scheduler.minimum-allocation-mb</name>
<value>1024</value>
</property>
<property>
<name>yarn.scheduler.maximum-allocation-mb</name>
<value>4096</value>
</property>
<property>
<name>yarn.nodemanager.resource.cpu-vcores</name>
<value></value>
</property>
<property>
<name>yarn.nodemanager.vmem-pmem-ratio</name>
<value>5</value>
</property>
<property>
<name>yarn.nodemanager.pmem-check-enable</name>
<value>false</value>
</property>
<property>
<name>yarn.nodemanager.vmem-check-enable</name>
<value>false</value>
</property>

<!-- Site specific YARN configuration properties -->
</configuration>

配置计算框架mapred-site.xml

前面配置的YARN,主要负责分布式集群的资源管理,现在配置mapred-site.xml是为了将Hadoop MapReduce分布式并行计算框架在运行的时候需要的内存 CPU这些资源交给YARN来协调分配。

vim mapred-site.xml
<property>
<!--MapReduce计算框架的资源交给YARN管理-->
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>

在master里面配置workers

vim workers

编辑workers文件 

master
slave1
slave2 

最后再修改几个文件

cd /usr/hadoop/hadoop-3.1.3/sbin/
###start-dfs.sh##start-yarn.sh###这两个文件写入
TANODE_USER=root
HDFS_DATANODE_SECURE_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root

###stop-dfs.sh ##stop-yarn.sh###这两个文件写入
HDFS_DATANODE_USER=root
HDFS_DATANODE_SECURE_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root

 现在主节点的配置就已经结束啦。我们可以scp复制到两个从节点就可以啦

scp -r /usr/hadoop/hadoop-3.1.3 root@slave1:/usr/
scp -r /usr/hadoop/hadoop-3.1.3 root@slave2:/usr

配置Hadoop启动的系统环境

配置profile文件

vim /etc/profile
export HADOOP_HOME=/usr/hadoop/hadoop-3.1.3
export PATH=$PATH:$HADOOP_HOME/bin

在profile文件中添加如上代码以后执行生效的命令

source /etc/profile

登录两个从节点重复操作profile操作

最后再修改几个文件

启动Hadoop集群

首先格式化一下文件系统HDFS

hdfs namenode -format

然后会出现一堆东西 最后几行会有一个 Exiting with status 0 表示格式化成功 如果是1就是失败

失败的话就排查一下环境配置是不是哪里弄错了。如果没有0和1就往上看一下会有个大写的successfully格式化成功以后就可以开始启动集群啦。

Hadoop是主从架构,启动集群的操作需要在主节点master上完成

cd /usr/hadoop/hadoop-3.1.3
sbin/start-all.sh

执行命令后,在提示处输入yes或y(这个看具体提示)

然后查看进程是否启动输入jps

正常情况下应该是

master里面分别是jps ,resourcemanager ,secondarnamenode ,namenode,datanode

 slave1 和slave2 里面分别是jps ,datenode ,nodemanager

Web UI查看集群是否启动成功

在浏览器查看http://master:9870/检查namenode和datanode是否正常

在浏览器查看http://master:18088/查看YARN是否正常

好啦,祝你顺利!

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值