You've already forked www.colben.cn
update
This commit is contained in:
@@ -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
|
||||
<configuration>
|
||||
<property>
|
||||
<!-- 指定分布式 -->
|
||||
<name>hbase.cluster.distributed</name>
|
||||
<value>true</value>
|
||||
</property>
|
||||
<property>
|
||||
<!-- 指定要用的 hdfs 地址和目录 -->
|
||||
<name>hbase.rootdir</name>
|
||||
<value>hdfs://hdp-nn-21:8020/hbase</value>
|
||||
</property>
|
||||
<property>
|
||||
<!-- 指定要连接的 zookeeper 节点 -->
|
||||
<name>hbase.zookeeper.quorum</name>
|
||||
<value>zk1,zk2,zk3</value>
|
||||
</property>
|
||||
</configuration>
|
||||
```
|
||||
|
||||
### 修改 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
|
||||
```
|
||||
|
||||
@@ -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
|
||||
<configuration>
|
||||
@@ -113,7 +113,6 @@ Rocky9 | hdp-slave11 | 192.168.8.11/24 | /data/hdp-dn | Datanode, NodeManager
|
||||
</configuration>
|
||||
```
|
||||
|
||||
### 修改 hdfs-site.xml
|
||||
- 编辑 $HADOOP_HOME/etc/hadoop/hdfs-site.xml,参考内容如下
|
||||
```xml
|
||||
<configuration>
|
||||
@@ -155,7 +154,6 @@ Rocky9 | hdp-slave11 | 192.168.8.11/24 | /data/hdp-dn | Datanode, NodeManager
|
||||
</configuration>
|
||||
```
|
||||
|
||||
### 修改 yarn-site.xml
|
||||
- 编辑 $HADOOP_HOME/etc/hadoop/yarn-site.xml,参考内容如下
|
||||
```xml
|
||||
<configuration>
|
||||
@@ -206,13 +204,11 @@ Rocky9 | hdp-slave11 | 192.168.8.11/24 | /data/hdp-dn | Datanode, NodeManager
|
||||
</configuration>
|
||||
```
|
||||
|
||||
### 修改 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
|
||||
<configuration>
|
||||
@@ -233,27 +229,53 @@ Rocky9 | hdp-slave11 | 192.168.8.11/24 | /data/hdp-dn | Datanode, NodeManager
|
||||
</configuration>
|
||||
```
|
||||
|
||||
### 修改 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
|
||||
<configuration>
|
||||
<property>
|
||||
<name>yarn.scheduler.capacity.resource-calculator</name>
|
||||
<!-- <value>org.apache.hadoop.yarn.util.resource.DefaultResourceCalculator</value> -->
|
||||
<value>org.apache.hadoop.yarn.util.resource.DominantResourceCalculator</value>
|
||||
</description>
|
||||
</property>
|
||||
</configuration>
|
||||
```
|
||||
|
||||
- 在 **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
|
||||
<configuration>
|
||||
<property>
|
||||
<name>tez.lib.uris</name>
|
||||
<type>string</type>
|
||||
<value>${fs.defaultFS}/tez/tez-0.9.2.tar.gz</value>
|
||||
</property>
|
||||
</configuration>
|
||||
```
|
||||
|
||||
- 重启 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
|
||||
<configuration>
|
||||
<property>
|
||||
<!-- mysql 地址 -->
|
||||
<name>javax.jdo.option.ConnectionURL</name>
|
||||
<value>jdbc:mysql://mysql-ip:3306/hive?createDatabaseIfNotExist=true&useSSL=false</value>
|
||||
</property>
|
||||
<property>
|
||||
<!-- mysql 驱动 -->
|
||||
<name>javax.jdo.option.ConnectionDriverName</name>
|
||||
<value>com.mysql.cj.jdbc.Driver</value>
|
||||
</property>
|
||||
<property>
|
||||
<!-- mysql 用户 -->
|
||||
<name>javax.jdo.option.ConnectionUserName</name>
|
||||
<value>hive</value>
|
||||
</property>
|
||||
<property>
|
||||
<!-- mysql 密码 -->
|
||||
<name>javax.jdo.option.ConnectionPassword</name>
|
||||
<value>Hive_1234</value>
|
||||
</property>
|
||||
<property>
|
||||
<!-- 自动初始化 hive 库 -->
|
||||
<name>datanucleus.schema.autoCreateAll</name>
|
||||
<value>true</value>
|
||||
</property>
|
||||
<property>
|
||||
<name>hive.cli.print.header</name>
|
||||
<value>true</value>
|
||||
</property>
|
||||
<property>
|
||||
<name>hive.cli.print.current.db</name>
|
||||
<value>true</value>
|
||||
</property>
|
||||
<property>
|
||||
<!-- hive server 端口 -->
|
||||
<name>hive.server2.webui.port</name>
|
||||
<value>10002</value>
|
||||
</property>
|
||||
<property>
|
||||
<!-- 数据存储位置(hdfs) -->
|
||||
<name>hive.metastore.warehouse.dir</name>
|
||||
<value>/hive/warehouse</value>
|
||||
</property>
|
||||
<property>
|
||||
<!-- hive metastore 端口-->
|
||||
<name>hive.metastore.uris</name>
|
||||
<value>thrift://hive-ms:9083</value>
|
||||
</property>
|
||||
<property>
|
||||
<!-- hive 使用 tez 引擎 -->
|
||||
<name>hive.execution.engine</name>
|
||||
<value>tez</value>
|
||||
</property>
|
||||
</configuration>
|
||||
```
|
||||
|
||||
### 初始化 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
|
||||
<configuration>
|
||||
<property>
|
||||
<!-- 指定分布式 -->
|
||||
<name>hbase.cluster.distributed</name>
|
||||
<value>true</value>
|
||||
</property>
|
||||
<property>
|
||||
<!-- 指定 hdfs 地址和目录 -->
|
||||
<name>hbase.rootdir</name>
|
||||
<value>hdfs://hdp-nn:8020/hbase</value>
|
||||
</property>
|
||||
<property>
|
||||
<!-- 指定要连接的 zookeeper 节点 -->
|
||||
<name>hbase.zookeeper.quorum</name>
|
||||
<value>zk1,zk2,zk3</value>
|
||||
</property>
|
||||
</configuration>
|
||||
```
|
||||
|
||||
- 清空 $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)
|
||||
|
||||
|
||||
431
content/post/hdp3.3.md
Normal file
431
content/post/hdp3.3.md
Normal file
@@ -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
|
||||
<configuration>
|
||||
<property>
|
||||
<!-- namenode 的 hdfs 协议通信地址 -->
|
||||
<name>fs.defaultFS</name>
|
||||
<value>hdfs://hdp-nn:8020</value>
|
||||
</property>
|
||||
<property>
|
||||
<!-- hadoop 集群存储临时文件的目录,datanode 里建议挂载独立盘 -->
|
||||
<name>hadoop.tmp.dir</name>
|
||||
<value>/tmp/hdp</value>
|
||||
</property>
|
||||
<property>
|
||||
<!-- hive beeline 登录用户 root -->
|
||||
<name>hadoop.proxyuser.root.hosts</name>
|
||||
<value>*</value>
|
||||
</property>
|
||||
<property>
|
||||
<!-- hive beeline 登录用户 root -->
|
||||
<name>hadoop.proxyuser.root.groups</name>
|
||||
<value>*</value>
|
||||
</property>
|
||||
</configuration>
|
||||
```
|
||||
|
||||
- 编辑 $HADOOP_HOME/etc/hadoop/hdfs-site.xml,参考内容如下
|
||||
```xml
|
||||
<configuration>
|
||||
<property>
|
||||
<!-- namenode 元数据存放位置,可指定多个目录(用逗号分隔)实现容错 -->
|
||||
<name>dfs.namenode.name.dir</name>
|
||||
<value>/data/hdp_nn</value>
|
||||
</property>
|
||||
<property>
|
||||
<!-- secondary namenode 镜像数据存放位置,可指定多个目录(用逗号分隔)实现容错 -->
|
||||
<name>dfs.namenode.checkpoint.dir</name>
|
||||
<value>/data/hdp_snn</value>
|
||||
</property>
|
||||
<property>
|
||||
<!-- datanode 数据块存放位置,可指定多个目录(多盘,用逗号分隔)提高读写 io -->
|
||||
<name>dfs.datanode.data.dir</name>
|
||||
<value>/data/hdp_dn</value>
|
||||
</property>
|
||||
<property>
|
||||
<!-- namenode 的 Web UI 访问地址 -->
|
||||
<name>dfs.namenode.http-address</name>
|
||||
<value>hdp-nn:9870</value>
|
||||
</property>
|
||||
<property>
|
||||
<!-- secondary namenode 的主机和端口 -->
|
||||
<name>dfs.namenode.secondary.http-address</name>
|
||||
<value>hdp-snn:9868</value>
|
||||
</property>
|
||||
<property>
|
||||
<!-- hdfs 副本数量,默认3,这里设置为2,保证两个 datanode 时数据有冗余 -->
|
||||
<name>dfs.replication</name>
|
||||
<value>2</value>
|
||||
</property>
|
||||
<property>
|
||||
<!-- 启用 webhdfs api -->
|
||||
<name>dfs.webhdfs.enabled</name>
|
||||
<value>true</value>
|
||||
</property>
|
||||
</configuration>
|
||||
```
|
||||
|
||||
- 编辑 $HADOOP_HOME/etc/hadoop/yarn-site.xml,参考内容如下
|
||||
```xml
|
||||
<configuration>
|
||||
<property>
|
||||
<name>yarn.nodemanager.aux-services</name>
|
||||
<value>mapreduce_shuffle</value>
|
||||
</property>
|
||||
<property>
|
||||
<!--resourcemanager 的主机名-->
|
||||
<name>yarn.resourcemanager.hostname</name>
|
||||
<value>hdp-rm</value>
|
||||
</property>
|
||||
<property>
|
||||
<!-- resourcemanager 的 Web UI 访问地址 (默认端口8088) -->
|
||||
<name>yarn.resourcemanager.webapp.address</name>
|
||||
<value>hdp-rm:8088</value>
|
||||
</property>
|
||||
<!-- 设置 nodemanager 可用 6 核处理器
|
||||
<property>
|
||||
<name>yarn.nodemanager.resource.cpu-vcores</name>
|
||||
<value>6</value>
|
||||
</property> -->
|
||||
<!-- 设置 nodemanager 可用 12GB 内存
|
||||
<property>
|
||||
<name>yarn.nodemanager.resource.memory-mb</name>
|
||||
<value>12288</value>
|
||||
</property> -->
|
||||
<property>
|
||||
<!-- (可选) 开启日志聚集功能,方便在Web UI上查看已完成任务的日志 -->
|
||||
<name>yarn.log-aggregation-enable</name>
|
||||
<value>true</value>
|
||||
</property>
|
||||
<property>
|
||||
<!-- (可选) 日志保留时间(7天) -->
|
||||
<name>yarn.log-aggregation.retain-seconds</name>
|
||||
<value>604800</value>
|
||||
</property>
|
||||
<property>
|
||||
<!-- 使用 spark/tez 时需关闭 yarn 虚拟内存检查 -->
|
||||
<name>yarn.nodemanager.vmem-check-enabled</name>
|
||||
<value>false</value>
|
||||
</property>
|
||||
<property>
|
||||
<!-- 使用 spark 时需关闭 yarn 虚拟内存检查 -->
|
||||
<name>yarn.nodemanager.pmem-check-enabled</name>
|
||||
<value>false</value>
|
||||
</property>
|
||||
</configuration>
|
||||
```
|
||||
|
||||
- 无需修改 $HADOOP_HOME/etc/hadoop/mapred-env.sh
|
||||
- 编辑 $HADOOP_HOME/etc/hadoop/mapred-site.xml,参考内容如下
|
||||
```xml
|
||||
<configuration>
|
||||
<property>
|
||||
<name>mapreduce.framework.name</name>
|
||||
<value>yarn</value>
|
||||
</property>
|
||||
<property>
|
||||
<!-- MapReduce JobHistory Server 地址 -->
|
||||
<name>mapreduce.jobhistory.address</name>
|
||||
<value>hdp-rm:10020</value>
|
||||
</property>
|
||||
<property>
|
||||
<!-- MapReduce JobHistory Server Web UI 地址 (默认端口19888) -->
|
||||
<name>mapreduce.jobhistory.webapp.address</name>
|
||||
<value>hdp-rm:19888</value>
|
||||
</property>
|
||||
<property>
|
||||
<name>yarn.app.mapreduce.am.env</name>
|
||||
<value>HADOOP_MAPRED_HOME=/opt/hdp</value>
|
||||
</property>
|
||||
<property>
|
||||
<name>mapreduce.map.env</name>
|
||||
<value>HADOOP_MAPRED_HOME=/opt/hdp</value>
|
||||
</property>
|
||||
<property>
|
||||
<name>mapreduce.reduce.env</name>
|
||||
<value>HADOOP_MAPRED_HOME=/opt/hdp</value>
|
||||
</property>
|
||||
</configuration>
|
||||
```
|
||||
|
||||
- 编辑 $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
|
||||
<configuration>
|
||||
<property>
|
||||
<name>tez.lib.uris</name>
|
||||
<type>string</type>
|
||||
<value>${fs.defaultFS}/tez/tez.tar.gz</value>
|
||||
</property>
|
||||
</configuration>
|
||||
```
|
||||
|
||||
- 重启 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
|
||||
<configuration>
|
||||
<property>
|
||||
<!-- mysql 地址 -->
|
||||
<name>javax.jdo.option.ConnectionURL</name>
|
||||
<value>jdbc:mysql://mysql-ip:3306/hive?createDatabaseIfNotExist=true&useSSL=false</value>
|
||||
</property>
|
||||
<property>
|
||||
<!-- mysql 驱动 -->
|
||||
<name>javax.jdo.option.ConnectionDriverName</name>
|
||||
<value>com.mysql.cj.jdbc.Driver</value>
|
||||
</property>
|
||||
<property>
|
||||
<!-- mysql 用户 -->
|
||||
<name>javax.jdo.option.ConnectionUserName</name>
|
||||
<value>hive</value>
|
||||
</property>
|
||||
<property>
|
||||
<!-- mysql 密码 -->
|
||||
<name>javax.jdo.option.ConnectionPassword</name>
|
||||
<value>Hive_1234</value>
|
||||
</property>
|
||||
<property>
|
||||
<!-- 自动初始化 hive 库 -->
|
||||
<name>datanucleus.schema.autoCreateAll</name>
|
||||
<value>true</value>
|
||||
</property>
|
||||
<property>
|
||||
<name>hive.cli.print.header</name>
|
||||
<value>true</value>
|
||||
</property>
|
||||
<property>
|
||||
<name>hive.cli.print.current.db</name>
|
||||
<value>true</value>
|
||||
</property>
|
||||
<property>
|
||||
<!-- hive server 端口 -->
|
||||
<name>hive.server2.webui.port</name>
|
||||
<value>10002</value>
|
||||
</property>
|
||||
<property>
|
||||
<!-- 数据存储位置(hdfs) -->
|
||||
<name>hive.metastore.warehouse.dir</name>
|
||||
<value>/hive/warehouse</value>
|
||||
</property>
|
||||
<property>
|
||||
<!-- hive metastore 端口-->
|
||||
<name>hive.metastore.uris</name>
|
||||
<value>thrift://hive-ms:9083</value>
|
||||
</property>
|
||||
<property>
|
||||
<!-- hive 默认使用 tez 引擎 -->
|
||||
<name>hive.execution.engine</name>
|
||||
<value>tez</value>
|
||||
</property>
|
||||
</configuration>
|
||||
```
|
||||
|
||||
### 初始化 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
|
||||
```
|
||||
|
||||
@@ -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
|
||||
<configuration>
|
||||
<property>
|
||||
<name>tez.lib.uris</name>
|
||||
<type>string</type>
|
||||
<value>${fs.defaultFS}/tez/tez-0.9.2.tar.gz</value>
|
||||
</property>
|
||||
</configuration>
|
||||
```
|
||||
|
||||
### 修改 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 ..."
|
||||
```
|
||||
|
||||
@@ -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
|
||||
<configuration>
|
||||
<property>
|
||||
<!-- mysql 地址 -->
|
||||
<name>javax.jdo.option.ConnectionURL</name>
|
||||
<value>jdbc:mysql://mysql-ip:3306/hive?createDatabaseIfNotExist=true&useSSL=false</value>
|
||||
</property>
|
||||
<property>
|
||||
<!-- mysql 驱动 -->
|
||||
<name>javax.jdo.option.ConnectionDriverName</name>
|
||||
<value>com.mysql.cj.jdbc.Driver</value>
|
||||
</property>
|
||||
<property>
|
||||
<!-- mysql 用户 -->
|
||||
<name>javax.jdo.option.ConnectionUserName</name>
|
||||
<value>hive</value>
|
||||
</property>
|
||||
<property>
|
||||
<!-- mysql 密码 -->
|
||||
<name>javax.jdo.option.ConnectionPassword</name>
|
||||
<value>Hive_1234</value>
|
||||
</property>
|
||||
<property>
|
||||
<!-- 自动初始化 hive 库 -->
|
||||
<name>datanucleus.schema.autoCreateAll</name>
|
||||
<value>true</value>
|
||||
</property>
|
||||
<property>
|
||||
<name>hive.cli.print.header</name>
|
||||
<value>true</value>
|
||||
</property>
|
||||
<property>
|
||||
<name>hive.cli.print.current.db</name>
|
||||
<value>true</value>
|
||||
</property>
|
||||
<property>
|
||||
<!-- hive server 端口 -->
|
||||
<name>hive.server2.webui.port</name>
|
||||
<value>10002</value>
|
||||
</property>
|
||||
<property>
|
||||
<!-- 数据存储位置(hdfs) -->
|
||||
<name>hive.metastore.warehouse.dir</name>
|
||||
<value>/hive/warehouse</value>
|
||||
</property>
|
||||
<property>
|
||||
<!-- hive metastore 端口-->
|
||||
<name>hive.metastore.uris</name>
|
||||
<value>thrift://hive-ms:9083</value>
|
||||
</property>
|
||||
<!-- hive 使用 tez 引擎
|
||||
<property>
|
||||
<name>hive.execution.engine</name>
|
||||
<value>tez</value>
|
||||
</property> -->
|
||||
</configuration>
|
||||
```
|
||||
|
||||
### 初始化 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 ..."
|
||||
```
|
||||
|
||||
@@ -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
|
||||
<configuration>
|
||||
<property>
|
||||
<name>yarn.scheduler.capacity.resource-calculator</name>
|
||||
<!-- <value>org.apache.hadoop.yarn.util.resource.DefaultResourceCalculator</value> -->
|
||||
<value>org.apache.hadoop.yarn.util.resource.DominantResourceCalculator</value>
|
||||
</description>
|
||||
</property>
|
||||
</configuration>
|
||||
```
|
||||
|
||||
### 创建 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 查看任务进度
|
||||
|
||||
Reference in New Issue
Block a user