大数据部署的前置准备
服务器规划
三台云服务器 ( 有钱豪横 ) , 目前有 5 台 , 先 3 台玩玩手感
名 | 配置 |
---|---|
cpu101 | 8核 32G |
cpu102 | 8核 32G |
cpu103 | 8核 32G |
集群服务器规划 :
服务名称 | 子服务 | cpu101 | cpu102 | cpu103 |
---|---|---|---|---|
HDFS | NameNode | √ | ||
DataNode | √ | √ | √ | |
SecondaryNameNode | √ | |||
Yarn | NodeManager | √ | √ | √ |
Resourcemanager | √ | |||
Zookeeper | Zookeeper Server | √ | √ | √ |
Flume(采集日志) | Flume | √ | √ | |
Flume(消费Kafka) | Flume | √ | ||
Kafka | Kafka | √ | √ | √ |
Hive | Hive | √ | ||
MySQL | MySQL | √ | ||
DataX | DataX | √ | ||
Maxwell | Maxwell | √ | ||
Presto | Coordinator | √ | ||
Worker | √ | √ | √ | |
DolphinScheduler | MasterServer | √ | ||
WorkerServer | √ | √ | √ | |
Druid | Druid | √ | √ | √ |
Kylin | √ | |||
Hbase | HMaster | √ | ||
HRegionServer | √ | √ | √ | |
Superset | √ | |||
Atlas | √ | |||
Solr | Jar | √ | √ | √ |
Sqoop | ||||
Tez | ||||
Kerberos | ||||
Ranger | ||||
Flink | ||||
Spark | ||||
flink-sql-gateway |
配置服务器
修改服务器名(所有节点)
修改主机名(所有节点,重启生效)
vim /etc/hostname
查看主机名称
cat /etc/hostname
重启服务器
全部节点重启
reboot
修改映射 hosts (所有节点)
修改 host 文件(所有节点)
注意 , 当机器不在一个网络中时 , 本机的必须配内网IP , 连接其他云服务用公网IP
在同一个网络时 , 全部配置内网IP
如 , 在 cpu101
配置映射时:
内网ip cpu101
外网ip cpu102
外网ip cpu103
vim /etc/hosts
关闭防火墙(所有节点)
关闭防火墙(所有节点)
systemctl stop firewalld
关闭自启动
systemctl disable firewalld.service
查看防火墙状态
systemctl status firewalld
关闭 SELinux(所有节点)
修改配置文件需要重启机器,永久生效
vim /etc/sysconfig/selinux
SELINUX=disabled
reboot
查看SELinux状态
sestatus
配置用户 (所有节点)
添加 cpu 用户(所有节点,UID 最好大于1000,可能以后会有莫名其妙的问题)
useradd -m cpu -s /bin/bash -u 1050
修改密码
passwd cpu
查看各用户
cat /etc/passwd
配置 cpu 用户具有 root 权限, 方便后期加 sudo 执行 root 权限的命令
vim /etc/sudoers
修改 /etc/sudoers
文件,在 %wheel
这行下面添加一行
cpu ALL=(ALL) NOPASSWD:ALL
切换到该用户
su cpu
SSH 无密登录配置(所有节点)
生成公钥和私钥 ( 所有节点 )
ssh-keygen -t rsa
将公钥拷贝到要免密登录的目标机器上 ( 所有节点 )
ssh-copy-id cpu101
ssh-copy-id cpu102
ssh-copy-id cpu103
创建文件夹 (所有节点)
在 /opt
目录下创建文件夹
sudo mkdir module
sudo mkdir software
sudo mkdir ha
修改 module、 software 文件夹的所有者和所属组均为 cpu用户
sudo chown cpu:cpu module/
sudo chown cpu:cpu software/
sudo chown cpu:cpu ha/
cd ~
mkdir bin
安装 rsync(所有节点)
离线下载
http://mirrors.163.com/centos/7/os/x86_64/Packages/
sudo rpm -ivh rsync-3.1.2-10.el7.x86_64.rpm
安装 net-tool (所有节点)
工具包集合,包含 ifconfig 等命令
离线下载
http://mirrors.163.com/centos/7/os/x86_64/Packages/
sudo rpm -ivh net-tools-2.0-0.25.20131004git.el7.x86_64.rpm
进程管理工具包 psmisc
三台节点均需安装进程管理工具包 psmisc
http://mirrors.163.com/centos/7/os/x86_64/Packages/
sudo rpm -ivh psmisc-22.20-17.el7.x86_64.rpm
集群脚本
配置用户环境变量
新建 /etc/profile.d/my_env.sh
文件
sudo vim /etc/profile.d/my_env.sh
添加如下内容
#CPU_HOME
export CPU_HOME=/home/cpu
export PATH=$PATH:$CPU_HOME/bin
让新的环境变量 PATH 生效
source /etc/profile
复制文件到集群
vim xsync
#!/bin/bash
#1. 判断参数个数
if [ $# -lt 1 ]
then
echo Not Enough Arguement!
exit;
fi
#2. 遍历集群所有机器
for host in cpu101 cpu102 cpu103
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 具有执行权限
chmod 777 xsync
分发 xsync
xsync ./xsync
安装默认环境
安装 Java8
删除JDK
rpm -qa | grep -i java | xargs -n1 rpm -e --nodeps
- xargs -n1:表示每次只传递一个参数
- rpm -e --nodeps:强制卸载软件
上传文件到 /opt/software
目录下
到 /opt/module
目录下
tar -zxvf jdk-8u212-linux-x64.tar.gz -C /opt/module/
配置 JDK 环境变量
/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
让新的环境变量 PATH 生效
source /etc/profile
测试 JDK 是否安装成功
java -version
分发 JDK
xsync jdk1.8.0_212/
分发 my_env.sh
sudo ~/bin/xsync /etc/profile.d/my_env.sh
查看集群 Java 进程
vim jpsall
#!/bin/bash
for host in cpu101 cpu102 cpu103
do
echo =============== $host ===============
ssh $host "jps $@ | grep -v Jps"
done
修改脚本 jpsall 具有执行权限
chmod 777 jpsall
分发 jpsall
xsync ~/bin/jpsall