为集群中的每台节点搭建环境

1
2
3
8.130.128.20 hadoop102ali
8.130.128.15 hadoop103ali
8.130.112.59 hadoop104ali

一、基础配置

  1. 配置网络为静态IP:vim /etc/sysconfig/network-scripts/ifcfg-ens33
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
# 修改为static
BOOTPROTO=static
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
UUID=ba43e2d0-a0bf-46a2-81fb-04751e8394be
DEVICE=ens33
# 修改为yes
ONBOOT=yes
# 设置IP地址和网关地址,添加DNS地址
IPADDR=192.168.241.102
GATEWAY=192.168.241.2
DNS1=114.114.114.114
DNS2=8.8.8.8

阿里云EMS:vim /etc/sysconfig/network-scripts/ifcfg-eth0

1
2
3
4
5
6
7
8
9
10
11
# 修改为static
BOOTPROTO=static
DEVICE=eth0
ONBOOT=yes
STARTMODE=auto
TYPE=Ethernet
USERCTL=no
# 设置IP地址、网关地址、子网掩码
IPADDR=172.16.165.205
GATEWAY=172.16.175.253
NETMASK=255.255.240.0
  1. 配置主机名和hosts文件

    1. 配置主机名:vim /etc/hostname

    2. hadoop102
      
      1
      2
      3
      4
      5
      6
      7
      8

      3. 配置主机映射hosts文件:`vim /etc/hosts`

      4. ```Bash
      # 添加集群中的节点IP及映射名
      192.168.10.102 hadoop102
      192.168.10.103 hadoop103
      192.168.10.104 hadoop104
  2. 安装常用工具

    1. 红帽系操作系统提供的额外软件包:yum install -y epel-release
    2. 最小系统需安装:yum install -y net-tools vim psmisc nc rsync lrzsz ntp libzstd openssl-static tree iotop git
  3. 关闭防火墙

    1. 临时关闭防火墙:systemctl stop firewalld
    2. 关闭防火墙开机自启动:systemctl disable firewalld
  4. 添加和管理用户

    1. 添加用户:useradd 用户名

    2. 设置密码:passwd 用户名

    3. 设置root权限:vim /etc/sudoers

      1. 用户名   ALL=(ALL)     NOPASSWD:ALL
        
        1
        2
        3
        4
        5
        6
        7
        8
        9
        10
        11
        12
        13
        14
        15
        16
        17
        18
        19
        20
        21
        22
        23

        4. 设置用户目录:`mkdir /opt/module` 、`mkdir /opt/software`

        5. 修改目录权限:`chown 用户名:用户名 目录`

        5. 卸载自带JDK(非Linux最小系统):`rpm -qa | grep -i java | xargs -n1 rpm -e --nodeps`

        6. 重启:`reboot`

        # 二、编程环境

        ## 1、jdk(1.8)

        1. 解压安装:`tar -zxf /opt/software/jdk-8u212-linux-x64.tar.gz -C /opt/module/`

        2. 配置并生效环境变量

        1. `vim /etc/profile.d/my_env.sh`

        1. ```Bash
        #JAVA_HOME
        export JAVA_HOME=/opt/module/jdk
        export PATH=$PATH:$JAVA_HOME/bin
    4. source /etc/profile.d/my_env.sh

  5. 测试安装结果:java -version

  • 三、ssh免密登录

  • 每台节点都需要配置,其中主节点的root用户也需要配置

    1. 生成公钥和私钥(存放地址:~/.ssh):ssh-keygen -t rsa
    2. 拷贝公钥到免密登录目标服务器:ssh-copy-id 服务器地址

例:需要A免密登录B,则在A上生成秘钥,复制到B

文件名 作用
id_rsa 存放私钥
id_rsa.pub 存放公钥
known_hosts 记录ssh访问过计算机的公钥
authorized_keys 存放授权过的无密登录服务器公钥

2、scala

四、常用脚本

1、文件分发脚本

分发环境变量时,需要root权限,此时需要带上脚本所在路径进行分发

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#!/bin/bash

#1. 判断参数个数
if [ $# -lt 1 ]
then
echo "Not Enough Arguement!"
exit
fi

#2. 遍历集群所有机器
for host in hadoop102 hadoop103 hadoop104
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

2、命令分发脚本

1
2
3
4
5
6
#!/bin/bash
for i in hadoop102 hadoop103 hadoop104
do
echo "--------$i--------"
ssh $i "$*"
done

3、模拟数据脚本

1
2
3
4
5
6
#!/bin/bash
for i in hadoop102 hadoop103
do
echo "--------$i--------"
ssh $i "cd /opt/module/applog; java -jar gmall2020-mock-log-2021-10-10.jar >/dev/null 2>&1 &"
done