集群规划

集群规划 - 图1

机器 linux100 linux102 linux103 linux104
Hadoop
Zookeeper

集群配置

centos version 7.5
安装模式 最小安装模式(参考:centos安装配置参考
image.png
磁盘分区:
image.png
centos init```shell

cd /etc/sysconfig/network-scripts

vi ifcfg-ens33

DEVICE=ens33 TYPE=Ethernet NOBOOT=yes BOOTPROTO=static NAME=ens33 IPADDR=192.168.10.100 PREFIX=24 GATEWAY=192.168.10.2 DNS1=192.168.10.2

yum update yum install vim # vim yum install rsync # rsync yum install net-tools # ifconfig, 也可以使用原生的ip addr

  1. |
  2. | 网关 | 192.168.10.0 (掩码:255.255.255.0 |
  3. | root用户 | 账号:root 密码:root |
  4. | 访问用户 | 账号:linux 密码:000000 |
  5. | 主机名 | ```shell
  6. vim /etc/hostname
  7. linux100 # 根据集群的规划来分配名称

| | linux主机名称映射 | ```shell vim /etc/hosts

根据网关下的ip地址与主机名进行映射

192.168.10.100 linux100 192.168.10.101 linux101 192.168.10.102 linux102 192.168.10.103 linux103 192.168.10.104 linux104 192.168.10.105 linux105 192.168.10.106 linux106 192.168.10.107 linux107 192.168.10.108 linux108

  1. |
  2. | windows主机文件映射 | ```shell
  3. vim C:\Windows\System32\drivers\etc
  4. 192.168.10.100 linux100
  5. 192.168.10.101 linux101
  6. 192.168.10.102 linux102
  7. 192.168.10.103 linux103
  8. 192.168.10.104 linux104
  9. 192.168.10.105 linux105
  10. 192.168.10.106 linux106
  11. 192.168.10.107 linux107
  12. 192.168.10.108 linux108

| | 创建工作文件夹 | ```shell mkdir /opt/module mkdir /opt/software

chown linux:linux /opt/module chown linux:linux /opt/module

  1. |
  2. | 卸载虚拟机自带的JDK | ```shell
  3. rpm -qa | grep -i java | xargs -n1 rpm -e --nodeps


- rpm -qa查询所安装的所以rpm软件包
- grep -i忽略大小写
- xargs -n1表示每次只传递一个参数
- rpm -e --nodeps强制卸载软件
| | 解压.tar.gz | ```shell tar -zxvf xxx.tar.gz -C /opt/module/

  1. |
  2. | 配置环境变量 | ```shell
  3. vim /etc/profile.d/my_env.sh # 新建my_env.sh文件
  4. # JAVA_HOME
  5. export JAVA_HOME=/opt/module/jdk1.xxx
  6. export PATH=$PATH:$JAVA_HOME/bin
  7. # HADOOP_HOME
  8. export HADOOP_HOME=/opt/module/hadoop-3.1.3
  9. export PATH=$PATH:$HADOOP_HOME/bin
  10. export PATH=$PATH:$HADOOP_HOME/sbin
  11. # 让新的环境变量path生效
  12. source /etc/profile

| | 集群文件分发脚本 |
- 前提知识
```shell scp —help # scp(secure copy)安全拷贝 unknown option — - usage: scp [-12346BCpqrv] [-c cipher] [-F ssh_config] [-i identity_file] [-l limit] [-o ssh_option] [-P port] [-S program] [[user@]host1:]file1 … [[user@]host2:]file2

scp 可以实现服务器与服务器之间的数据拷贝。(from server1 to server2)

基本语法

scp -r $pdir/$fname $user@$host:$pdir/$fname -r 递归

也可以在目标机器使用命令,将原来机器的文件拷贝过来

rsync远程同步工具

rsync主要用于备份和镜像。具有速度快、避免复制相同内容和支持符号链接额优点

rsync和scp区别:用rsync做文件的复制要比scp速度快,rsync只对差异文件做更新,scp是吧所有文件都复制过去。

基本语法

rsync -av $pdir/$fname $user@$host:$pdir/$fname -a 归档拷贝 -v 显示复制过程

  1. <br />- 分发脚本<br /> - 创建文件`cd ~`,`touch xsync`<br /> - 写入脚本<br /> - 修改xsync执行权限`chmod +x xsync`<br /> - 测试脚本<br /> - 将脚本复制到`/bin`中,方便全局调用`cp xsync /bin/`<br /> - 注意:如果用sudo,那么xsync一定要给他的路径不全。<br />```shell
  2. #!/bin/bash
  3. # 1.判断参数的个数
  4. if [ $# -lt 1 ]
  5. then
  6. echo Not Enough Arguement!
  7. exit;
  8. fi
  9. # 2.遍历集群所有机器
  10. for host in xxx # xxx代表要分发的机器的集合
  11. do
  12. echo ======================= $host =======================
  13. # 3.遍历所有目录,挨个发送
  14. for file in $@
  15. do
  16. # 4.判断文件是否存在
  17. if [ -e $file ]
  18. then
  19. # 5.获取父目录
  20. pdir=$(cd -P $(dirname $file); pwd)
  21. # 6.获取当前文件的名称
  22. fname=$(basename $file)
  23. ssh $host "mkdir -p $pdir"
  24. rsync -av $pdir/$fname $host:$pdir
  25. else
  26. echo $file does not exists!
  27. fi
  28. done
  29. done

| | SSH无秘登录 |
- 原理
image.png
- 生成公钥和私钥
```shell cd /home/xxx/.ssh ssh-keygen -t rsa

生成三个文件,id_rsa(私钥)、id_rsa.pub(公钥)

<br />- 将公钥拷贝到要免密登录的机器上 `ssh-copy-id 机器名`<br />- 注意:在集群使用的时候,我们要给普通账号分别在其他机器上配置无秘登录。还需要给master的root账户配置无秘登录<br />- 注意:.ssh目录权限需要是700. `chmod 700 .ssh`;authorized-key权限为600<br /> |
| jpsall | ```shell
#!/bin/bash

for host in linux102 linux103 linux104
do
    echo ======================= $host =======================
    ssh $host "jps; exit"
done

| | 关闭防火墙 | ```shell systemctl stop firewalld systemctl disable firwalld.service

 |
| 配置atguigu用户拥有root权限 | ```shell
[root@linux102 etc]# 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
linux   ALL=(ALL)       NOPASSWD:ALL

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