diff --git a/content/post/hbase.md b/content/post/hbase.md
deleted file mode 100644
index e3daf9f..0000000
--- a/content/post/hbase.md
+++ /dev/null
@@ -1,130 +0,0 @@
----
-title: "hbase 部署"
-date: 2023-05-23T18:00:00+08:00
-lastmod: 2025-12-01T10:00:00+08:00
-keywords: []
-tags: ["hadoop", "hbase"]
-categories: ["hadoop"]
----
-
-## 环境
-操作系统 | 主机名 | 地址 | 运行组件
----- | ---- | ---- | ----
-Rocky9 | hbase-m30 | 192.168.8.30/24 | hbase Master
-Rocky9 | hbase-bm31 | 192.168.8.31/24 | hbase Backup Master
-Rocky9 | hbase-rs32 | 192.168.8.32/24 | hbase Rigion Server
-Rocky9 | hbase-rs33 | 192.168.8.33/24 | hbase Rigion Server
-
-## 前提
-- [已部署好 hadoop 2.10](/post/hdp2)
-- [已部署好 zookeeper 3.4 以上版本](/post/zk-install)
-
-## 服务器初始配置
-- 在**全部主机**上执行如下操作
-- 禁用防火墙
-- 禁用 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.30 hbase-m30" >> /etc/hosts
- echo "192.168.8.31 hbase-bm31" >> /etc/hosts
- echo "192.168.8.32 hbase-region32" >> /etc/hosts
- echo "192.168.8.33 hbase-region33" >> /etc/hosts
- ```
-
-## ssh 免密登录
-- 配置 **hbase-m30** 可以 ssh 免密登录 hbase-m30、hbase-bm31 和 hbase-rsXX
- ```bash
- # 在 hbase-m30 上执行如下操作
- ssh-copy-id hbase-m30
- ssh-copy-id hbase-bm31
- ssh-copy-id hbase-rs32
- ssh-copy-id hbase-rs33
- ```
-
-## 复制 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
- ```
-
-## 部署 hbase 环境
-- 在**全部主机**上执行如下操作
-- 下载 hbase 2.5.13 部署包,解压
- ```bash
- curl -LO https://mirrors.tuna.tsinghua.edu.cn/apache/hbase/2.5.13/hbase-2.5.13-bin.tar.gz
- tar zxf hbase-2.5.13-bin.tar.gz
- mv hbase-2.5.13 /opt/hbase
- ```
-
-- 配置环境变量
- ```bash
- echo 'export HBASE_HOME=/opt/hbase' > /etc/profile.d/hbase.sh
- echo 'export PATH=$HBASE_HOME/bin:$PATH' >> /etc/profile.d/hbase.sh
- source /etc/profile.d/hbase.sh
- ```
-
-### 修改 hbase-env.sh
-- 编辑 $HBASE_HOME/conf/hbase-env.sh,指定如下三个环境变量
- ```bash
- export JAVA_HOME=/opt/jdk
- export HBASE_CLASSPATH=$HADOOP_HOME/etc/hadoop
- export HBASE_MANAGES_ZK=false
- ```
-
-### 创建 hbase-site.xml
-- 清空 $HBASE_HOME/conf/hbase-site.xml,添加如下内容
- ```xml
-
-
-
- hbase.cluster.distributed
- true
-
-
-
- hbase.rootdir
- hdfs://hdp-nn-21:8020/hbase
-
-
-
- hbase.zookeeper.quorum
- zk1,zk2,zk3
-
-
- ```
-
-### 修改 regionservers
-- 清空 $HBASE_HOME/conf/regionservers,添加如下内容
- ```
- hbase-rs32
- hbase-rs33
- ```
-
-### 创建 backup-masters
-- 创建 $HBASE_HOME/conf/backup-masters,添加如下内容
- ```
- hbase-bm31
- ```
-
-## 启动 hbase
-- 在 **hbase-m30** 上启动 hbase 集群
- ```bash
- start-hbase.sh
- ```
-
-## 客户端连接
-- 本地直接进入 hbase shell
- ```bash
- hbase shell
- ```
-
diff --git a/content/post/hdp2.md b/content/post/hdp2.md
index 32fc329..0c04532 100644
--- a/content/post/hdp2.md
+++ b/content/post/hdp2.md
@@ -1,69 +1,71 @@
---
-title: "hadoop2 集群部署"
+title: "hadoop2.10 部署"
date: 2023-05-23T10:00:00+08:00
-lastmod: 2023-05-23T10:00:00+08:00
+lastmod: 2025-12-01T10:00:00+08:00
keywords: []
-tags: ["hadoop"]
+tags: ["hadoop", "hive", "tez", "hbase", "spark"]
categories: ["hadoop"]
---
## 环境
-操作系统 | 主机名 | 地址 | 数据目录 | 运行组件
----- | ---- | ---- | ---- | ----
-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
+主机名 | 地址 | 本地数据目录 | 组件
+---- | ---- | ---- | ----
+编译服务器 | - | - | 各种编译工具
+hdp-nn | 192.168.8.1/24 | /data/hdp-nn | Namenode, Spark
+hdp-snn | 192.168.8.2/24 | /data/hdp-snn | SecondaryNamenode
+hdp-rm | 192.168.8.3/24 | - | ResourceManager
+hdp-slave0 | 192.168.8.10/24 | /data/hdp-dn | Datanode, NodeManager, Spark
+hdp-slave1 | 192.168.8.11/24 | /data/hdp-dn | Datanode, NodeManager, Spark
+hive-hs | 192.168.8.20/24 | - | HiveServer2, Tez
+hive-ms | 192.168.8.21/24 | - | HiveMetastore, Tez
+hbase-m | 192.168.8.30/24 | - | HbaseMaster
+hbase-bm | 192.168.8.31/24 | - | HbaseBackupMaster
+hbase-rs0 | 192.168.8.32/24 | - | HbaseRigionServer
+hbase-rs1 | 192.168.8.33/24 | - | HbaseRigionServer
-## 服务器初始配置
+## 部署 hadoop 集群
+### 服务器初始配置
- 在**全部主机**上执行如下操作
- 禁用防火墙
- 禁用 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
+- 配置主机名解析,修改 /etc/hosts,增加如下内容
+ ```
+ # hadoop
+ 192.168.8.1 hdp-nn
+ 192.168.8.2 hdp-snn
+ 192.168.8.3 hdp-dn
+ 192.168.8.10 hdp-slave0
+ 192.168.8.11 hdp-slave1
```
-## ssh 免密登录
-- 配置 **hdp-nn** 可以 ssh 免密登录 hdp-nn、hdp-snn 和 hdp-slaveXX
+### ssh 免密登录
+- 在 **hdp-nn** 配置 ssh 免密登录 hdp-nn、hdp-snn 和 hdp-slaveX
```bash
- # 在 hdp-nn 上执行如下操作
ssh-copy-id hdp-nn
ssh-copy-id hdp-snn
- ssh-copy-id hdp-slave10
- ssh-copy-id hdp-slave11
+ ssh-copy-id hdp-slave0
+ ssh-copy-id hdp-slave1
```
-- 配置 **hdp-rm** 可以 ssh 免密登录 hdp-rm 和 hdp-slaveXX
+- 在 **hdp-rm** 上配置 ssh 免密登录 hdp-rm 和 hdp-slaveX
```bash
- # 在 hdp-rm 上执行如下操作
ssh-copy-id hdp-rm
- ssh-copy-id hdp-slave10
- ssh-copy-id hdp-slave11
+ ssh-copy-id hdp-slave0
+ ssh-copy-id hdp-slave1
```
-## 部署 jdk8 环境
+### 部署 jdk8 环境
- 在**全部主机**上执行如下操作
-- 上传 jdk-8u311-linux-x64.tar.gz,解压
+- 上传**最新的 jdk8 安装包**,解压
```bash
- tar zxf jdk-8u311-linux-x64.tar.gz
- mv jdk1.8.0_311 /opt/jdk
+ tar zxf jdk-8u471-linux-x64.tar.gz
+ mv jdk1.8.0_471 /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
- ```
+- 无需配置 jdk 环境变量
-## 部署 hadoop 环境
+### 部署 dfs 和 yarn 集群
- 在**全部主机**上执行如下操作
- 下载 hadoop 2.10.2 部署包,解压
```bash
@@ -80,13 +82,11 @@ Rocky9 | hdp-slave11 | 192.168.8.11/24 | /data/hdp-dn | Datanode, NodeManager
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
@@ -113,7 +113,6 @@ Rocky9 | hdp-slave11 | 192.168.8.11/24 | /data/hdp-dn | Datanode, NodeManager
```
-### 修改 hdfs-site.xml
- 编辑 $HADOOP_HOME/etc/hadoop/hdfs-site.xml,参考内容如下
```xml
@@ -155,7 +154,6 @@ Rocky9 | hdp-slave11 | 192.168.8.11/24 | /data/hdp-dn | Datanode, NodeManager
```
-### 修改 yarn-site.xml
- 编辑 $HADOOP_HOME/etc/hadoop/yarn-site.xml,参考内容如下
```xml
@@ -206,13 +204,11 @@ Rocky9 | hdp-slave11 | 192.168.8.11/24 | /data/hdp-dn | Datanode, NodeManager
```
-### 修改 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
@@ -233,27 +229,53 @@ Rocky9 | hdp-slave11 | 192.168.8.11/24 | /data/hdp-dn | Datanode, NodeManager
```
-### 修改 slaves
- 编辑 $HADOOP_HOME/etc/hadoop/slaves,替换成全部的 slave 主机,参考内容如下
```
- hdp-slave10
- hdp-slave11
+ hdp-slave0
+ hdp-slave1
```
-### 创建临时目录和数据目录
-- 在 **hdp-nn** 上创建数据目录
+### 部署 spark 集群
+- 在 **hdp-X** 上执行如下操作
+- 下载 spark-3.3.4-bin-hadoop2.tgz,解压
+ ```bash
+ curl -LO https://archive.apache.org/dist/spark/spark-3.3.4/spark-3.3.4-bin-hadoop2.tgz
+ tar zxf spark-3.3.4-bin-hadoop2.tgz
+ mv spark-3.3.4-bin-hadoop2 /opt/spark
+ ```
+
+- 配置 spark 环境变量
```bash
- mkdir /data/hdp_nn
+ echo 'export SPARK_HOME=/opt/spark' > /etc/profile.d/spark.sh
+ echo 'export PATH=$SPARK_HOME/bin:$PATH' >> /etc/profile.d/spark.sh
+ # 不推荐把 $SPARK_HOME/sbin 加入环境变量 PATH,避免与 hadoop 冲突
+ source /etc/profile.d/spark.sh
```
-- 在 **hdp-snn** 上创建数据目录
- ```bash
- mkdir /data/hdp_snn
+- 修改 $HADOOP_HOME/etc/hadoop/yarn-site.xml,关闭 yarn 虚拟内存检查(已关闭)
+- 编辑 $HADOOP_HOME/etc/hadoop/capacity-scheduler.xml,修改内容如下
+ ```xml
+
+
+ yarn.scheduler.capacity.resource-calculator
+
+ org.apache.hadoop.yarn.util.resource.DominantResourceCalculator
+
+
+
```
-- 在 **hdp-slaveXX** 上创建临时目录和数据目录
+- 创建 $SPARK_HOME/conf/spark-defaults.conf,参考内容如下
+ ```
+ spark.master yarn
+ spark.eventLog.enabled true
+ spark.eventLog.dir hdfs://hdp-nn:8020/spark-logs
+ ```
+
+- 创建 $SPARK_HOME/conf/spark-env.sh,参考内容如下
```bash
- mkdir /tmp/hdp /data/hdp_dn #建议都挂载独立盘
+ export HADOOP_CONF_DIR=${HADOOP_HOME}/etc/hadoop
+ export SPARK_HISTORY_OPTS="-Dspark.history.ui.port=18080 -Dspark.history.fs.logDirectory=hdfs://hdp-nn:8020/spark-logs -Dspark.history.retainedApplications=30"
```
### 格式化 namenode
@@ -262,7 +284,7 @@ Rocky9 | hdp-slave11 | 192.168.8.11/24 | /data/hdp-dn | Datanode, NodeManager
hdfs namenode -format
```
-## 启动 hadoop 集群
+### 启动 hadoop 集群
- 在 **hdp-nn** 上启动 dfs 集群
```bash
/opt/hdp/sbin/start-dfs.sh
@@ -273,6 +295,326 @@ Rocky9 | hdp-slave11 | 192.168.8.11/24 | /data/hdp-dn | Datanode, NodeManager
/opt/hdp/sbin/start-yarn.sh
```
+- 在 **hdp-X** 上查看 java 进程
+ ```bash
+ /opt/jdk/bin/jps
+ ```
+
+### 启动 spark 日志服务
+- 在 **hdp-nn** 上执行如下操作
+- 创建 spark 日志目录
+ ```bash
+ hdfs dfs -mkdir /spark-logs
+ ```
+
+- 启动日志服务
+ ```bash
+ /opt/spark/sbin/start-history-server.sh
+ ```
+
+### 发布分布式计算任务
+- 客户端模式
+ ```bash
+ spark-shell
+ ```
+
+- 集群模式
+ ```bash
+ spark-submit \
+ --class org.apache.spark.examples.SparkPi \
+ --deploy-mode cluster \
+ $SPARK_HOME/examples/jars/spark-examples_2.12-3.3.4.jar
+ ```
+
+- 浏览器访问 http://{spark 日志服务器}:18080 查看任务进度
+
+---
+
+## 部署 hive 集群
+### 前提
+- [已部署好 mysql 8](/post/mysql-install/#安装-mysql84-通用二进制包)
+- 已创建好 mysql 用户机器数据库,参考 sql 如下
+ ```sql
+ create user hive@'%' identified by 'Hive_1234';
+ create database hive default charset utf8mb4;
+ grant all on hive.* to hive@'%';
+ ```
+
+### 服务器初始配置
+- 在 **hive-X** 上配置主机名解析,修改 /etc/hosts,增加如下内容
+ ```
+ # 注意前面的 hadoop 解析记录不能删
+ # hive
+ 192.168.8.20 hive-hs
+ 192.168.8.21 hive-ms
+ ```
+
+### 部署 tez 环境
+#### 编译 tez
+- 在**编译服务器**上执行如下操作
+- 编译 tez-0.9.2 依赖 protoc 2.5.0,下载 protoc 源码,解压,编译
+ ```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
+ mkdir /opt/protoc-2.5.0
+ ./configure --prefix=/opt/protoc-2.5.0
+ make
+ make check
+ make install
+ ```
+
+- 下载 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
+ 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-X** 中
+- 上传 tez-dist/target/tez-0.9.2.tar.gz 到 **hive-hs** 中
+
+#### 部署 tez
+- 在 **hive-hs** 上 put tez-0.9.2.tar.gz 到 hdfs
+ ```bash
+ hdfs dfs -mkdir /tez
+ hdfs dfs -put tez-0.9.2.tar.gz /tez/
+ ```
+
+- 在 **hive-X** 上解压 tez minimal 包
+ ```bash
+ mkdir /opt/tez
+ tar zxf tez-0.9.2-minimal.tar.gz -C /opt/tez/
+ ```
+
+- 在**全部主机**上修改 $HADOOP_HOME/etc/hadoop/mapred-site.xml,关闭 yarn 虚拟内存检查(已关闭)
+- 在**全部主机**上创建 $HADOOP_HOME/etc/hadoop/tez-site.xml,参考内容如下
+ ```xml
+
+
+ tez.lib.uris
+ string
+ ${fs.defaultFS}/tez/tez-0.9.2.tar.gz
+
+
+ ```
+
+- 重启 hadoop dfs 和 yarn 集群
+
+### 部署 hive 环境
+- 在 **hive-X** 上执行如下操作
+- 下载 hive 2.3.10 部署包,解压
+ ```bash
+ curl -LO https://archive.apache.org/dist/hive/hive-2.3.10/apache-hive-2.3.10-bin.tar.gz
+ tar zxf apache-hive-2.3.10-bin.tar.gz
+ mv apache-hive-2.3.10-bin /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_HOME/conf/hive-env.sh,指定 HADOOP_HOME 环境变量和 tez 库
+ ```bash
+ HADOOP_HOME=/opt/hdp
+ export TEZ_HOME=/opt/tez
+ export HIVE_AUX_JARS_PATH=$TEZ_HOME/lib
+ export HADOOP_CLASSPATH=$TEZ_HOME:$TEZ_HOME/lib
+ ```
+
+- 创建 $HIVE_HOME/conf/hive-site.xml,参考内容如下
+ ```xml
+
+
+
+ javax.jdo.option.ConnectionURL
+ jdbc:mysql://mysql-ip: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
+
+
+
+ hive.execution.engine
+ tez
+
+
+ ```
+
+### 初始化 hive
+- 在 **hive-ms** 上初始化 mysql 库
+ ```bash
+ schematool -dbType mysql -initSchema
+ ```
+
+### 启动 hive 集群
+- 在 **hive-ms** 上启动 hive metastore
+ ```bash
+ hive --service metastore
+ ```
+
+- 在 **hive-hs** 上启动 hive server
+ ```bash
+ hive --service hiveserver2
+ ```
+
+### 客户端
+- 本地直接连接
+ ```bash
+ hive
+ ```
+
+- beeline 连接,需要先在 $HADOOP_HOME/etc/hadoop/core-site.xml 中配置 proxyuser(已配置)
+ ```bash
+ beeline -u jdbc:hive2://hive-hs:10000 -n root
+ ```
+
+---
+
+## 部署 hbase 集群
+### 前提
+- [已部署好 zookeeper 3.4 以上版本](/post/zk-install)
+
+### 服务器初始配置
+- 在 **hbase-X** 上配置主机名解析,修改 /etc/hosts,增加如下内容
+ ```
+ # 注意前面的 hadoop 解析记录不能删
+ # hbase
+ 192.168.8.30 hbase-m
+ 192.168.8.31 hbase-bm
+ 192.168.8.32 hbase-rs0
+ 192.168.8.33 hbase-rs1
+ ```
+
+### ssh 免密登录
+- 在 **hbase-m** 上配置 ssh 免密登录 hbase-m、hbase-bm 和 hbase-rsX
+ ```bash
+ ssh-copy-id hbase-m
+ ssh-copy-id hbase-bm
+ ssh-copy-id hbase-rs0
+ ssh-copy-id hbase-rs1
+ ```
+
+### 部署 hbase 环境
+- 在 **hbase-X** 上执行如下操作
+- 下载 hbase 2.5.13 部署包,解压
+ ```bash
+ curl -LO https://mirrors.tuna.tsinghua.edu.cn/apache/hbase/2.5.13/hbase-2.5.13-bin.tar.gz
+ tar zxf hbase-2.5.13-bin.tar.gz
+ mv hbase-2.5.13 /opt/hbase
+ ```
+
+- 配置环境变量
+ ```bash
+ echo 'export HBASE_HOME=/opt/hbase' > /etc/profile.d/hbase.sh
+ echo 'export PATH=$HBASE_HOME/bin:$PATH' >> /etc/profile.d/hbase.sh
+ source /etc/profile.d/hbase.sh
+ ```
+
+- 编辑 $HBASE_HOME/conf/hbase-env.sh,指定如下三个环境变量
+ ```bash
+ export JAVA_HOME=/opt/jdk
+ export HBASE_CLASSPATH=$HADOOP_HOME/etc/hadoop
+ export HBASE_MANAGES_ZK=false
+ ```
+
+- 清空 $HBASE_HOME/conf/hbase-site.xml,添加如下内容
+ ```xml
+
+
+
+ hbase.cluster.distributed
+ true
+
+
+
+ hbase.rootdir
+ hdfs://hdp-nn:8020/hbase
+
+
+
+ hbase.zookeeper.quorum
+ zk1,zk2,zk3
+
+
+ ```
+
+- 清空 $HBASE_HOME/conf/regionservers,添加如下内容
+ ```
+ hbase-rs0
+ hbase-rs1
+ ```
+
+- 创建 $HBASE_HOME/conf/backup-masters,添加如下内容
+ ```
+ hbase-bm
+ ```
+
+### 启动 hbase 集群
+- 在 **hbase-m30** 上启动 hbase 集群
+ ```bash
+ start-hbase.sh
+ ```
+
+### 客户端连接
+- 本地直接进入 hbase shell
+ ```bash
+ hbase shell
+ ```
+
## 参考
- [https://www.cnblogs.com/jpSpaceX/articles/15032931.html](https://www.cnblogs.com/jpSpaceX/articles/15032931.html)
diff --git a/content/post/hdp3.3.md b/content/post/hdp3.3.md
new file mode 100644
index 0000000..b40dede
--- /dev/null
+++ b/content/post/hdp3.3.md
@@ -0,0 +1,431 @@
+---
+title: "hadoop3.3 集群部署"
+date: 2023-07-28T14:00:00+08:00
+lastmod: 2026-02-03T11:00:00+08:00
+keywords: []
+tags: ["hadoop", "hive", "tez", "hbase", "spark"]
+categories: ["hadoop"]
+---
+
+## 环境
+主机名 | 地址 | 数据目录 | 运行组件
+---- | ---- | ---- | ----
+hdp-nn | 192.168.8.1/24 | /data/hdp-nn | Namenode
+hdp-snn | 192.168.8.2/24 | /data/hdp-snn | SecondaryNamenode
+hdp-rm | 192.168.8.3/24 | - | ResourceManager
+hdp-slave0 | 192.168.8.10/24 | /data/hdp-dn | Datanode, NodeManager
+hdp-slave1 | 192.168.8.11/24 | /data/hdp-dn | Datanode, NodeManager
+hive-hs | 192.168.8.20/24 | - | HiveServer2, Tez
+hive-ms | 192.168.8.21/24 | - | HiveMetastore, Tez
+
+## 部署 hadoop 集群
+### 服务器初始配置
+- 在**全部主机**上执行如下操作
+- 禁用防火墙
+- 禁用 selinux
+- 配置时间同步
+- 配置主机名解析,修改 /etc/hosts,增加如下内容
+ ```bash
+ # hadoop
+ 192.168.8.1 hdp-nn
+ 192.168.8.2 hdp-snn
+ 192.168.8.3 hdp-dn
+ 192.168.8.10 hdp-slave0
+ 192.168.8.11 hdp-slave1
+ ```
+
+### ssh 免密登录
+- 在 **hdp-nn** 配置 ssh 免密登录 hdp-nn、hdp-snn 和 hdp-slaveX
+ ```bash
+ ssh-copy-id hdp-nn
+ ssh-copy-id hdp-snn
+ ssh-copy-id hdp-slave0
+ ssh-copy-id hdp-slave1
+ ```
+
+- 在 **hdp-rm** 上配置 ssh 免密登录 hdp-rm 和 hdp-slaveX
+ ```bash
+ ssh-copy-id hdp-rm
+ ssh-copy-id hdp-slave0
+ ssh-copy-id hdp-slave1
+ ```
+
+### 部署 jdk8 环境
+- 在**全部主机**上执行如下操作
+- 上传**最新的 jdk8 安装包**,解压
+ ```bash
+ tar zxf jdk-8u471-linux-x64.tar.gz
+ mv jdk1.8.0_471 /opt/jdk
+ ```
+
+- 无需配置 jdk 环境变量
+
+### 部署 dfs 和 yarn 集群
+- 在**全部主机**上执行如下操作
+- 下载 hadoop 3.3.6 部署包,解压
+ ```bash
+ curl -LO https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/hadoop-3.3.6/hadoop-3.3.6.tar.gz
+ tar zxf hadoop-3.3.6.tar.gz
+ mv hadoop-3.3.6 /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,避免与 spark 冲突
+ source /etc/profile.d/hdp.sh
+ ```
+
+- 编辑 $HADOOP_HOME/etc/hadoop/hadoop-env.sh,指定 JAVA_HOME 环境变量和运行各组件的用户
+ ```bash
+ export JAVA_HOME=/opt/jdk
+ export HDFS_NAMENODE_USER=root
+ export HDFS_DATANODE_USER=root
+ export HDFS_SECONDARYNAMENODE_USER=root
+ export YARN_RESOURCEMANAGER_USER=root
+ export YARN_NODEMANAGER_USER=root
+ ```
+
+- 编辑 $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
+ *
+
+
+ ```
+
+- 编辑 $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
+
+
+ ```
+
+- 编辑 $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
+
+
+
+ yarn.nodemanager.pmem-check-enabled
+ false
+
+
+ ```
+
+- 无需修改 $HADOOP_HOME/etc/hadoop/mapred-env.sh
+- 编辑 $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
+
+
+ yarn.app.mapreduce.am.env
+ HADOOP_MAPRED_HOME=/opt/hdp
+
+
+ mapreduce.map.env
+ HADOOP_MAPRED_HOME=/opt/hdp
+
+
+ mapreduce.reduce.env
+ HADOOP_MAPRED_HOME=/opt/hdp
+
+
+ ```
+
+- 编辑 $HADOOP_HOME/etc/hadoop/workers,替换成全部的 slave 主机,参考内容如下
+ ```
+ hdp-slave0
+ hdp-slave1
+ ```
+
+### 格式化 namenode
+- 在 **hdp-nn** 上执行如下操作
+ ```bash
+ hdfs namenode -format
+ ```
+
+## 启动 hadoop 集群
+- 在 **hdp-nn** 上启动 dfs 集群
+ ```bash
+ /opt/hdp/sbin/start-dfs.sh
+ ```
+
+- 在 **hdp-rm** 上启动 yarn 集群
+ ```bash
+ /opt/hdp/sbin/start-yarn.sh
+ ```
+
+- 在 **hdp-X** 上查看 java 进程
+ ```bash
+ /opt/jdk/bin/jps
+ ```
+
+---
+
+## 部署 hive 集群
+### 前提
+- [已部署好 mysql 8](/post/mysql-install/#安装-mysql84-通用二进制包)
+- 已创建好 mysql 用户机器数据库,参考 sql 如下
+ ```sql
+ create user hive@'%' identified by 'Hive_1234';
+ create database hive default charset utf8mb4;
+ grant all on hive.* to hive@'%';
+ ```
+
+### 服务器初始配置
+- 在 **hive-X** 上配置主机名解析,修改 /etc/hosts,增加如下内容
+ ```
+ # 注意前面的 hadoop 解析记录不能删
+ # hive
+ 192.168.8.20 hive-hs
+ 192.168.8.21 hive-ms
+ ```
+
+### 部署 tez 环境
+- 在 **hive-X** 上执行如下操作
+- 下载 tez 0.10.4 安装包,解压
+ ```bash
+ curl -LO https://mirrors.tuna.tsinghua.edu.cn/apache/tez/0.10.4/apache-tez-0.10.4-bin.tar.gz
+ tar zxf apache-tez-0.10.4-bin.tar.gz
+ mv apache-tez-0.10.4-bin /opt/tez
+ ```
+
+- 在 **hive-hs** 上 put tez.tar.gz 到 hdfs
+ ```bash
+ hdfs dfs -mkdir /tez
+ hdfs dfs -put /opt/tez/share/tez.tar.gz /tez/
+ ```
+
+- 在**全部主机**上修改 $HADOOP_HOME/etc/hadoop/mapred-site.xml,关闭 yarn 虚拟内存检查(已关闭)
+- 在**全部主机**上创建 $HADOOP_HOME/etc/hadoop/tez-site.xml,参考内容如下
+ ```xml
+
+
+ tez.lib.uris
+ string
+ ${fs.defaultFS}/tez/tez.tar.gz
+
+
+ ```
+
+- 重启 hadoop dfs 和 yarn 集群
+
+### 部署 hive 环境
+- 在 **hive-X** 上执行如下操作
+- 下载 hive 4.0.1 部署包,解压
+ ```bash
+ curl -LO https://archive.apache.org/dist/hive/hive-4.0.1/apache-hive-4.0.1-bin.tar.gz
+ tar zxf apache-hive-4.0.1-bin.tar.gz
+ mv apache-hive-4.0.1-bin /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_HOME/conf/hive-env.sh,指定 HADOOP_HOME 环境变量和 tez 库
+ ```bash
+ HADOOP_HOME=/opt/hdp
+ export TEZ_HOME=/opt/tez
+ export HIVE_AUX_JARS_PATH=$TEZ_HOME/lib
+ export HADOOP_CLASSPATH=$TEZ_HOME:$TEZ_HOME/lib
+ ```
+
+- 创建 $HIVE_HOME/conf/hive-site.xml,参考内容如下
+ ```xml
+
+
+
+ javax.jdo.option.ConnectionURL
+ jdbc:mysql://mysql-ip: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
+
+
+
+ hive.execution.engine
+ tez
+
+
+ ```
+
+### 初始化 hive
+- 在 **hive-ms** 上初始化 mysql 库
+ ```bash
+ schematool -dbType mysql -initSchema
+ ```
+
+### 启动 hive 集群
+- 在 **hive-ms** 上启动 hive metastore
+ ```bash
+ hive --service metastore
+ ```
+
+- 在 **hive-hs** 上启动 hive server
+ ```bash
+ hive --service hiveserver2
+ ```
+
+### 客户端
+- beeline 连接,需要先在 $HADOOP_HOME/etc/hadoop/core-site.xml 中配置 proxyuser(已配置)
+ ```bash
+ beeline -u jdbc:hive2://hive-hs:10000 -n root
+ ```
+
diff --git a/content/post/hive2-tez.md b/content/post/hive2-tez.md
deleted file mode 100644
index 9deed28..0000000
--- a/content/post/hive2-tez.md
+++ /dev/null
@@ -1,112 +0,0 @@
----
-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: ["hadoop"]
----
-
-## 环境
-操作系统 | 主机名 | 地址 | 运行组件
----- | ---- | ---- | ----
-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
-
-## 前提
-- [已部署好 hadoop 2.10](/post/hdp2)
-- [已部署好 hive 2.3.10](/post/hive2)
-
-## 准备 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** 上 put tez-0.9.2.tar.gz 到 hdfs
- ```bash
- hdfs dfs -mkdir /tez
- hdfs dfs -put tez-0.9.2.tar.gz /tez/
- ```
-
-- 在**全部 hive 主机**上解压 tez 部署包
- ```bash
- mkdir /opt/tez
- tar zxf tez-0.9.2-minimal.tar.gz -C /opt/tez/
- ```
-
-### 修改 yarn-site.xml
-- 在**全部主机(包括 hadoop)**上[关闭 yarn 虚拟内存检查](/post/hdp2/#修改-yarn-sitexml)
-
-### 创建 tez-site.xml
-- 在**全部主机(包括 hadoop)**上执行如下操作
-- 创建 $HADOOP_HOME/etc/hadoop/tez-site.xml,参考内容如下
- ```xml
-
-
- tez.lib.uris
- string
- ${fs.defaultFS}/tez/tez-0.9.2.tar.gz
-
-
- ```
-
-### 修改 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 hive.execution.engine=tez;
- -- 后面操作数据时不再报 "WARNING: Hive-on-MR is deprecated in Hive 2 ..."
- ```
-
diff --git a/content/post/hive2.md b/content/post/hive2.md
deleted file mode 100644
index 087e5ca..0000000
--- a/content/post/hive2.md
+++ /dev/null
@@ -1,173 +0,0 @@
----
-title: "hive2 部署"
-date: 2023-05-23T11:00:00+08:00
-lastmod: 2024-05-23T11:00:00+08:00
-keywords: []
-tags: ["hadoop", "hive"]
-categories: ["hadoop"]
----
-
-## 环境
-操作系统 | 主机名 | 地址 | 运行组件
----- | ---- | ---- | ----
-Rocky9 | hive-hs20 | 192.168.8.20/24 | Hive Server
-Rocky9 | hive-ms21 | 192.168.8.21/24 | Hive Metastore
-
-## 前提
-- [已部署好 hadoop 2.10](/post/hdp2)
-- [已部署好 mysql 8](/post/mysql-install/#安装-mysql84-通用二进制包)
-
-## 服务器初始配置
-- 在**全部主机**上执行如下操作
-- 禁用防火墙
-- 禁用 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 hive-hs20" >> /etc/hosts
- echo "192.168.8.21 hive-ms21" >> /etc/hosts
- ```
-
-## 创建 mysql 数据库
-- 在 **mysql** 创建用户及其数据库,参考 sql 如下
- ```sql
- create user hive@'%' identified by 'Hive_1234';
- create database hive default charset utf8mb4;
- grant all on hive.* to hive@'%';
- ```
-
-## 复制 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.10 部署包,解压
- ```bash
- curl -LO https://archive.apache.org/dist/hive/hive-2.3.10/apache-hive-2.3.10-bin.tar.gz
- tar zxf apache-hive-2.3.10-bin.tar.gz
- mv apache-hive-2.3.10-bin /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
- HADOOP_HOME=/opt/hdp
- ```
-
-### 创建 hive-site.xml
-- 创建 $HIVE_HOME/conf/hive-site.xml,参考内容如下
- ```xml
-
-
-
- javax.jdo.option.ConnectionURL
- jdbc:mysql://mysql-ip: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
-
-
-
- ```
-
-### 初始化 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
- # 暂时忽略"WARNING: Hive-on-MR is deprecated in Hive 2 ..."
- ```
-
-- beeline 连接,需要先[在 core-site.xml 中配置 proxyuser](/post/hdp2/#修改-core-sitexml)
- ```bash
- beeline -u jdbc:hive2://hive-hs20:10000 -n root
- # 暂时忽略"WARNING: Hive-on-MR is deprecated in Hive 2 ..."
- ```
-
diff --git a/content/post/spark.md b/content/post/spark.md
deleted file mode 100644
index 2aa4068..0000000
--- a/content/post/spark.md
+++ /dev/null
@@ -1,100 +0,0 @@
----
-title: "spark on yarn 部署"
-date: 2023-05-23T12:00:00+08:00
-lastmod: 2024-07-19T17:00:00+08:00
-keywords: []
-tags: ["hadoop", "spark"]
-categories: ["hadoop"]
----
-
-## 环境
-操作系统 | 主机名 | 地址 | 运行组件
----- | ---- | ---- | ----
-Rocky9 | hdp-nn | 192.168.8.1/24 | Namenode
-Rocky9 | hdp-snn | 192.168.8.2/24 | SecondaryNamenode
-Rocky9 | hdp-rm | 192.168.8.3/24 | ResourceManager
-Rocky9 | hdp-slave10 | 192.168.8.10/24 | Datanode, NodeManager
-Rocky9 | hdp-slave11 | 192.168.8.11/24 | Datanode, NodeManager
-
-## 前提
-- [已部署好 hadoop 2.10](/post/hdp2)
-
-## 部署 spark 环境
-- 在**全部主机**上执行如下操作
-- 下载 spark-3.3.4-bin-hadoop2.tgz,解压
- ```bash
- curl -LO https://archive.apache.org/dist/spark/spark-3.3.4/spark-3.3.4-bin-hadoop2.tgz
- tar zxf spark-3.3.4-bin-hadoop2.tgz
- mv spark-3.3.4-bin-hadoop2 /opt/spark
- ```
-
-- 配置 spark 环境变量
- ```bash
- echo 'export SPARK_HOME=/opt/spark' > /etc/profile.d/spark.sh
- echo 'export PATH=$SPARK_HOME/bin:$PATH' >> /etc/profile.d/spark.sh
- # 不推荐把 $SPARK_HOME/sbin 加入环境变量 PATH,避免与 hadoop 冲突
- source /etc/profile.d/spark.sh
- ```
-
-### 修改 yarn-site.xml
-- 在**全部主机**上[关闭 yarn 虚拟内存检查](/post/hdp2/#修改-yarn-sitexml)
-
-### 修改 capacity-scheduler.xml
-- 在**全部主机**上执行如下操作
-- 编辑 $HADOOP_HOME/etc/hadoop/capacity-scheduler.xml,修改内容如下
- ```xml
-
-
- yarn.scheduler.capacity.resource-calculator
-
- org.apache.hadoop.yarn.util.resource.DominantResourceCalculator
-
-
-
- ```
-
-### 创建 spark-defaults.conf
-- 在**全部主机**上执行如下操作
-- 创建 $SPARK_HOME/conf/spark-defaults.conf,参考内容如下
- ```
- spark.master yarn
- spark.eventLog.enabled true
- spark.eventLog.dir hdfs://hdp-nn:8020/spark-logs
- ```
-
-### 修改 spark-env.sh
-- 在**全部主机**上执行如下操作
-- 创建 $SPARK_HOME/conf/spark-env.sh,参考内容如下
- ```bash
- export HADOOP_CONF_DIR=${HADOOP_HOME}/etc/hadoop
- export SPARK_HISTORY_OPTS="-Dspark.history.ui.port=18080 -Dspark.history.fs.logDirectory=hdfs://hdp-nn:8020/spark-logs -Dspark.history.retainedApplications=30"
- ```
-
-### 创建 spark 日志目录
-- 在 **hdp-nn** 上创建 spark 日志目录
- ```bash
- hdfs dfs -mkdir /spark-logs
- ```
-
-## 启动 spark 日志服务
-- 在**任一主机** 上启动日志服务
- ```bash
- /opt/spark/sbin/start-history-server.sh
- ```
-
-## 发布任务
-- 客户端模式
- ```bash
- spark-shell
- ```
-
-- 集群模式
- ```bash
- spark-submit \
- --class org.apache.spark.examples.SparkPi \
- --deploy-mode cluster \
- $SPARK_HOME/examples/jars/spark-examples_2.12-3.3.4.jar
- ```
-
-- 浏览器访问 http://{spark 日志服务器}:18080 查看任务进度
-