购置三台云服务器,总支出353/年,华为云/百度云/ucloud的新用户优惠(阿里云的之前用掉了,现在买2c2g要900多)。
finalshell连接三台服务器,ssh,输入用户名和密码即可连接成功,服务器侧22端口打开
FinalShell SSH工具,服务器管理,远程桌面加速软件,支持Windows,macOS,Linux,版本4.5.12,更新日期2024.10.30 - FinalShell官网
epel-release、net-tool、vim安装--服务器都默认已安装
#检查有无安装,未安装会提示未安装 rpm -q epel-release rpm -q net-tools rpm -q vim-enhanced # 安装命令 yum install -y epel-release yum install -y net-tools yum install -y vim
关闭防火墙及自启-
systemctl stop firewalld systemctl disable firewalld.service
在/opt目录下创建module、software
mkdir /opt/module /opt/software
卸载虚拟机自带的JDK,没有安装忽略这个步骤--默认未装
# 检查有无安装。选其中一个即可,无安装时,第一个没有返回结果,第二个命令会报命令未发现 rpm -qa | grep -i java java -version # 卸载命令 rpm -qa | grep -i java | xargs -n1 rpm -e --nodeps # rpm -qa:查询所安装的所有rpm软件包 # grep -i:忽略大小写 # xargs -n1:表示每次只传递一个参数 # rpm -e –nodeps:强制卸载软件
修改主机名
# 查看主机名,执行一个即可 hostname hostnamectl cat /etc/hostname # baidu instance-g3ujf8wq # 180.76.xx # 修改主机名称 vim /etc/hostname hadoop2 #非重启生效,执行下述命令 hostnamectl set - hostname hadoop2 # 重启,now换成+5为5分钟后 shutdown -r now reboot # 华为 hcss-ecs-3706 # 113.45.xx hadoop1 # ucloud 原主机名:10-13-134-222 # 106.75.xx hadoop3 # 映射ip和主机名,本地通信映射(将当前主机对应host修改为内部ip地址) vim /etc/hosts #汇总 113.45.xx hadoop1 180.76.xx hadoop2 106.75.xx hadoop3
添加环境变量路径:home/alpfree/bin
# echo $PATH 命令输出的是当前用户环境下的 PATH 环境变量值,当您尝试运行一个命令时,如果命令存在于上述任何一个目录中,那么这个命令就会被执行 echo $PATH # 服务器上执行后返回: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin(最后一个目录其实不存在) # 创建文件夹,并添加为环境变量 home/alpfree/bin mkdir -p /home/alpfree/bin # 编辑 .bashrc 或 .bash_profile,以 .bashrc 为例(隐藏文件默认看不到) # 文件末尾添加以下内容 export PATH=$PATH:/home/alpfree/bin # 输入 : 进入命令行模式,输入 wq 然后按回车键,这代表写入(保存)并退出 # 重新加载配置文件,~代表当前用户的主目录 vim ~/.bashrc source ~/.bashrc # 查看 .bashrc 命令 ls -a ~
编写集群分发脚本xsync
# 循环复制文件到所有节点的相同目录下 # rsync命令原始拷贝,将本地 /opt/module 目录同步到名为 hadoop103 的远程服务器的 /opt/ 目录下 rsync -av /opt/module root@hadoop103:/opt/ # -av # -a:归档模式,表示递归同步且保持文件属性等信息。 # -v:详细模式,显示同步过程的详细信息。 # 源路径为 /opt/module,意味着将此目录下的所有内容作为同步的源。 # 目标路径 root@hadoop103:/opt/ 表示通过 SSH 连接到 hadoop103 服务器,以 root 用户身份,将文件同步至该服务器的 /opt/ 目录
在home/alpfree/bin创建xsync
vim xsync
#1. 判断参数个数 if [ $# -lt 1 ] then echo Not Enough Arguement! exit; fi #2. 遍历集群所有机器 for host in hadoop1 hadoop2 hadoop3 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 does not exists! fi done done
# 创建完成后,赋予权限 chmod 777 xsync # 验证,显示未找到命令,则未安装 xsync xsync #检查和安装,验证 rpm -q rsync sudo yum install rsync rsync --version
无密登录配置
# 现机器hadoop1,配置的是NameNode,hadoop2配置的是ResourceManager,都要求对其他节点无密访问 # 生成公钥和私钥,然后敲(三个回车),就会生成两个文件id_rsa(私钥)、id_rsa.pub(公钥) # 会在用户主目录下的.ssh文件夹中生成 ssh-keygen -t rsa # 将h1公钥拷贝到要免密登录的目标机器上,其中要输入密码 ssh-copy-id hadoop1 ssh-copy-id hadoop2 ssh-copy-id hadoop3 # hadoop2生成公钥和私钥 ssh-keygen -t rsa #将h2公钥拷贝到要免密登录的目标机器上 ssh-copy-id hadoop1 ssh-copy-id hadoop2 ssh-copy-id hadoop3
在h1上安装jdk
# 将jdk导入到/opt/software文件夹下面 finalshell # 查看导入是否成功 ls /opt/software/ # 解压到/opt/module目录下, -C 将文件放置到指定的目录中 tar -zxvf jdk-8u212-linux-x64.tar.gz -C /opt/module/ # 配置JDK环境变量,新建/etc/profile.d/my_env.sh文件, # /etc/profile.d 目录主要用于存放系统环境变量和 shell 配置脚本 vim /etc/profile.d/my_env.sh # 添加如下内容 #原文档错误 export JAVA_HOME=/opt/module/jdk-1.8.0 #JAVA_HOME export JAVA_HOME=/opt/module/jdk1.8.0_212 export PATH=$PATH:$JAVA_HOME/bin # 让环境变量生效 source /etc/profile.d/my_env.sh # 检查是否安装成功 java -version
分发jdk
# 分发JDK xsync /opt/module/jdk1.8.0_212 # 分发环境变量配置文件 sudo /home/alpfree/bin/xsync /etc/profile.d/my_env.sh # 分别在hadoop2、hadoop2上执行sourc source /etc/profile.d/my_env.sh
参考资料
海波老师-电商数仓