- 大数据集群搭建
- 一、虚拟机环境准备
- (1)系统以Centos-7.5-x86-1804为例最小化安装后,使用yum安装基本的工具,安装epel-release
- (2)安装net-tools:工具包集合包含很多命令
- (3)关闭防火墙以及防火墙开机自启
- (4)创建用户
- (5)配置flink用户具有root权限,方便后期加sudo执行root权限命令
- (6)在/opt目录下创建module(后面放软件)和software(后面放安装包)文件夹
- (7)虚拟机克隆
- (8)修改克隆机IP,以flink102为例
- (9)修改虚拟机主机名
- (10)修改windows系统中的host文件,路径:C:WindowsSystem32driversetc
- 二、在flink102上安装JDK(这边开始用自建的用户flink开始操作)
- (1)这边安装jdk1.8,具体安装包:jdk-8u212-linux-x64.tar.gz
- (2)新建/etc/profile.d/my_env.sh文件
- 三、Hadoop安装,先在flink02上
- (1)Hadoop安装,这里用的是Hadoop-3.1.3.tar.gz,将文件传输到/opt/software再进行解压
- (2)搭建集群,需要在flink103、flink104上安装hadoop-3,1.3,因为flink102上已经搭建完成了,所以只要分发给flink103、flink104即可
- (3)分发jdk和hadoop到flink103、flink104
- (4)ssh无密登录
- 四、集群部署
- (1)集群部署规划
- (2)配置文件修改
- (3)在集群上分发配置好的Hadoop配置文件
- (4)群起集群
- (5)配置历史服务器
- (6)配置日志的聚集
- (7)集群群起/群停
- (8)集群查看后台进程运行情况脚本
- (9)集群时间同步
注:服务器准备(以三台虚拟机为例) 一、虚拟机环境准备 (1)系统以Centos-7.5-x86-1804为例最小化安装后,使用yum安装基本的工具,安装epel-release
yum install -y epel-release
注:该工具相当于是一个软件仓库
(2)安装net-tools:工具包集合包含很多命令yum install -y net-tools
安装vim:编辑器
yum install -y vim
安装一些其他工具
yum install -y psmisc nc rsync lrzsz ntp libzstd openssl-static tree iotop git(3)关闭防火墙以及防火墙开机自启
systemctl stop firewalld systemctl disable firewalld.service(4)创建用户
useradd flink password flink(5)配置flink用户具有root权限,方便后期加sudo执行root权限命令
vim /etc/sudoers
## Allow root to run any commands anywhere root ALL=(ALL) ALL flink ALL=(ALL) NOPASSWD:ALL(6)在/opt目录下创建module(后面放软件)和software(后面放安装包)文件夹
mkdir /opt/module mkdir /opt/software
将两个文件夹的权限赋予给flink用户
chown flink:flink /opt/module chown flink:flink /opt/software(7)虚拟机克隆
克隆出虚拟机flink102、flink103、flink104三台虚拟机
(8)修改克隆机IP,以flink102为例vim /etc/sysconfig/network-scripts/ifcfg-ens33 # 这边会有不同,随机生成的
修改为
DEVICE=ens33 TYPE=Ethernet ONBOOT=yes BOOTPROTO=static NAME="ens33" IPADDR=192.168.20.202 PREFIX=24 GATEWAY=192.168.20.1 DNS1=192.168.20.1
查看windows系统中网络适配器VMware Network Adapter VMnet8的IP地址(virtual box是VirtualBox Host-only Ethernet Adapter)
默认网关设置为192.168.20.1
vim /etc/hostname flink102
配置Linux克隆机主机映射hosts文件
vim /etc/hosts 192.168.20.202 flink102 192.168.20.203 flink103 192.168.20.204 flink104 192.168.20.205 flink105 # 备用 192.168.20.206 flink106 # 备用
重启虚拟机
reboot(10)修改windows系统中的host文件,路径:C:WindowsSystem32driversetc
添加如下内容:
192.168.20.202 flink102 192.168.20.203 flink103 192.168.20.204 flink104 192.168.20.205 flink105 # 备用 192.168.20.206 flink106 # 备用二、在flink102上安装JDK(这边开始用自建的用户flink开始操作) (1)这边安装jdk1.8,具体安装包:jdk-8u212-linux-x64.tar.gz
将安装包传输到/opt/software,然后解压
tar -zxvf jdk-8u212-linux-x64.tar.gz -C /opt/module(2)新建/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
source /etc/proflie # source一下,让新环境变量Path生效
测试jdk1.8是否生效
java -version三、Hadoop安装,先在flink02上 (1)Hadoop安装,这里用的是Hadoop-3.1.3.tar.gz,将文件传输到/opt/software再进行解压
tar -zxvf hadoop-3.1.3.tar.gz -C /opt/module
将Hadoop添加到环境变量中
vim /etc/profile.d/my_env.sh
添加如下设置:
#HADOOP_HOME export HADOOP_HOME=/opt/module/hadoop-3.1.3 export PATH=$PATH:$HADOOP_HOME/bin export PATH=$PATH:$HADOOP_HOME/sbin
记得source一下,使环境变量生效
测试Hadoop是否安装成功
hadoop version
如果没生效可以重启虚拟机试试reboot
(2)搭建集群,需要在flink103、flink104上安装hadoop-3,1.3,因为flink102上已经搭建完成了,所以只要分发给flink103、flink104即可xsync脚本编写
cd /home/flink mkdir bin cd bin vim xsync
具体脚本如下:
#!/bin/bash #1.判断参数个数 if [ $# -lt 1 ] then echo Not Enough Arguement! exit; fi #2.遍历集群所有机器 for host in flink102 flink103 flink104 do echo ===============$host=============== #3.遍历所有目录,发送文件 for file in $@ do #4.判断文件是否存在 if [ -e $file ] then #5.获取父目录 pdir=$(cd -P $(dirname $file); pwd) #6.获取当前文件的名称 fname=$(basename $file) ssh $host "mkdir -p $pdir" rsync -av $pdir/$fname $host:$pdir else echo $file dose not exists! fi done done
将该脚本赋予执行权限
chmod 777 xsync(3)分发jdk和hadoop到flink103、flink104
cd /opt/module xsync jdk1.8.0_212 xsync hadoop-3.1.3 sudo xsync /etc/profile.d/my_env.sh
记得在flink103、flink104上source一下
注意:这边分发的时候比较麻烦是需要输好多遍密码的,下面设置一下公共钥匙就可以无密码登录了
先在102上生成公钥和私钥
cd /home/flink/.ssh ssh-keygen -t rsa
然后敲三个回车,就会生成公钥和私钥
将公钥拷贝到要免密登录的机器
ssh-copy-id flink102 ssh-copy-id flink103 ssh-copy-id flink104
同样的操作需要在103和104上实施一遍
四、集群部署 (1)集群部署规划102上部署HDFS的NameNode和DataNode以及YARN的NodeManager
103上部署HDFS的DataNode以及YARN的ResourceManager和NodeManager
104上部署SecondaryNamNode和DataNode以及YARN的NodeManager
配置core-site.xml
cd $HADOOP_HOME/etc/hadoop vim core-site.xml 文件内容如下:fs.defaultFS hdfs://flink102:8020 hadoop.tmp.dir /opt/module/hadoop-3.1.3/data hadoop.http.staticuser.user flink
HDFS配置文件
配置hdfs-site.xml
vim hdfs-site.xml 文件内容如下: dfs.namenode.http-address flink102:9870 dfs.namenode.secondary.http-address flink104:9868
YARN配置文件
配置yarn-site.xml
vim yarn-site.xml 文件内容如下:yarn.nodemanager.aux-services mapreduce_shuffle yarn.resourcemanager.hostname flink103 yarn.nodemanager.env-whitelist JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME
MapReduce配置文件
配置mapred-site.xml
vim mapred-site.xml 文件内容如下:(3)在集群上分发配置好的Hadoop配置文件 mapreduce.framework.name yarn
xsync /opt/module/hadoop-3.1.3/etc/hadoop/
去103和104上查看文件分发情况
cat /opt/module/hadoop-3.1.3/etc/hadoop/core-site.xml cat /opt/module/hadoop-3.1.3/etc/hadoop/core-site.xml(4)群起集群
配置workers
vim /opt/module/hadoop-3.1.3/etc/hadoop/workers 在该文件中增加如下内容: flink102 flink103 flink104
启动集群
1,如果集群是第一次启动,需要在102节点格式化NameNode(注意:格式化NameNode,会产生新的集群id,导致NameNode和DataNode的集群id不一致,集群找不到已往数据。如果集群在运行过程中报错,需要重新格式化NameNode的话,一定要先停止namenode和datanode进程,并且要删除所有机器的data和logs目录,然后再进行格式化。)
hdfs namenode -format
2,启动HDFS
sbin/start-dfs.sh
3,在配置了ResourceManager的节点(103)启动YARN
sbin/start-yarn.sh
4,Web端查看HDFS的NameNode
浏览器中输入:http://flink102:9870
查看HDFS上存储的数据信息
5,Web端查看YARN的ResourceManager
浏览器中输入:http://flink103:8088
查看YARN上运行的Job信息
为了查看程序的历史运行情况,需要配置一下历史服务器。具体配置步骤如下:
1)配置mapred-site.xml
vim mapred-site.xml 在该文件里面增加如下配置。mapreduce.jobhistory.address flink102:10020 mapreduce.jobhistory.webapp.address flink102:19888
2)分发配置
xsync $HADOOP_HOME/etc/hadoop/mapred-site.xml
3)在flink102启动历史服务器
mapred --daemon start historyserver
4)查看历史服务器是否启动
jps
5)查看JobHistory
http://flink102:19888/jobhistory
日志聚集概念:应用运行完成以后,将程序运行日志信息上传到HDFS系统上。
日志聚集功能好处:可以方便的查看到程序运行详情,方便开发调试。
注意:开启日志聚集功能,需要重新启动NodeManager 、ResourceManager和HistoryServer。
开启日志聚集功能具体步骤如下:
1)配置yarn-site.xml
vim yarn-site.xml
在该文件里面增加如下配置。yarn.log-aggregation-enable true yarn.log.server.url http://flink102:19888/jobhistory/logs yarn.log-aggregation.retain-seconds 604800
2)分发配置
xsync $HADOOP_HOME/etc/hadoop/yarn-site.xml
3)关闭NodeManager 、ResourceManager和HistoryServer(103节点)
sbin/stop-yarn.sh mapred --daemon stop historyserver
4)启动NodeManager 、ResourceManage和HistoryServer
start-yarn.sh mapred --daemon start historyserver(7)集群群起/群停
需要在写一个脚本来群起集群
cd /home/flink/bin vim myhadoop.sh
脚本如下:
#!/bin/bash
if [ $# -lt 1 ]
then
echo "No Args Input..."
exit ;
fi
case $1 in
"start")
echo " =================== 启动 hadoop集群 ==================="
echo " --------------- 启动 hdfs ---------------"
ssh flink102 "/opt/module/hadoop-3.1.3/sbin/start-dfs.sh"
echo " --------------- 启动 yarn ---------------"
ssh flink103 "/opt/module/hadoop-3.1.3/sbin/start-yarn.sh"
echo " --------------- 启动 historyserver ---------------"
ssh flink102 "/opt/module/hadoop-3.1.3/bin/mapred --daemon start historyserver"
;;
"stop")
echo " =================== 关闭 hadoop集群 ==================="
echo " --------------- 关闭 historyserver ---------------"
ssh flink102 "/opt/module/hadoop-3.1.3/bin/mapred --daemon stop historyserver"
echo " --------------- 关闭 yarn ---------------"
ssh flink103 "/opt/module/hadoop-3.1.3/sbin/stop-yarn.sh"
echo " --------------- 关闭 hdfs ---------------"
ssh flink102 "/opt/module/hadoop-3.1.3/sbin/stop-dfs.sh"
;;
*)
echo "Input Args Error..."
;;
esac
脚本完成后别忘了给脚本加上执行权限
chmod 777 myhadoop.sh(8)集群查看后台进程运行情况脚本
上文有提到jps查看后台进程运行情况,但是不足的是我们的集群查看后台进程需要一台一台去看服务是否起来了,如果集群数量增加会很麻烦,所以需要编写一个集群后台进程查看脚本
cd /home/flink/bin vim jpsall
脚本如下:
#!/bin/bash for host in flink102 flink103 flink104 do echo " ============ $host ============" ssh $host jps done
赋予其执行权限
chmod 777 jpsall(9)集群时间同步
需要一台集群中的机器作为时间同步的标准,避免集群中各台机器时间不同步发生数据上的问题
修改102节点上的ntp配置文件
vim /etc/ntp.conf
修改内容如下
修改1(授权192.168.10.0-192.168.10.255网段上的所有机器可以从这台机器上查询和同步时间)
#restrict 192.168.10.0 mask 255.255.255.0 nomodify notrap 为restrict 192.168.10.0 mask 255.255.255.0 nomodify notrap
修改2(集群在局域网中,不使用其他互联网上的时间)
server 0.centos.pool.ntp.org iburst server 1.centos.pool.ntp.org iburst server 2.centos.pool.ntp.org iburst server 3.centos.pool.ntp.org iburst 为 #server 0.centos.pool.ntp.org iburst #server 1.centos.pool.ntp.org iburst #server 2.centos.pool.ntp.org iburst #server 3.centos.pool.ntp.org iburst
添加3(当该节点丢失网络连接,依然可以采用本地时间作为时间服务器为集群中的其他节点提供时间同步)
server 127.127.1.0 fudge 127.127.1.0 stratum 10
修改flink102的/etc/sysconfig/ntpd 文件
sudo vim /etc/sysconfig/ntpd
增加内容如下(让硬件时间与系统时间一起同步)
SYNC_HWCLOCK=yes
重新启动ntpd服务
sudo systemctl start ntpd
设置ntpd服务开机启动
sudo systemctl enable ntpd
其他机器配置(必须root用户)
(1)关闭所有节点上ntp服务和自启动
[flink@flink103 ~]$ sudo systemctl stop ntpd [flink@flink103 ~]$ sudo systemctl disable ntpd [flink@flink104 ~]$ sudo systemctl stop ntpd [flink@flink104 ~]$ sudo systemctl disable ntpd
(2)在其他机器配置1分钟与时间服务器同步一次
[flink@flink103 ~]$ sudo crontab -e
编写定时任务如下:
*/1 * * * * /usr/sbin/ntpdate flink102
(3)修改任意机器时间
[flink@flink103 ~]$ sudo date -s "2021-9-11 11:11:11"
(4)1分钟后查看机器是否与时间服务器同步
[flink@flink103 ~]$ sudo date



