文章目录
- 1. 任务背景
- 2. 任务规划
- 3. 整体思路
- 4. 共性部分配置
- 4.1 关闭防火墙、关闭SELinux
- 4.2 配置hosts文件
- 4.3 配置网络参数
- 4.4 安装配置JDK
- 4.5 安装配置Hadoop
- 4.5.1 下载Hadoop
- 4.5.2 解压
- 4.5.3 配置环境变量
- 4.5.4 修改hadoop中的JDK配置
- 4.5.5 修改hadoop的从节点配置
- 4.5.6 修改core-site.xml核心配置
- 4.5.7 修改hdfs-site.xml
- 4.5.8 修改`mapred-site.xml`MapReduce配置
- 4.5.9 修改`yarn-site.xml`YARN配置
- 5. 克隆
- 6. 个性配置
- 6.1 修改主机名
- 6.2 修改IP
- 7. 配置免密登录
- 7.1 生成秘钥文件
- 7.2 对其他节点生成秘钥
- 7.3 将所有秘钥汇总到第一个节点
- 7.4 所有节点互相免密登录
- 8. 格式化
- 9. 启动集群
1. 任务背景
在之前的教程中,我们已经完成了Hadoop伪分布式搭建,对搭建过程有了一个比较具体的认知。
实际上在企业,还是需要搭建真正的多节点分布式集群,才能真正发挥Hadoop大数据处理能力。当然,具体需要多少个节点,还是由实际需求决定的。
本篇我们以四节点的集群搭建为例,展示完整操作过程。
2. 任务规划
参考上一篇的网络配置,我们规划四节点情况如下:
- 4节点集群,节点名称为:hadoop01、hadoop02、hadoop03 、hadoop04
- 集群所处网段:192.168.137.0
- 子网掩码:255.255.255.0
- 网关:192.168.137.2 (子网地址192.168.137.1,广播地址192.168.137.255这个根据计算网络原理定好的,不明白的可以去AI下计算机网络相关知识)
- hadoop01的IP:192.168.137.101
- hadoop02的IP:192.168.137.102
- hadoop03的IP:192.168.137.103
- hadoop04的IP:192.168.137.104
3. 整体思路
由于大数据环境搭建过程中,大部分配置信息是一样的,例如都要安装JDK、配置JDK环境变量、都要关闭防火墙、关闭SELinux等。
如果我们每台电脑逐一去配置这些共同项目,会浪费很多时间。
所以我们对共性项目,采取只配置hadoop01,其他节点直接克隆hadoop01的方式来实现。
而对于每个节点不同的配置信息,例如节点名称、IP等,我们在克隆之后再单独逐一配置。
下图展示了共性部分和个性部分:
4. 共性部分配置
首先我们使用VMWare安装第一个节点hadoop01,采用CentOS7操作系统,注意网络模式为NAT。然后按照以下步骤逐步操作即可:
4.1 关闭防火墙、关闭SELinux
执行如下命令,关闭防火墙并禁止开机启动。
systemctl stop firewalld systemctl disable firewalld修改配置文件,禁用SELinux:
vim/etc/sysconfig/selinux4.2 配置hosts文件
执行vim /etc/hosts,根据规划,配置节点和IP映射如下:
192.168.137.101 hadoop01192.168.137.102 hadoop02192.168.137.103 hadoop03192.168.137.104 hadoop044.3 配置网络参数
通过ip a查看网卡名称为ens33。
编辑网卡对应网络配置:
vi/etc/sysconfig/network-scripts/ifcfg-ens33内容修改如下:
TYPE=EthernetBOOTPROTO=staticNAME=ens33DEVICE=ens33ONBOOT=yesIPADDR=192.168.137.101NETMASK=255.255.255.0GATEWAY=192.168.137.2DNS1=8.8.8.8DNS2=114.114.114.114需要注意,这是节点1的网络配置,克隆后其他节点配置还需要修改IP部分。
使用systemctl restart network重启网卡,使网络配置生效。
然后使用ping www.baidu.com测试网络是否已通。如下图有返回数据包即可
4.4 安装配置JDK
第一,下载JDK,由于网络已通,咱们直接使用命令下载即可。注意JDK只要是1.8版本即可。
curl-Ohttp://cdn.azul.com/zulu/bin/zulu8.84.0.15-ca-jdk8.0.442-linux_x64.tar.gz第二,等待下载进度到100%:
第三,解压到/usr/local目录:
tar-zxvfzulu8.84.0.15-ca-jdk8.0.442-linux_x64.tar.gz-C/usr/local/第四,进入/usr/local目录后修改文件名便于配置:
mvzulu8.84.0.15-ca-jdk8.0.442-linux_x64 jdk第五,修改/etc/profile,设置环境变量
vim/etc/profile修改如下:
exportJAVA_HOME=/usr/local/jdkexportPATH=.:$JAVA_HOME/bin:$PATH
第六,使环境变量生效
source/etc/profile第七,验证JDK配置成功
java-version4.5 安装配置Hadoop
4.5.1 下载Hadoop
大家注意下载3.x版本即可,尽量保持跟我相同版本。
curl-Ohttp://repo.huaweicloud.com/apache/hadoop/common/hadoop-3.3.6/hadoop-3.3.6.tar.gz如下图,等待进度100%:
4.5.2 解压
解压到指定目录:
tar-zxvfhadoop-3.3.6.tar.gz-C/usr/local然后进入/usr/local目录,重命名:
mvhadoop-3.3.6 hadoop4.5.3 配置环境变量
编辑全局环境变量文件,为Hadoop配置环境变量,让系统任意位置都可以直接调用 hadoop 命令。
vim/etc/profile在文件末尾增加:
exportHADOOP_HOME=/usr/local/hadoopexportPATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin注意Hadoop3.x还需要添加以下配置,否则可能报错:
exportHDFS_NAMENODE_USER=rootexportHDFS_DATANODE_USER=rootexportHDFS_SECONDARYNAMENODE_USER=rootexportYARN_RESOURCEMANAGER_USER=rootexportYARN_NODEMANAGER_USER=root保存退出,执行命令生效:
source/etc/profile执行hadoop version,如果能输出版本号,代表环境变量配置成功。
4.5.4 修改hadoop中的JDK配置
hadoop配置文件,都在/usr/local/hadoop/etc/hadoop下,所以先进入该目录:
cd/usr/local/hadoop/etc/hadoop修改hadoop-3.3.6/etc/hadoop目录如下三个文件的JDK中JAVA_HOME的值:
找到 JAVA_HOME 配置项,修改成你的 JDK 实际安装目录:
JAVA_HOME=/usr/local/jdk4.5.5 修改hadoop的从节点配置
打开/usr/local/hadoop/etc/hadoop目录的workers文件,修改内容如下:
hadoop02 hadoop03 hadoop04这一步很关键,这是告诉hadoop,当前集群从节点数量及对应名称。
作用:启动集群时,从节点会运行DataNode+NodeManager。
4.5.6 修改core-site.xml核心配置
注意,需要先创建一个临时目录:
mkdir/usr/local/hadoop/tmp<configuration><!-- 注意这个配置决定了NameNode在哪个节点上 --><property><name>fs.defaultFS</name><value>hdfs://hadoop01:9000</value></property><property><name>hadoop.tmp.dir</name><value>/usr/local/hadoop/tmp</value></property><property><name>hadoop.proxyuser.hadoop.hosts</name><value>*</value></property><property><name>hadoop.proxyuser.hadoop.groups</name><value>*</value></property></configuration>注意,此时不需要理解太多,复制到文件中即可。
4.5.7 修改hdfs-site.xml
<configuration><property><name>dfs.namenode.http-address</name><value>hadoop01:50070</value></property><!-- 注意这个配置决定了SecondaryNameNode在哪个节点上 --><property><name>dfs.namenode.secondary.http-address</name><value>hadoop01:50090</value></property><property><name>dfs.replication</name><value>2</value></property><property><name>dfs.webhdfs.enabled</name><value>true</value></property><property><name>dfs.stream-buffer-size</name><value>131072</value></property></configuration>4.5.8 修改mapred-site.xmlMapReduce配置
<configuration><!-- 指定MapReduce作业运行在YARN上 --><property><name>mapreduce.framework.name</name><value>yarn</value></property><!-- 指定作业历史服务器的地址 --><property><name>mapreduce.jobhistory.address</name><value>hadoop01:10020</value></property><!-- 指定作业历史服务器的webapp地址 --><property><name>mapreduce.jobhistory.webapp.address</name><value>hadoop01:19888</value></property></configuration>4.5.9 修改yarn-site.xmlYARN配置
<configuration><!-- 注意这个配置决定了ResouceManager在哪个节点上 --><property><name>yarn.resourcemanager.hostname</name><value>hadoop01</value><description>The hostname of the ResourceManager.</description></property><property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value></property><property><name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name><value>org.apache.hadoop.mapred.ShuffleHandle</value></property><property><name>yarn.resourcemanager.scheduler.address</name><value>hadoop01:8030</value></property><property><name>yarn.resourcemanager.resouce-tracker.address</name><value>hadoop01:8031</value></property><property><name>yarn.resourcemanager.address</name><value>hadoop01:8032</value></property><property><name>yarn.resourcemanager.admin.address</name><value>hadoop01:8033</value></property><property><name>yarn.resourcemanager.webapp.address</name><value>hadoop01:8088</value></property></configuration>至此,共性部分配置完成。
5. 克隆
将刚配置完的hadoop01节点关机。
通过VMWare菜单中的虚拟机–管理–克隆,分别克隆出hadoop02/hadoop03/hadoop04三个节点。
如下图:
6. 个性配置
接下对hadopp02/hadoop03/hadoop04节点个性部分进行配置:
6.1 修改主机名
通过vim /etc/hostname将3个节点的主机名修改为hadopp02/hadoop03/hadoop04。
6.2 修改IP
vi/etc/sysconfig/network-scripts/ifcfg-ens33将3个节点IP分别修改为
IPADDR=192.168.137.102IPADDR=192.168.137.103IPADDR=192.168.137.104全部修改完成后,使用’reboot`对3个节点重启。
7. 配置免密登录
Hadoop集群之间交互,如果每次登录非常麻烦,所以先实现基于SSH的免密码登录。
7.1 生成秘钥文件
使用root用户登录第一个节点hadoop01,运行如下命令:
ssh-keygen-trsa后续出现的提示直接按回车:
然后注意生成的目录,id_rsa存放私钥,id_rsa.pub存放公钥。
运行如下命令,在.ssh目录生成authorized_keys文件:
cat~/.ssh/id_rsa.pub>>~/.ssh/authorized_keys该文件即保存用户公钥。
7.2 对其他节点生成秘钥
第2步骤的操作,针对节点hadoop02/hadoop03/hadoop04重复执行一次。
ssh-keygen-trsacat~/.ssh/id_rsa.pub>>~/.ssh/authorized_keys7.3 将所有秘钥汇总到第一个节点
通过ssh-copy-id命令,复制hadoop02/hadoop03/hadoop04节点的公钥到hadoop01节点,并验证是否成功:
登录hadoop02/hadoop03/hadoop04,执行如下命令:
ssh-copy-id-i~/.ssh/id_rsa.pub hadoop01命令执行如下图:
在hadoop02/hadoop03/hadoop04,执行如下命令,验证配置成功:
sshhadoop01如下图,已经通过ssh登录hadoop01节点成功:
现在所有节点都可以免密登录到hadoop01了。
7.4 所有节点互相免密登录
登录hadoop01节点,将authorized_keys复制到hadoop02/hadoop03/hadoop04,即可实现互相免密:
scp~/.ssh/authorized_keys hadoop02:~/.ssh;scp~/.ssh/authorized_keys hadoop03:~/.ssh;scp~/.ssh/authorized_keys hadoop04:~/.ssh;此时在任意一个节点,输入ssh+另一个节点名,即可免密登录到第一个节点。
例如从hadoop02到hadoop04:
8. 格式化
Hadoop文件系统使用前,需要先将节点格式化。
登录各个节点,执行如下命令,格式化NameNode:
/usr/local/hadoop/./bin/hdfs namenode-format出现如下提示,标识格式化成功:
9. 启动集群
通过start-all.sh启动集群,然后通过jps查看进程:
需要注意,按我们的设计,节点1需要具备NameNode+ResourceNanager+SecondaryNameNode,实验才算成功。
如果启动不全,可以查看日志: