1、技术选型与前期准备

注意事项:框架选型尽量不要选择最新的框架,选择最新框架半年前左右的稳定版。

框架

旧版本

新版本

Hadoop

3.1.3

3.3.4

Zookeeper

3.5.7

3.7.1

MySQL

5.7.16

8.0.31

Hive

3.1.2

3.1.3(修改源码)

Flume

1.9.0

1.10.1

Kafka

3.0.0

3.3.1

Spark

3.0.0

3.3.1

DataX

3.0

3.0(master分支向前,修改源码)

Superset

1.5.3

2.0.0

DolphinScheduler

1.3.9

2.0.5

Maxwell

1.29.2

1.29.2(修改源码)

Flink

1.13.0

1.16.1

Redis

6.0.8

Hbase

2.4.11

ClickHouse

20.4.5.36-2

测试集群服务器规划 

服务名称

子服务

服务器

hadoop102

服务器

hadoop103

服务器

hadoop104

HDFS

NameNode

DataNode

SecondaryNameNode

Yarn

NodeManager

Resourcemanager

Zookeeper

Zookeeper Server

Flume(采集日志)

Flume

Kafka

Kafka

Flume

(消费Kafka日志)

Flume

Flume

(消费Kafka业务)

Flume

Hive

MySQL

MySQL

DataX

Spark

DolphinScheduler

ApiApplicationServer

AlertServer

MasterServer

WorkerServer

LoggerServer

Superset

Superset

Flink

ClickHouse

Redis

Hbase

服务数总计

20

11

12

前期准备工作

1、购买三台阿里云服务器

 修改三台服务器的hosts文件

vim /etc/hosts

172.16.94.130  hadoop102       hadoop102
172.16.94.131  hadoop103       hadoop103
172.16.94.132  hadoop104       hadoop104

配置mac本地的hosts文件

120.55.15.183    hadoop102
118.178.235.141  hadoop103
101.37.22.127    hadoop104

开通以下端口

因为采用了阿里云服务器,访问需要开通端口

服务

端口

Cloudera Manager Server(WebUI)

7180

HDFS NameNode(WebUI)

9870

SecondaryNameNode

9868

Yarn ResourceManager(WebUI)

8088

JobHistory Server(WebUI)

19888

HBase Master(WebUI)

16010

HiveServer2 (WebUI)

10002

HUE Server(WebUI)

8888/8889

Oozie Server

11000

Sentry Server

51000

Spark Master/Worker/History Server

18080/18081/18088

Kerberos

88

MySQL

3306

1.2、环境前期准备 (以下操作三台机子都要执行)

1)联网情况检测

[root@hadoop102 ~]# ping www.baidu.com
PING www.a.shifen.com (180.101.50.188) 56(84) bytes of data.
64 bytes from 180.101.50.188 (180.101.50.188): icmp_seq=1 ttl=50 time=15.8 ms
64 bytes from 180.101.50.188 (180.101.50.188): icmp_seq=2 ttl=50 time=15.8 ms
64 bytes from 180.101.50.188 (180.101.50.188): icmp_seq=3 ttl=50 time=15.8 ms

 

2)安装epel-release

注:Extra Packages for Enterprise Linux是为“红帽系”的操作系统提供额外的软件包,适用于RHEL、CentOS和Scientific Linux。相当于是一个软件仓库,大多数rpm包在官方 repository 中是找不到的)

[root@hadoop102 ~]#  yum install -y epel-release

3)关闭防火墙,关闭防火墙开机自启

[root@hadoop102 ~]# systemctl stop firewalld
[root@hadoop102 ~]# systemctl disable firewalld.service

注意:在企业开发时,通常单个服务器的防火墙时关闭的。公司整体对外会设置非常安全的防火墙

4)创建shuidi用户,并修改shuidi用户的密码

[root@hadoop102 ~]# useradd shuidi
[root@hadoop102 ~]# passwd shuidi
更改用户 shuidi 的密码 。
新的 密码:
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。

5)配置shuidi用户具有root权限,方便后期加sudo执行root权限的命令

[root@hadoop102 ~]# vim /etc/sudoers

修改/etc/sudoers文件,在%wheel这行下面添加一行,如下所示:

## Allow root to run any commands anywhere 
root    ALL=(ALL)       ALL

## Allows members of the 'sys' group to run networking, software, 
## service management apps and more.
# %sys ALL = NETWORKING, SOFTWARE, SERVICES, STORAGE, DELEGATING, PROCESSES, LOCATE, DRIVERS

## Allows people in group wheel to run all commands
%wheel  ALL=(ALL)       ALL
shuidi  ALL=(ALL)       NOPASSWD:ALL

注意:shuid这一行不要直接放到root行下面,因为所有用户都属于wheel组,你先配置了shuid具有免密功能,但是程序执行到%wheel行时,该功能又被覆盖回需要密码。所以shuid要放到%wheel这行下面。

后面的操作切换 shuidi 用户执行

6)在/opt目录下创建文件夹,并修改所属主和所属组

(1)在/opt目录下创建module、software文件夹

[shuidi@hadoop102 ~]$ sudo mkdir /opt/module
[shuidi@hadoop102 opt]$ sudo mkdir /opt/software

(2)修改module、software文件夹的所有者和所属组均为shuidi用户

[shuidi@hadoop102 opt]$ sudo chown shuidi:shuidi /opt/module
[shuidi@hadoop102 opt]$ sudo chown shuidi:shuidi /opt/software

(3)查看module、software文件夹的所有者和所属组

[shuidi@hadoop102 opt]$ cd /opt/
[shuidi@hadoop102 opt]$ ll
总用量 8
drwxr-xr-x 2 shuidi shuidi 4096 6月  23 13:17 module
drwxr-xr-x 2 shuidi shuidi 4096 6月  23 13:17 software

1.3、编写集群分发脚本xsync

1)xsync集群分发脚本

(1)需求:循环复制文件到所有节点的相同目录下

(2)需求分析

①rsync命令原始拷贝:

rsync  -av     /opt/module           root@hadoop103:/opt/

②期望脚本:

xsync要同步的文件名称

③说明:在/home/shuidi/bin这个目录下存放的脚本,shuidi用户可以在系统任何地方直接执行。

(3)脚本实现

①在用的家目录/home/shuidi下创建bin文件夹

[shuidi@hadoop102 ~]$ mkdir bin

②在/home/shuidi/bin目录下创建xsync文件,以便全局调用

[shuidi@hadoop102 bin]$ cd /home/shuidi/bin
[shuidi@hadoop102 bin]$ vim xsync

在该文件中编写如下代码

#!/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

③修改脚本xsync具有执行权限

[shuidi@hadoop102 bin]$  chmod +x xsync

④测试脚本

[shuidi@hadoop102 bin]$ xsync xsync

1.4、 SSH无密登录配置

(1)hadoop102上生成公钥和私钥:

[shuidi@hadoop102 .ssh]$ pwd
/home/shuidi/.ssh

[shuidi@hadoop102 .ssh]$ ssh-keygen -t rsa
然后敲(三个回车),就会生成两个文件 id_rsa(私钥)、id_rsa.pub(公钥)


将公钥拷贝到要免密登录的目标机器上
[shuidi@hadoop102 .ssh]$ ssh-copy-id hadoop102
[shuidi@hadoop102 .ssh]$ ssh-copy-id hadoop103
[shuidi@hadoop102 .ssh]$ ssh-copy-id hadoop104

(2)hadoop103上生成公钥和私钥:

[shuidi@hadoop103 .ssh]$ pwd
/home/shuidi/.ssh
[shuidi@hadoop103 .ssh]$ ssh-keygen -t rsa
然后敲(三个回车),就会生成两个文件 id_rsa(私钥)、id_rsa.pub(公钥)


将公钥拷贝到要免密登录的目标机器上
[shuidi@hadoop103 .ssh]$ ssh-copy-id hadoop102
[shuidi@hadoop103 .ssh]$ ssh-copy-id hadoop103
[shuidi@hadoop103 .ssh]$ ssh-copy-id hadoop104

(3)hadoop104上生成公钥和私钥:

[shuidi@hadoop104 .ssh]$ pwd
/home/shuidi/.ssh

[shuidi@hadoop104 .ssh]$  ssh-keygen -t rsa
然后敲(三个回车),就会生成两个文件 id_rsa(私钥)、id_rsa.pub(公钥)

将公钥拷贝到要免密登录的目标机器上
[shuidi@hadoop104 .ssh]$ ssh-copy-id hadoop102
[shuidi@hadoop104 .ssh]$ ssh-copy-id hadoop103
[shuidi@hadoop104 .ssh]$  ssh-copy-id hadoop104

1.5、安装JDK

1)将JDK导入到hadoop102的/opt/software文件夹下面

[shuidi@hadoop102 software]$ cd /opt/software/
[shuidi@hadoop102 software]$ ll
总用量 190444
-rw-rw-r-- 1 shuidi shuidi 195013152 6月  23 13:42 jdk-8u212-linux-x64.tar.gz

2)解压JDK到/opt/module目录下

[shuidi@hadoop102 software]$ tar -zxvf jdk-8u212-linux-x64.tar.gz -C /opt/module/
[shuidi@hadoop102 module]$ mv jdk1.8.0_212/ jdk-1.8.0

3)配置JDK环境变量

(1)新建/etc/profile.d/my_env.sh文件

[shuidi@hadoop102 module]$ sudo vim /etc/profile.d/my_env.sh

添加如下内容,然后保存(:wq)退出。

#JAVA_HOME
export JAVA_HOME=/opt/module/jdk-1.8.0
export PATH=$PATH:$JAVA_HOME/bin

(2)让环境变量生效

[shuidi@hadoop102 module]$ source /etc/profile.d/my_env.sh

4)测试JDK是否安装成功

[shuidi@hadoop102 module]$ java -version
java version "1.8.0_212"
Java(TM) SE Runtime Environment (build 1.8.0_212-b10)
Java HotSpot(TM) 64-Bit Server VM (build 25.212-b10, mixed mode)

5)分发JDK

[shuidi@hadoop102 module]$ xsync /opt/module/jdk-1.8.0

6)分发环境变量配置文件

[shuidi@hadoop102 module]$ sudo /home/shuidi/bin/xsync /etc/profile.d/my_env.sh

7)分别在hadoop103、hadoop104上执行source

[atguigu@hadoop103 module]$ source /etc/profile.d/my_env.sh
[atguigu@hadoop104 module]$ source /etc/profile.d/my_env.sh

环境变量配置说明

Linux的环境变量可在多个文件中配置,如/etc/profile,/etc/profile.d/*.sh,~/.bashrc,~/.bash_profile等,下面说明上述几个文件之间的关系和区别。

bash的运行模式可分为login shell和non-login shell。

例如,我们通过终端,输入用户名、密码,登录系统之后,得到就是一个login shell。而当我们执行以下命令ssh hadoop103 command,在hadoop103执行command的就是一个non-login shell。

这两种shell的主要区别在于,它们启动时会加载不同的配置文件,login shell启动时会加载/etc/profile,~/.bash_profile,~/.bashrc。non-login shell启动时会加载~/.bashrc。

而在加载~/.bashrc(实际是~/.bashrc中加载的/etc/bashrc)或/etc/profile时,都会执行如下代码片段,

因此不管是login shell还是non-login shell,启动时都会加载/etc/profile.d/*.sh中的环境变量。

1.6、集群命令批量执行脚本

1)在/home/shuidi/bin目录下创建脚本xcall

[shuidi@hadoop102 bin]$ vim xcall

2)在脚本中编写如下内容

#! /bin/bash
 
for i in hadoop102 hadoop103 hadoop104
do
    echo --------- $i ----------
    ssh $i "$*"
done

3)修改脚本执行权限

[shuidi@hadoop102 bin]$ chmod 777 xcall

4)启动脚本

[shuidi@hadoop102 bin]$ xcall jps

  • 8
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值