diff --git a/.idea/workspace.xml b/.idea/workspace.xml
index 8c7568c..9e47845 100644
--- a/.idea/workspace.xml
+++ b/.idea/workspace.xml
@@ -143,6 +143,7 @@
+
diff --git a/source/_posts/bigdata/hadoop/env.md b/source/_posts/bigdata/hadoop/env.md
new file mode 100644
index 0000000..351c97b
--- /dev/null
+++ b/source/_posts/bigdata/hadoop/env.md
@@ -0,0 +1,264 @@
+---
+title: Hadoop集群搭建基础环境
+top_img: /img/site01.jpg
+top_img_height: 800px
+date: 2024-08-01 09:10:40
+tags: hadoop
+---
+
+### 防火墙关闭
+```bash
+# 在 6 台主机执行
+systemctl stop firewalld
+systemctl disable firewalld
+```
+### 配置yum源
+- 下载 repo 文件:
+ [Centos-7.repo](http://mirrors.aliyun.com/repo/Centos-7.repo)
+ 并上传到`/tmp`,进入到`/tmp`
+- 备份并且替换系统的repo文件
+ ``` bash
+ cp Centos-7.repo /etc/yum.repos.d/
+ cd /etc/yum.repos.d/
+ mv CentOS-Base.repo CentOS-Base.repo.bak
+ mv Centos-7.repo CentOS-Base.repo
+ ```
+- 将`nn1`上的`CentOS-Base.repo`拷贝到其他主机
+ ```bash
+ scp /etc/yum.repos.d/CentOS-Base.repo root@nn2:/etc/yum.repos.d
+ scp /etc/yum.repos.d/CentOS-Base.repo root@nn3:/etc/yum.repos.d
+ scp /etc/yum.repos.d/CentOS-Base.repo root@s1:/etc/yum.repos.d
+ scp /etc/yum.repos.d/CentOS-Base.repo root@s2:/etc/yum.repos.d
+ scp /etc/yum.repos.d/CentOS-Base.repo root@s3:/etc/yum.repos.d
+ ```
+- 执行yum源更新命令
+ ```bash
+ yum clean all
+ yum makecache
+ yum update -y
+ ```
+- 安装常用软件
+ ```bash
+ yum install -y openssh-server vim gcc gcc-c++ glibc-headers bzip2-devel lzo-devel curl wget openssh-clients zlib-devel autoconf automake cmake libtool openssl-devel fuse-devel snappy-devel telnet unzip zip net-tools.x86_64 firewalld systemd ntp unrar bzip2
+ ```
+### JDK安装
+>注意需要在六台机器依次执行
+- 上传到`/tmp`目录下,安装
+ ```bash
+ cd /tmp
+ rpm -ivh jdk-8u144-linux-x64.rpm
+ ```
+- 配置环境变量
+ ```bash
+ ln -s /usr/java/jdk1.8.0_144/ /usr/java/jdk1.8
+ echo 'export JAVA_HOME=/usr/java/jdk1.8' >> /etc/profile.d/myEnv.sh
+ echo 'export PATH=$PATH:$JAVA_HOME/bin' >> /etc/profile.d/myEnv.sh
+ source /etc/profile
+ java -version
+ ```
+### 修改主机名和主机名映射
+
+```bash
+vim /etc/hostname
+```
+6台机器分别为nn1、nn2、nn3、s1、s2、s3
+
+```bash
+vim /etc/hosts
+```
+
+修改为
+```text
+192.168.1.30 nn1
+192.168.1.31 nn2
+192.168.1.32 nn3
+192.168.1.33 s1
+192.168.1.34 s2
+192.168.1.35 s3
+```
+### 创建hadoop用户
+```bash
+#创建hadoop用户
+useradd hadoop
+#给hadoop用户设置密码: 12345678
+passwd hadoop
+```
+### 禁止非 wheel 组用户切换到root,配置免密切换root
+- 修改/etc/pam.d/su配置
+ ```bash
+ sed -i 's/#auth\t\trequired\tpam_wheel.so/auth\t\trequired\tpam_wheel.so/g' '/etc/pam.d/su'
+ sed -i 's/#auth\t\tsufficient\tpam_wheel.so/auth\t\tsufficient\tpam_wheel.so/g' '/etc/pam.d/su'
+ ```
+- 修改/etc/login.defs文件
+ ```bash
+ echo "SU_WHEEL_ONLY yes" >> /etc/login.defs
+ ```
+- 添加用户到管理员,禁止普通用户su 到 root
+ ```bash
+ #把hadoop用户加到wheel组里
+ gpasswd -a hadoop wheel
+ #查看wheel组里是否有hadoop用户
+ cat /etc/group | grep wheel
+ ```
+### 给hadoop用户,配置SSH密钥
+#### 配置hadoop用户ssh免密码登录到hadoop
+- 仅在`nn1`执行这段脚本命令即可
+ 但是 `su - hadoop ` ,` mkdir ~/.ssh` 需要在其他主机执行一下
+ ```bash
+ #切换到hadoop用户
+ su - hadoop
+ #生成ssh公私钥
+ ssh-keygen -t rsa -f ~/.ssh/id_rsa -P ''
+ ssh-copy-id nn1
+ ssh-copy-id nn2
+ ssh-copy-id nn3
+ ssh-copy-id s1
+ ssh-copy-id s2
+ ssh-copy-id s3
+ scp /home/hadoop/.ssh/id_rsa hadoop@nn2:/home/hadoop/.ssh
+ scp /home/hadoop/.ssh/id_rsa hadoop@nn3:/home/hadoop/.ssh
+ scp /home/hadoop/.ssh/id_rsa hadoop@s1:/home/hadoop/.ssh
+ scp /home/hadoop/.ssh/id_rsa hadoop@s2:/home/hadoop/.ssh
+ scp /home/hadoop/.ssh/id_rsa hadoop@s3:/home/hadoop/.ssh
+ ```
+#### 配置hadoop用户ssh免密码登录到root
+- 同上
+ ```bash
+ ssh-copy-id root@nn1
+ ssh-copy-id root@ nn2
+ ssh-copy-id root@nn3
+ ssh-copy-id root@s1
+ ssh-copy-id root@s2
+ ssh-copy-id root@s3
+ scp /home/hadoop/.ssh/id_rsa root@nn2:/root/.ssh
+ scp /home/hadoop/.ssh/id_rsa root@nn3:/root/.ssh
+ scp /home/hadoop/.ssh/id_rsa root@s1:/root/.ssh
+ scp /home/hadoop/.ssh/id_rsa root@s2:/root/.ssh
+ scp /home/hadoop/.ssh/id_rsa root@s3:/root/.ssh
+ ```
+### 脚本配置
+- **ips**
+ ```bash
+ vim /home/hadoop/bin/ips
+ ```
+
+ ```bash
+ nn1
+ nn2
+ nn3
+ s1
+ s2
+ s3
+ ```
+- **ssh_all.sh**
+ ```bash
+ vim /home/hadoop/bin/ssh_all.sh
+ ```
+
+ ```bash
+ #! /bin/bash
+ # 进入到当前脚本所在目录
+ cd `dirname $0`
+ # 获取当前脚本所在目录
+ dir_path=`pwd`
+ #echo $dir_path
+ # 读ips文件得到数组(里面是一堆主机名)
+ ip_arr=(`cat $dir_path/ips`)
+ # 遍历数组里的主机名
+ for ip in ${ip_arr[*]}
+ do
+ # 拼接ssh命令: ssh hadoop@nn1.hadoop ls
+ cmd_="ssh hadoop@${ip} \"$*\" "
+ echo $cmd_
+ # 通过eval命令 执行 拼接的ssh 命令
+ if eval ${cmd_} ; then
+ echo "OK"
+ else
+ echo "FAIL"
+ fi
+ done
+ ```
+- **ssh_root.sh**
+ ```bash
+ #! /bin/bash
+ # 进入到当前脚本所在目录
+ cd `dirname $0`
+ # 获取当前脚本所在目录
+ dir_path=`pwd`
+ #echo $dir_path
+ # 读ips文件得到数组(里面是一堆主机名)
+ ip_arr=(`cat $dir_path/ips`)
+ # 遍历数组里的主机名
+ for ip in ${ip_arr[*]}
+ do
+ # 拼接ssh命令: ssh hadoop@nn1.hadoop ls
+ cmd_="ssh hadoop@${ip} ~/bin/exe.sh \"$*\""
+ echo $cmd_
+ # 通过eval命令 执行 拼接的ssh 命令
+ if eval ${cmd_} ; then
+ echo "OK"
+ else
+ echo "FAIL"
+ fi
+ done
+ ```
+- **scp_all.sh**
+ ```bash
+ #! /bin/bash
+ # 进入到当前脚本所在目录
+ cd `dirname $0`
+ # 获取当前脚本所在目录
+ dir_path=`pwd`
+ #echo $dir_path
+ # 读ips文件得到数组(里面是一堆主机名)
+ ip_arr=(`cat $dir_path/ips`)
+ # 源
+ source_=$1
+ # 目标
+ target=$2
+ # 遍历数组里的主机名
+ for ip in ${ip_arr[*]}
+ do
+ # 拼接scp命令: scp 源 hadoop@nn1.hadoop:目标
+ cmd_="scp -r ${source_} hadoop@${ip}:${target}"
+ echo $cmd_
+ # 通过eval命令 执行 拼接的scp 命令
+ if eval ${cmd_} ; then
+ echo "OK"
+ else
+ echo "FAIL"
+ fi
+ done
+ ```
+- **exe.sh**
+ ```bash
+ #切换到root用户执行cmd命令
+ cmd=$*
+ su - << EOF
+ $cmd
+ EOF
+ ```
+- 赋予执行权限
+ ```bash
+ chmod +x ssh_all.sh
+ chmod +x scp_all.sh
+ chmod +x ssh_root.sh
+ chmod +x exe.sh
+ ```
+- 分发到其他主机
+ ```bash
+ ./ssh_all.sh mkdir /home/hadoop/bin
+ ./scp_all.sh /home/hadoop/bin/ips /home/hadoop/bin/
+ ./scp_all.sh /home/hadoop/bin/exe.sh /home/hadoop/bin/
+ ./scp_all.sh /home/hadoop/bin/ssh_all.sh /home/hadoop/bin/
+ ./scp_all.sh /home/hadoop/bin/scp_all.sh /home/hadoop/bin/
+ ./scp_all.sh /home/hadoop/bin/ssh_root.sh /home/hadoop/bin/
+ ```
+
+- 将 `/home/hadoop/bin`添加到hadoop用户的环境变量,需要切换到`hadoop`用户
+
+ ```bash
+ echo 'export PATH=$PATH:/home/hadoop/bin' >> ~/.bashrc && source ~/.bashrc
+ scp_all.sh /home/hadoop/.bashrc /home/hadoop/
+ ssh_all.sh source ~/.bashrc
+ ```
\ No newline at end of file