集群环境配置:
主机名称/IP | spark | hadoop | mysql | hbase | hive | zookeeper | flume | kafka | redis |
linux01.pub/192.168.10.10 | 1 | 1 | 1 | 1 | 1 | ||||
linux02.pub/192.168.10.11 | 1 | 1 | 1 | ||||||
linux03.pub/192.168.10.12 | 1 | 1 | 1 | ||||||
linux04.pub/192.168.10.13 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | ||
linux05.pub/192.168.10.14 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | ||
linux06.pub/192.168.10.15 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
一、基础环境配置
1、先在linux01上安装mysql
千万记住,安装前一定要删除本机所有的Mysql或Mariadb
#!/bin/bash
service mysql stop 2>/dev/null
service mysqld stop 2>/dev/null
rpm -qa | grep -i mysql | xargs -n1 rpm -e --nodeps 2>/dev/null
rpm -qa | grep -i mariadb | xargs -n1 rpm -e --nodeps 2>/dev/null
rm -rf /var/lib/mysql
rm -rf /usr/lib64/mysql
rm -rf /etc/my.cnf
rm -rf /usr/my.cnf
直接参照此前写过的这篇,不再重复
https://blog.csdn.net/qq_36269641/article/details/109641947
检查,mysql是否安装成功,可以用netstat, 如果没有可以用以下命令安装
# 安装网络工具
yum install -y net-tools
# 查看端口或程序
netstat -nltp |grep mysqld #或 3306
2、网络改成静态地址
vim /etc/sysconfig/network-scripts/ifcfg-ens33
注:网卡名称可能不一致,ifcfg-ens**(*为数字)即是配置文件。可以使用在进入该文件夹后查看所有文件,符合名称的即为网卡配置文件或使用 ip addr查看。
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static //将原文件里的改为此处,使用静态ip
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
DEVICE=ens33
ONBOOT=yes //将原文件里的改为此处,默认打开网卡
NETMASK=255.255.255.0 //新增:此处为子网掩码
GATEWAY=192.168.**.* //新增:此处为网关
IPADDR=192.168.**.* //新增:此处为ip地址,需与子网保持在一个网段内,最后一位随意(1~254)
DNS1=114.114.114.114 //新增:域名解析服务器
DNS2=119.29.29.29 //新增:域名解析服务器
保存后,重启网卡服务即可(systemctl restart network)。测试主机与虚拟机互 ping 以及虚拟机 ping 百度。
3、安装必要插件
sudo yum install -y epel-release
sudo yum install -y psmisc nc net-tools rsync vim lrzsz ntp libzstd openssl-static tree iotop git
4.修改主机名
主机名分别为:
hostnamectl set-hostname hadoop-master(主机名)
vim /etc/hosts #加上以下内容
192.168.29.151 cluster01 #第一台机器的ip和主机名
192.168.29.152 cluster02 #第二台机器的ip和主机名
192.168.29.153 cluster03 #第三台机器的ip和主机名
192.168.29.154 cluster04 #第四台机器的ip和主机名
192.168.29.155 cluster05 #第五台机器的ip和主机名
5.关闭防火墙
# 禁止开机启动
systemctl disable firewalld
# 关闭防火墙
systemctl stop firewalld
6、创建atguigu用户,并修改atguigu用户的密码
useradd atguigu
passwd atguigu
1)配置atguigu用户具有root权限,方便后期加sudo执行root权限的命令
vim /etc/sudoers
修改/etc/sudoers文件,在%wheel这行下面添加一行,如下所示:
\## Allow root to run any commands anywhere
root ALL=(ALL) ALL
\## Allows people in group wheel to run all commands
%wheel ALL=(ALL) ALL
atguigu ALL=(ALL) NOPASSWD:ALL
注意:atguigu这一行不要直接放到root行下面,因为所有用户都属于wheel组,你先配置了atguigu具有免密功能,但是程序执行到%wheel行时,该功能又被覆盖回需要密码。所以atguigu要放到%wheel这行下面。
2)在/opt目录下创建文件夹,并修改所属主和所属组
(1)在/opt目录下创建module、software文件夹
mkdir /opt/module
mkdir /opt/software
(2)修改module、software文件夹的所有者和所属组均为atguigu用户
chown atguigu:atguigu /opt/module
chown atguigu:atguigu /opt/software
(3)查看module、software文件夹的所有者和所属组
cd /opt/
ll
6)卸载自带的jdk
注意:如果你的虚拟机是最小化安装不需要执行这一步。
rpm -qa | grep -i java | xargs -n1 rpm -e --nodeps
Ø rpm -qa:查询所安装的所有rpm软件包
Ø grep -i:忽略大小写
Ø xargs -n1:表示每次只传递一个参数
Ø rpm -e –nodeps:强制卸载软件
1)卸载现有的JDK
注意:安装JDK前,一定确保提前删除了虚拟机自带的JDK。
2)用XShell传输工具将JDK导入到opt目录下面的software文件夹下面
3)在Linux系统下的opt目录中查看软件包是否导入成功
ls /opt/software/
看到如下结果:
jdk-8u212-linux-x64.tar.gz
4)解压JDK到/opt/module目录下
tar -zxvf jdk-8u212-linux-x64.tar.gz -C /opt/module/
5)配置JDK环境变量
(1)新建/etc/profile.d/my_env.sh文件
sudo vim /etc/profile.d/my_env.sh
添加如下内容
#JAVA_HOME
export JAVA_HOME=/opt/module/jdk1.8.0_212
export PATH=$PATH:$JAVA_HOME/bin
(3)source一下/etc/profile文件,让新的环境变量PATH生效 source /etc/profile
6)测试JDK是否安装成功
[atguigu@hadoop102 ~]$ java -version
如果能看到以下结果,则代表Java安装成功。
注意:重启(如果java -version可以用就不用重启)
reboot
7.配置ssh无密登录配置
① 生成公匙和私匙
ssh-keygen -t rsa
然后敲(三个回车),查看/root/.ssh/目录,可以看到会生成两个文件id_rsa(私钥)、id_rsa.pub(公钥)
cd /root/.ssh/
② 将公钥拷贝到要免密登录的目标机器上
将所有主机的公钥分别追加到主机的~/.ssh/authorized_keys,在登录三台主机后都执行以下三条命令
ssh-copy-id -i ~/.ssh/id_rsa.pub ceson@ceson01
ssh-copy-id -i ~/.ssh/id_rsa.pub ceson@ceson02
ssh-copy-id -i ~/.ssh/id_rsa.pub ceson@ceson03
# 时间同步
yum install ntpdate -y
ntpdate time.windows.com
或者
下载时间同步模块
yum -y install ntpdate
连接远程服务器
ntpdate -u time1.aliyun.com
修改文件
ntpdate -u ntp.api.bz
date 查看系统时间
hwclock --show 查看硬件时间
hwclock -w 永久保存
date 查看 成功
二、hadoop的集群配置
tar -zxvf hadoop-3.1.3.tar.gz -C /opt/software
#修改解压文件默认名字(名字过于长,所以建议修改一下)
mv hadoop-3.1.3/ hadoop313 #将hadoop改为hadoop313
#配置环境变量
vim /etc/profile.d/myenv.sh
# jdk
export JAVA_HOME=/opt/software/java/jdk180 #自己的jdk路径
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
# hadoop
export HADOOP_HOME=/opt/software/hadoop313 #自己的hadoop路径
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root
保存退出,通过命令 source /etc/profile 激活
输入 java -version 如果实现jdk的版本信息就是激活成功了
3、文件复制
将jdk、hadoop、环境配置文件复制到其他机器上 ,其他机器上必须创建所需的文件夹
scp -r $pdir/$fname $user@$host:$pdir/$fname
命令 递归 要拷贝的文件路径/名称 目的地用户@主机:目的地路径/名称
#下面是我将jdk、环境变量配置文件、hadoop 拷贝到cluster02上,同样的方式复制到其他机器上
#注:拷贝到其他机器的环境变量配置文件需要激活一下 source /etc/profile 再通过 java -version 来验证是否激活
scp -r /opt/software/java/ root@cluster02:/opt/software/
scp -r /etc/profile.d/myenv.sh root@cluster02:/etc/profile.d/
scp -r /opt/software/hadoop313/ root@cluster02:/opt/software/
三、hadoop的集群配置
以上步骤配置完成,就需要进行集群配置了
1、集群的配置介绍
NameNode 和 SecondaryNameNode 不要安装在同一台服务器
ResourceManager 也很消耗内存,不要和 NameNode、SecondaryNameNode 配置在同一台机器上
cluster01 | cluster02 | cluster03 | cluster04 | cluster05 | cluster06 | |
HDFS | NameNode | SecondaryNameNode | ||||
DataNode | DataNode | DataNode | DataNode | DataNode | DataNode | DataNode |
YARN | ResourceManager | |||||
NodeManager | NodeManager | NodeManager | NodeManager | NodeManager | NodeManager | NodeManager |
2、4个xml文件的配置
1、core-site.xml
2、hdfs-site.xml
3、yarn-site.xml
4、mapred-site.xml
5、配置workers
配置workers,增加五个主机名
注意:该文件中添加的内容结尾不允许有空格,文件中不允许有空行
vim /opt/software/hadoop313/etc/hadoop/workers
cluster01
cluster02
cluster03
cluster04
cluster05
将配置好的4个xml文件和workers文件覆盖到其他4个机器上去(同文件替换)
四、启动集群
1、NameNode初始化
#如果集群是第一次启动,需要在cluster01节点格式化 NameNode
[root@cluster01 hadoop313]# hdfs namenode -format
2、启动 HDFS、YARN
#启动 HDFS
[root@cluster01 hadoop313]# sbin/start-dfs.sh
#在配置了 ResourceManager 的节点(cluster02)启动 YARN
[root@cluster02 hadoop313]# sbin/start-yarn.sh
3、验证是否成功启动
Web 端查看 HDFS 的 NameNode
浏览器中输入:http://192.168.29.151:9870
查看 HDFS 上存储的数据信息
Web 端查看 YARN 的 ResourceManager
浏览器中输入:http://192.168.29.152:8088
查看 YARN 上运行的 Job 信息
以上界面如果能正常打开,恭喜你!集群搭建成功了!