diff --git a/content/post/hdp2.md b/content/post/hdp2.md
new file mode 100644
index 0000000..ea59ad7
--- /dev/null
+++ b/content/post/hdp2.md
@@ -0,0 +1,262 @@
+---
+title: "hadoop2 集群部署"
+date: 2023-05-23T10:00:00+08:00
+lastmod: 2023-05-23T10:00:00+08:00
+keywords: []
+tags: ["hadoop"]
+categories: ["storage"]
+---
+
+## 环境
+操作系统 | 主机名 | 地址 | 数据目录 | 运行组件
+---- | ---- | ---- | ---- | ----
+Rocky9 | hdp-nn | 192.168.8.1/24 | /data/hdp-nn | Namenode
+Rocky9 | hdp-snn | 192.168.8.2/24 | /data/hdp-snn | SecondaryNamenode
+Rocky9 | hdp-rm | 192.168.8.3/24 | - | ResourceManager
+Rocky9 | hdp-slave10 | 192.168.8.10/24 | /data/hdp-dn | Datanode, NodeManager
+Rocky9 | hdp-slave11 | 192.168.8.11/24 | /data/hdp-dn | Datanode, NodeManager
+
+## 服务器初始配置
+- 在**全部主机**上执行如下操作
+- 禁用防火墙
+- 禁用 selinux
+- 配置时间同步
+- 配置主机名解析
+ ```bash
+ echo "192.168.8.1 hdp-nn" >> /etc/hosts
+ echo "192.168.8.2 hdp-snn" >> /etc/hosts
+ echo "192.168.8.3 hdp-dn" >> /etc/hosts
+ echo "192.168.8.10 hdp-slave10" >> /etc/hosts
+ echo "192.168.8.11 hdp-slave11" >> /etc/hosts
+ ```
+
+## ssh 免密登录
+- 配置 **hdp-nn** 可以 ssh 免密登录 hdp-nn、hdp-snn 和 hdp-slaveXX
+ ```bash
+ # 在 hdp-nn 上执行如下操作
+ ssh-copy-id hdp-nn
+ ssh-copy-id hdp-snn
+ ssh-copy-id hdp-slave10
+ ssh-copy-id hdp-slave11
+ ```
+
+- 配置 **hdp-rm** 可以 ssh 免密登录 hdp-rm 和 hdp-slaveXX
+ ```bash
+ # 在 hdp-rm 上执行如下操作
+ ssh-copy-id hdp-rm
+ ssh-copy-id hdp-slave10
+ ssh-copy-id hdp-slave11
+ ```
+
+## 部署 jdk8 环境
+- 在**全部主机**上执行如下操作
+- 上传 jdk-8u311-linux-x64.tar.gz,解压
+ ```bash
+ tar zxf jdk-8u311-linux-x64.tar.gz
+ mv jdk1.8.0_311 /opt/jdk
+ ```
+
+- 配置 jdk 环境变量
+ ```bash
+ echo 'export JAVA_HOME=/opt/jdk' > /etc/profile.d/jdk.sh
+ echo 'export PATH=$JAVA_HOME/bin:$PATH' >> /etc/profile.d/jdk.sh
+ source /etc/profile.d/jdk.sh
+ ```
+
+## 部署 hadoop 环境
+- 在**全部主机**上执行如下操作
+- 下载 hadoop 2.10.2 部署包,解压
+ ```bash
+ curl -LO https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/hadoop-2.10.2/hadoop-2.10.2.tar.gz
+ tar zxf hadoop-2.10.2.tar.gz
+ mv hadoop-2.10.2 /opt/hdp
+ ```
+
+- 配置 hadoop 环境变量
+ ```bash
+ echo 'export HADOOP_HOME=/opt/hdp' > /etc/profile.d/hdp.sh
+ echo 'export PATH=$HADOOP_HOME/bin:$PATH' >> /etc/profile.d/hdp.sh
+ # 不推荐把 $HADOOP_HOME/sbin 加入环境变量 PATH.
+ source /etc/profile.d/hdp.sh
+ ```
+
+### 修改 hadoop-env.sh
+- 编辑 $HADOOP_HOME/etc/hadoop/hadoop-env.sh,指定 JAVA_HOME 环境变量
+ ```bash
+ export JAVA_HOME=/opt/jdk
+ ```
+
+### 修改 core-site.xml
+- 编辑 $HADOOP_HOME/etc/hadoop/core-site.xml,参考内容如下
+ ```xml
+
+
+
+ fs.defaultFS
+ hdfs://hdp-nn:8020
+
+
+
+ hadoop.tmp.dir
+ /tmp/hdp
+
+
+
+ hadoop.proxyuser.root.hosts
+ *
+
+
+
+ hadoop.proxyuser.root.groups
+ *
+
+
+ ```
+
+### 修改 hdfs-site.xml
+- 编辑 $HADOOP_HOME/etc/hadoop/hdfs-site.xml,参考内容如下
+ ```xml
+
+
+
+ dfs.namenode.name.dir
+ /data/hdp_nn
+
+
+
+ dfs.namenode.checkpoint.dir
+ /data/hdp_snn
+
+
+
+ dfs.datanode.data.dir
+ /data/hdp_dn
+
+
+
+ dfs.namenode.http-address
+ hdp-nn:9870
+
+
+
+ dfs.namenode.secondary.http-address
+ hdp-snn:9868
+
+
+
+ dfs.replication
+ 2
+
+
+
+ dfs.webhdfs.enabled
+ true
+
+
+ ```
+
+### 修改 yarn-site.xml
+- 编辑 $HADOOP_HOME/etc/hadoop/yarn-site.xml,参考内容如下
+ ```xml
+
+
+ yarn.nodemanager.aux-services
+ mapreduce_shuffle
+
+
+
+ yarn.resourcemanager.hostname
+ hdp-rm
+
+
+
+ yarn.resourcemanager.webapp.address
+ hdp-rm:8088
+
+
+
+ yarn.log-aggregation-enable
+ true
+
+
+
+ yarn.log-aggregation.retain-seconds
+ 604800
+
+
+
+ yarn.nodemanager.vmem-check-enabled
+ false
+
+
+ ```
+
+### 修改 mapred-env.sh
+- 编辑 $HADOOP_HOME/etc/hadoop/mapred-env.sh,指定 JAVA_HOME 环境变量
+ ```bash
+ export JAVA_HOME=/opt/jdk
+ ```
+
+### 修改 mapred-site.xml
+- 编辑 $HADOOP_HOME/etc/hadoop/mapred-site.xml,参考内容如下
+ ```xml
+
+
+ mapreduce.framework.name
+ yarn
+
+
+
+ mapreduce.jobhistory.address
+ hdp-rm:10020
+
+
+
+ mapreduce.jobhistory.webapp.address
+ hdp-rm:19888
+
+
+ ```
+
+### 修改 slaves
+- 编辑 $HADOOP_HOME/etc/hadoop/slaves,替换成全部的 slave 主机,参考内容如下
+ ```txt
+ hdp-slave10
+ hdp-slave11
+ ```
+
+### 创建临时目录和数据目录
+- 在 **hdp-nn** 上创建临时目录和数据目录
+ ```bash
+ mkdir /tmp/hdp
+ mkdir /data/hdp_nn
+ ```
+
+- 在 **hdp-snn** 上创建临时目录和数据目录
+ ```bash
+ mkdir /tmp/hdp
+ mkdir /data/hdp_snn
+ ```
+
+- 在 **hdp-rm** 上创建临时目录
+ ```bash
+ mkdir /tmp/hdp
+ ```
+
+- 在 **hdp-slaveXX** 上创建临时目录和数据目录
+ ```bash
+ mkdir /tmp/hdp #建议挂载独立盘
+ mkdir /data/hdp_dn #建议挂载独立盘
+ ```
+
+## 启动 hadoop 集群
+- 在 **hdp-nn** 上启动 dfs 集群
+ ```bash
+ /opt/hdp/sbin/start-dfs.sh
+ ```
+
+- 在 **hdp-rm** 上启动 yarn 集群
+ ```bash
+ /opt/hdp/sbin/start-yarn.sh
+ ```
+
diff --git a/content/post/hive2.md b/content/post/hive2.md
new file mode 100644
index 0000000..a614099
--- /dev/null
+++ b/content/post/hive2.md
@@ -0,0 +1,173 @@
+---
+title: "hive2 部署"
+date: 2023-05-23T11:00:00+08:00
+lastmod: 2023-05-23T11:00:00+08:00
+keywords: []
+tags: ["hadoop", "hive"]
+categories: ["storage"]
+---
+
+## 环境
+操作系统 | 主机名 | 地址 | 运行组件
+---- | ---- | ---- | ----
+Rocky9 | hive-hs20 | 192.168.8.20/24 | Hive Server
+Rocky9 | hive-ms21 | 192.168.8.21/24 | Hive Metastore, MySQL8.0
+
+## 服务器初始配置
+- 在**全部主机**上执行如下操作
+- 禁用防火墙
+- 禁用 selinux
+- 配置时间同步
+- 配置主机名解析
+ ```bash
+ echo "192.168.8.1 hdp-nn" >> /etc/hosts
+ echo "192.168.8.2 hdp-snn" >> /etc/hosts
+ echo "192.168.8.3 hdp-dn" >> /etc/hosts
+ echo "192.168.8.10 hdp-slave10" >> /etc/hosts
+ echo "192.168.8.11 hdp-slave11" >> /etc/hosts
+ echo "192.168.8.20 hdp-hs20" >> /etc/hosts
+ echo "192.168.8.21 hdp-ms21" >> /etc/hosts
+ ```
+
+## 创建 mysql 数据库
+- 在 **hive-ms21** 上执行如下操作
+- 部署 mysql8.0,略过
+- 创建用户及其数据库,参考 sql 如下
+ ```sql
+ create user hive@127.7.7.7 identified by 'Hive_1234';
+ create database hive default charset utf8mb4;
+ grant all on hive.* to hive@127.7.7.7;
+ ```
+
+## 复制 jdk 和 hadoop 环境
+- 在**全部主机**上执行如下操作
+- 从 hdp-nn 复制 jdk 和 hadoop 环境
+ ```bash
+ scp -r hdp-nn:/opt/{jdk,hdp} /opt/
+ scp hdp-nn:/etc/profile.d/{jdk,hdp}.sh /etc/profile.d/
+ source /etc/profile.d/jdk.sh
+ source /etc/profile.d/hdp.sh
+ ```
+
+## 部署 hive 环境
+- 在**全部主机**上执行如下操作
+- 下载 hive 2.3.9 部署包,解压
+ ```bash
+ curl -LO https://archive.apache.org/dist/hive/hive-2.3.9/apache-hive-2.3.9-bin.tar.gz
+ tar zxf apache-hive-2.3.9.tar.gz
+ mv apache-hive-2.3.9 /opt/hive
+ ```
+
+- 下载 mysql 连接库,解压到 hive 库目录下
+ ```bash
+ curl -LO https://downloads.mysql.com/archives/get/p/3/file/mysql-connector-j-8.0.33.tar.gz
+ tar zxf mysql-connector-j-8.0.33.tar.gz mysql-connector-j-8.0.33/mysql-connector-j-8.0.33.jar
+ mv mysql-connector-j-8.0.33/mysql-connector-j-8.0.33.jar /opt/hive/lib/
+ rm -rf mysql-connector-j-8.0.33*
+ ```
+
+- 配置环境变量
+ ```bash
+ echo 'export HIVE_HOME=/opt/hive' > /etc/profile.d/hive.sh
+ echo 'export PATH=$HIVE_HOME/bin:$PATH' >> /etc/profile.d/hive.sh
+ source /etc/profile.d/hive.sh
+ ```
+
+### 修改 hive-env.sh
+- 编辑 $HIVE_HOME/conf/hive-env.sh,指定 HADOOP_HOME 环境变量
+ ```bash
+ export HADOOP_HOME=/opt/hdp
+ ```
+
+### 创建 hive-site.xml
+- 创建 $HIVE_HOME/conf/hive-site.xml,参考内容如下
+ ```xml
+
+
+
+ javax.jdo.option.ConnectionURL
+ jdbc:mysql://127.7.7.7:3306/hive?createDatabaseIfNotExist=true&useSSL=false
+
+
+
+ javax.jdo.option.ConnectionDriverName
+ com.mysql.cj.jdbc.Driver
+
+
+
+ javax.jdo.option.ConnectionUserName
+ hive
+
+
+
+ javax.jdo.option.ConnectionPassword
+ Hive_1234
+
+
+
+ datanucleus.schema.autoCreateAll
+ true
+
+
+ hive.cli.print.header
+ true
+
+
+ hive.cli.print.current.db
+ true
+
+
+
+ hive.server2.webui.port
+ 10002
+
+
+
+ hive.metastore.warehouse.dir
+ /hive/warehouse
+
+
+
+ hive.metastore.uris
+ thrift://hive-ms:9083
+
+
+
+ tez.am.staging-dir
+ /hive/tez/staging
+
+
+ ```
+
+## 初始化 hive 库
+- 在 **hive-ms21** 上执行如下操作
+ ```bash
+ schematool -dbType mysql -initSchema
+ ```
+
+## 启动 hive
+- 在 **hive-ms21** 上启动 hive metastore
+ ```bash
+ hive --service metastore
+ ```
+
+- 在 **hive-hs20** 上启动 hive server
+ ```bash
+ hive --service hiveserver2
+ ```
+
+## 客户端连接
+- 本地直接连接
+ ```bash
+ hive
+ ```
+
+- beeline 连接,需要[在 $HADOOP_HOME/etc/hadoop/core-site.xml 中配置 proxyuser](/hdp2#修改 core-site.xml)
+ ```bash
+ beeline -u jdbc:hive2://hive-hs20:10000 -n root
+ ```
+
diff --git a/content/post/tez.md b/content/post/tez.md
new file mode 100644
index 0000000..51d4187
--- /dev/null
+++ b/content/post/tez.md
@@ -0,0 +1,118 @@
+---
+title: "hive2 tez 部署"
+date: 2023-05-23T12:00:00+08:00
+lastmod: 2023-05-23T12:00:00+08:00
+keywords: []
+tags: ["hadoop", "hive", "tez"]
+categories: ["storage"]
+---
+
+## 环境
+操作系统 | 主机名 | 地址 | 运行组件
+---- | ---- | ---- | ----
+Rocky8 | 编译服务器 | - | 编译工具
+Rocky9 | hive-hs20 | 192.168.8.20/24 | Hive Server, Tez
+Rocky9 | hive-ms21 | 192.168.8.21/24 | Hive Metastore, MySQL8.0, Tez
+
+## 准备 protoc 2.5.0 环境
+- 在**编译服务器**上执行如下操作
+- 下载源码,解压
+ ```bash
+ curl -LO https://github.com/protocolbuffers/protobuf/releases/download/v2.5.0/protobuf-2.5.0.tar.gz
+ tar zxf protobuf-2.5.0.tar.gz
+ cd protobuf-2.5.0.tar.gz
+ ```
+
+- 编译
+ ```bash
+ mkdir /opt/protoc-2.5.0
+ ./configure --prefix=/opt/protoc-2.5.0
+ make
+ make check
+ make install
+ ```
+
+## 编译 tez
+- 在**编译服务器**上执行如下操作
+- 下载 tez 部署包,解压
+ ```bash
+ curl -LO https://mirrors.tuna.tsinghua.edu.cn/apache/tez/0.9.2/apache-tez-0.9.2-src.tar.gz
+ tar zxf apache-tez-0.9.2-src.tar.gz
+ cd apache-tez-0.9.2-src
+ ```
+
+- 编译
+ ```bash
+ export PATH=/opt/protoc-2.5.0/bin:/opt/jdk8/bin:/opt/maven3/bin:$PATH
+ mvn clean package -DskipTests=true -Dtar -Dhadoop.version=2.10.2 -Dmaven.javadoc.skip=true -pl tez-dist -am
+ ```
+
+- 上传 tez-dist/target/tez-0.9.2-minimal.tar.gz 到**全部 hive 服务器**中
+- 上传 tez-dist/target/tez-0.9.2.tar.gz 到 **hive-hs20** 中
+
+## 部署 tez 环境
+- 在 **hive-hs20** 执行如下操作
+- 上传 tez-0.9.2.tar.gz 到 hdfs
+ ```bash
+ hdfs dfs -mkdir /tez
+ hdfs dfs -put tez-0.9.2.tar.gz /tez/
+ ```
+
+- 创建 tez staging 目录
+ ```bash
+ hdfs dfs -mkdir -p /hive/tez/staging
+ ```
+
+- 在**全部 hive 主机**上解压 tez 部署包
+ ```bash
+ mkdir /opt/tez
+ tar zxf tez-0.9.2-minimal.tar.gz -C /opt/tez/
+ ```
+
+### 修改 yarn-site.xml
+- 在**全部主机(包括 hadoop)**上执行如下操作
+- 参考[在 $HADOOP_HOME/etc/hadoop/yarn-site.xml 中关闭 yarn 虚拟内存检查](/hdp2#修改 yarn-site.xml)
+
+### 创建 tez-site.xml
+- 在**全部主机(包括 hadoop)**上执行如下操作
+- 创建 $HADOOP_HOME/etc/hadoop/tez-site.xml,参考内容如下
+ ```xml
+
+
+ tez.lib.uris
+ string
+ hdfs://hdp-nn:8020/tez/tez-0.9.2.tar.gz
+
+
+ ```
+
+### 修改 hive-site.xml
+- 在**全部 hive 主机**上执行如下操作
+- 参考[在 $HIVE_HOME/etc/hadoop/yarn-site.xml 中配置 tez staging 目录](/hive2#创建 hive-site.xml)
+
+### 修改 hive-env.sh
+- 在**全部 hive 主机**上执行如下操作
+- 编辑 $HIVE_HOME/conf/hive-env.sh,在文件最后增加如下内容
+ ```bash
+ export TEZ_HOME=/opt/tez
+ TEZ_JARS=""
+ for jar in $(ls $TEZ_HOME | grep jar); do
+ TEZ_JARS=$TEZ_JARS:$TEZ_HOME/$jar
+ done
+ for jar in $(ls $TEZ_HOME/lib); do
+ TEZ_JARS=$TEZ_JARS:$TEZ_HOME/lib/$jar
+ done
+ export HIVE_AUX_JARS_PATH=$TEZ_HOME/lib
+ export HADOOP_CLASSPATH=$TEZ_JARS
+ ```
+
+## 重启环境
+- 重启 hadoop dfs 和 yarn 集群
+- 重启 hive metastore 和 hiveserver2
+
+## 设置引擎
+- 设置 hive 引擎为 tez,执行 sql 语句
+ ```sql
+ set set hive.execution.engine=tez;
+ ```
+