(最新版本)hive4.0.0 + hadoop3.3.4 集群安装(无坑版)-大数据学习系列(一)

这篇具有很好参考价值的文章主要介绍了(最新版本)hive4.0.0 + hadoop3.3.4 集群安装(无坑版)-大数据学习系列(一)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

云原生大数据组件研究(Hive+Hadoop)

前言

网上的找的文档大多残缺不靠谱,所以我整理了一份安装最新版本的hive4..0.0+hadoop3.3.4的学习环境,可以提供大家安装一个完整的hive+hadoop的环境供学习。

由于在公司担任大数据的培训工作后续还会更新一些基础的文章,希望能帮助到大家。

一、安装Hadoop3.3.4

前置:集群规划

机器信息

Hostname

k8s-master

k8s-node1

k8s-node2

外网IP

内网IP

NameNode

Y

N

N

SecondaryNameNode

N

Y

N

HDFS

DataNode

Y

Y

Y

YARN

ResourceManager

Y

N

N

NodeManager

Y

Y

Y

PS:部署前请修改好格机器的hostname 并配置好/etc/hosts文件。

step1 安装前准备

  1. 确保 Selinux是禁用状态
#查看是否是禁用状态 若不是则通过 vi 命令进行修改
cat /etc/selinux/config

(最新版本)hive4.0.0 + hadoop3.3.4 集群安装(无坑版)-大数据学习系列(一)

  1. 设置各台机器的免密登录

2.1 切换到k8s-master机器上操作

#进入秘钥存放目录(后续操作一路回车)
ssh-keygen -t rsa

#进入秘钥目录
#rm -rf .ssh 
cd ~/.ssh

#将秘钥导入
cat id_rsa.pub >>authorized_keys


#分发秘钥 格式【ssh-copy-id  主机名】
#分发到node1(后续操作需要输入 node2密1)
ssh-copy-id k8s-node1

#分发到node2(后续操作需要输入 node2密码)
ssh-copy-id k8s-node2

#验证node1的免密登录
ssh k8s-node1
exit

#验证node2的免密登录
ssh k8s-node2
exit
  1. 安装JDK1.8 并配置环境变量(各台机器都需要执行)
#查看jdk安装支持包
yum -y list java*

#安装jdk1.8
yum install java-1.8.0-openjdk.x86_64

#查看jdk版本
java -version

#查看jdk目录
ls /usr/lib/jvm/

#向 /etc/profile 文件追加如下内容
echo "export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.362.b08-1.el7_9.x86_64/jre" >> /etc/profile
echo "export CLASS_PATH=.:\$JAVA_HOME/lib/dt.jar:\$JAVA_HOME/lib/tools.jar:\$JAVA_HOME/lib" >> /etc/profile
echo "export PATH=\$PATH:\$JAVA_HOME/bin" >> /etc/profile

#修改配置文件
#cat /etc/profile

#使得配置文件生效
source /etc/profile

#查看变量名是否正常生效
echo $JAVA_HOME
echo $CLASS_PATH
echo $PATH

#安装openjdk-devel包 否则无法使用jps
yum install java-1.8.0-openjdk-devel.x86_64
  1. 安装hadoop

下载 hadoop-3.3.4.tar.gz 编译好的版本

链接: 百度网盘 请输入提取码 提取码: i4a8

#新建用于存放安装包的目录
mkdir -p /home/install/hadoop/

#新建用于存放压缩后组件的目录
mkdir -p /home/module/hadoop/

#进入安装包目录 上传  hadoop-3.3.4.tar.gz
cd /home/install/hadoop/ 

#解包目录
tar -zxvf /home/install/hadoop/hadoop-3.3.4.tar.gz -C /home/module/hadoop/

#已经解压到 /home/module/hadoop/hadoop-3.3.4
#赋予目录全执行权限
chmod 777 -R /home/module/hadoop


#向 /etc/profile 文件追加如下内容
echo "export HADOOP_HOME=/home/module/hadoop/hadoop-3.3.4" >> /etc/profile
echo "export PATH=:\$PATH:\${HADOOP_HOME}/bin:\${HADOOP_HOME}/sbin" >> /etc/profile


#使得配置文件生效
source /etc/profile

#查看安装是否生效
hadoop version

step2 集群部署

PS:特别注意之后 如果配置发生变更需要将变更的配置文件,还是要分发到各台机器!

修改配置文件

#进入hadoop中的配置文件目录 (注意所需修改的所有配置文件都在 解压后 /etc/hadoop 目录下 )
cd /home/module/hadoop/hadoop-3.3.4/etc/hadoop

#显示当前目录位置
pwd

(最新版本)hive4.0.0 + hadoop3.3.4 集群安装(无坑版)-大数据学习系列(一)

该目录下有我们所需修改文件 core-site.xml 、hdfs-site.xml 、mapred-site.xml、yarn-site.xml 。

修改配置文件

  1. hadoop-env.sh

该文件是hadoop环境变量读取文件,我们执行下面的内内容将配置追加到文件末尾

#进入hadoop中的配置文件目录 (注意所需修改的所有配置文件都在 解压后 /etc/hadoop 目录下 )
cd /home/module/hadoop/hadoop-3.3.4/etc/hadoop
#执行命令 追加到 hadoop-env.sh
echo "export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.362.b08-1.el7_9.x86_64/jre" >> hadoop-env.sh
echo "export PATH=\$PATH:\$JAVA_HOME/bin" >> hadoop-env.sh
echo "export HDFS_NAMENODE_USER=root" >> hadoop-env.sh
echo "export HDFS_DATANODE_USER=root" >> hadoop-env.sh
echo "export HDFS_SECONDARYNAMENODE_USER=root" >> hadoop-env.sh
echo "export YARN_RESOURCEMANAGER_USER=root" >> hadoop-env.sh
echo "export YARN_NODEMANAGER_USER=root" >> hadoop-env.sh




#查看追加结果
cat hadoop-env.sh

!无需执行!(也可以使用vi来添加下面内容)

export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.362.b08-1.el7_9.x86_64/jre
export PATH=$PATH:$JAVA_HOME/bin
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
  1. core-site.xml
#编辑文件 修改<configuration></configuration>中的内容
vi core-site.xml
<configuration>
<!--1.指定Hadoop的文件系统的 NameNode URI -->
<property>
<name>fs.defaultFS</name>
<!--格式<value>hdfs://主机名:8020 </value>-->
<value>hdfs://k8s-master:8020</value>
</property>
<!--2.指定hadoop 数据的存储目录默认为/tmp/hadoop-${user.name} -->
<property>
<name>hadoop.tmp.dir</name>
<value>/export/server/hadoopDatas/tempDatas</value>
</property>
<!--hive.hosts 允许 root 代理用户访问 Hadoop 文件系统设置 -->
<property>
  <name>hadoop.proxyuser.root.hosts</name>
  <value>*</value>
</property>
<!--hive.groups 允许 Hive 代理用户访问 Hadoop 文件系统设置 -->
<property>
  <name>hadoop.proxyuser.root.groups</name>
  <value>*</value>
</property>
<!-- 配置 HDFS 网页登录使用的静态用户为 root -->
<property>
<name>hadoop.http.staticuser.user</name>
<value>root</value>
</property>
<!--配置缓存区的大小,实际可根据服务器的性能动态做调整-->
<property>
<name>io.file.buffer.size</name>
<value>4096</value>
</property>
<!--开启hdfs垃圾回收机制,可以将删除数据从其中回收,单位为分钟-->
<property>
<name>fs.trash.interval</name>
<value>10080</value>
</property>
</configuration>

PS:hadoop.proxyuser.root.groups hadoop.proxyuser.root.groups 必须设置不然

hiveServer2启动会失败。

报错如下:

java.sql.SQLException: Could not open client transport with JDBC Uri: jdbc:hive2://k8s-master:10000: Failed to open new session: java.lang.RuntimeException: org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.security.authorize.AuthorizationException): User: root is not allowed to impersonate anonymous

  1. hdfs-site.xml
#编辑文件 修改<configuration></configuration>中的内容
vi hdfs-site.xml
<configuration>
<!-- 配置 hdfs 文件切片的副本数 -->
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<!--设置HDFS文件权限-->
<property>
<name>dfs.permission</name>
<value>false</value>
</property>
<!--设置一个文件切片的大小:128M-->
<property>
<name>dfs.blocksize</name>
<value>134217728</value>
</property>
<!-- NameNode web 端访问地址(主机名:端口号) -->
<property>
<name>dfs.namenode.http-address</name>
<value>k8s-master:9870</value>
</property>
<!-- 指定SecondaryNameNode web 端访问地址(主机名:端口号) -->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>k8s-node1:9868</value>
</property>
<!--指定namenode元数据的存放位置-->
<property>
<name>dfs.namenode.name.dir</name>
<value>file:///export/server/hadoopDatas/namenodeDatas</value>
</property>
<!--指定datanode数据存储节点位置-->
<property>
<name>dfs.datanode.data.dir</name>
<value>file:///export/server/hadoopDatas/datanodeDatas</value>
</property>
<!--指定namenode的edit文件存放位置-->
<property>
<name>dfs.namenode.edits.dir</name>
<value>file:///export/server/hadoopDatas/nn/edits</value>
</property>
<!--指定检查点目录-->
<property>
<name>dfs.namenode.checkpoint.dir</name>
<value>file:///export/server/hadoopDatas/snn/name</value>
</property>
<property>
<name>dfs.namenode.checkpoint.edits.dir</name>
<value>file:///export/server/hadoopDatas/dfs/snn/edits</value>
</property>
</configuration>
  1. mapred-site.xml

是MapReduce的核心配置文件

#编辑文件 修改<configuration></configuration>中的内容
vi mapred-site.xml

<configuration>
<!--指定mapreduce运行的框架yarn-->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<!--开启mapreduce最小任务模式-->
<property>
<name>mapreduce.job.ubertask.enable</name>
<value>true</value>
</property>
<!-- 配置 mapreduce 的历史记录 组件的内部通信地址即 RPC 地址 -->
<property>
<name>mapreduce.jobhistory.address</name>
<!--格式<value>主机名:端口</value>-->
<value>k8s-master:10020</value>
</property>
<!-- 配置 mapreduce 历史记录服务的  web 管理地址 -->
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>k8s-master:19888</value>
</property>
<!-- 配置 mapreduce 已 完成的  job 记录在 HDFS 上的存放地址 -->
<property>
<name>mapreduce.jobhistory.done-dir</name>
<value>/history/done</value>
</property>
<!-- 配置 mapreduce 正在执行的 job 记录在 HDFS 上的存放地址 -->
<property>
<name>mapreduce.jobhistory.intermediate-done-dir</name>
<value>/history/done_intermediate</value>
</property> <!-- 为 MR 程序主进程添加环境变量 -->
<property>
<name>yarn.app.mapreduce.am.env</name>
<value>HADOOP_MAPRED_HOME=/home/module/hadoop/hadoop-3.3.4</value>
</property>
<!-- 为 Map 添加环境变量 -->
<property>
<name>mapreduce.map.env</name>
<value>HADOOP_MAPRED_HOME=/home/module/hadoop/hadoop-3.3.4</value>
</property>
<!-- 为 Reduce 添加环境变量 -->
<property>
<name>mapreduce.reduce.env</name>
<value>HADOOP_MAPRED_HOME=/home/module/hadoop/hadoop-3.3.4</value>
</property>
</configuration>

  1. yarn-site.xml
#编辑文件 修改<configuration></configuration>中的内容
vi yarn-site.xml
<configuration>
<!-- Site specific YARN configuration properties -->
<!--指 定 resourcemanager 所启动服务的主机名 |IP(yarn主节点位置)-->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>k8s-master</value>
</property>
<!--指 定 mapreduce的shuffle 处理数据方式 -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- 配置 resourcemanager 内部通讯地址 -->
<property>
<name>yarn.resourcemanager.address</name>
<value>k8s-master:8032</value>
</property>
<!-- 配置 resourcemanager 的 scheduler 组件的内部通信地址 -->
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>k8s-master:8030</value>
</property>
<!-- 配置 resource-tracker 组件的内部通信地址 -->
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>k8s-master:8031</value> </property>
<!-- 配置 resourcemanager 的  admin 的内部通信地址 -->
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>k8s-master:8033</value>
</property>
<!-- 配置 yarn 的  web 管理地址 -->
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>k8s-master:8088</value>
</property>
<!--yarn 的日志聚合是否开启 -->
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<!-- 聚合日志在 hdfs 的存储路径 -->
<property>
<name>yarn.nodemanager.remote-app-log-dir</name>
<value>/tmp/logs</value>
</property>
<!-- 聚合日志在 hdfs的 保存时长,单位 S ,默认 7 天 -->
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>604800</value>
</property>
<!-- 聚合日志的检查时间段 -->
<property>
<name>yarn.log-aggregation.retain-check-interval-seconds</name>
<value>3600</value>
</property>
<!-- 设 置日志聚合服务器地址 -->
<property>
<name>yarn.log.server.url</name>
<value>http://k8s-master:19888/jobhistory/logs</value>
</property>
<!-- 环境变量的继承 -->
<property>
<name>yarn.nodemanager.env-whitelist</name>
<value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CO
NF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAP
RED_HOME</value>
</property>
</configuration>

  1. workers

重新配置workers

cat > workers << EOF 
k8s-master
k8s-node1
k8s-node2
EOF

创建配置文件中涉及的数据目录

#创建hadoop.tmp.dir对应目录
mkdir -p /export/server/hadoopDatas/tempDatas
#创建dfs.namenode.name.dir对应目录
mkdir -p /export/server/hadoopDatas/namenodeDatas
#创建dfs.datanode.data.dir对应目录
mkdir -p /export/server/hadoopDatas/datanodeDatas
#创建dfs.namenode.edits.dir对应目录
mkdir -p /export/server/hadoopDatas/nn/edits
#创建dfs.namenode.checkpoint.dir对应目录
mkdir -p /export/server/hadoopDatas/snn/name
#创建dfs.namenode.checkpoint.edits.dir对应目录
mkdir -p /export/server/hadoopDatas/dfs/snn/edits

chmod 777  -R /export/server/hadoopDatas

step4 分发节点

1.切换到k8s-node1和k8s-node2 分别执行

1.1 追加环境变量(各台机器均需要执行)

#向 /etc/profile 文件追加如下内容
echo "export HADOOP_HOME=/home/module/hadoop/hadoop-3.3.4" >> /etc/profile
echo "export PATH=:\$PATH:\${HADOOP_HOME}/bin:\${HADOOP_HOME}/sbin" >> /etc/profile

#使得配置文件生效
source /etc/profile

1.2 创建目录(各台机器均需要执行)

mkdir -p /home/module/hadoop/
chmod 777  -R /home/module/hadoop/

2.切换到k8s-master执行

2.1 copy配置好的hadoop

#复制到k8s-node1
scp -r /home/module/hadoop/hadoop-3.3.4 root@k8s-node1:/home/module/hadoop/

#复制到k8s-node2
scp -r /home/module/hadoop/hadoop-3.3.4 root@k8s-node2:/home/module/hadoop/

2.2 格式化Namenode(仅能格式化一次)

首次启动HDFS需要对其进行格式化操作,做清理和准备

hadoop namenode -format

(最新版本)hive4.0.0 + hadoop3.3.4 集群安装(无坑版)-大数据学习系列(一)

(最新版本)hive4.0.0 + hadoop3.3.4 集群安装(无坑版)-大数据学习系列(一)

(最新版本)hive4.0.0 + hadoop3.3.4 集群安装(无坑版)-大数据学习系列(一)

2.3 启动 hadoop服务

cd /home/module/hadoop/hadoop-3.3.4/sbin

start-all.sh

#关闭命令(无需执行)
#stop-all.sh

(最新版本)hive4.0.0 + hadoop3.3.4 集群安装(无坑版)-大数据学习系列(一)

附录:分阶段一键启动命令(无需执行)

#一键启动HDFS
#start-dfs.hs

#一键启动Yarn
#start-yarn.sh

#启动历史服务进程(这必须单独启动)
#mr-jobhistory-daemon.sh start historyserver

2.4. 检查进程运行情况

jps

(最新版本)hive4.0.0 + hadoop3.3.4 集群安装(无坑版)-大数据学习系列(一)

step5 通过web端查看 hdfs集群情况

HDFS查看地址:http://[你机器机器ip]:9870/

(最新版本)hive4.0.0 + hadoop3.3.4 集群安装(无坑版)-大数据学习系列(一)

yarn查看地址:http://[你机器机器ip]:8088/

(最新版本)hive4.0.0 + hadoop3.3.4 集群安装(无坑版)-大数据学习系列(一)

HDFS:公网IP:9870
yarn:公网IP:8088

错误解决集合

1. no YARN_RESOURCEMANAGER_USER defined.

(最新版本)hive4.0.0 + hadoop3.3.4 集群安装(无坑版)-大数据学习系列(一)

解决方法:该文件是hadoop环境变量读取文件,我们执行下面的内内容将配置追加到文件末尾

即可解决该问题

#进入hadoop中的配置文件目录 (注意所需修改的所有配置文件都在 解压后 /etc/hadoop 目录下 )
cd /home/module/hadoop/hadoop-3.3.4/etc/hadoop
#执行命令 追加到 hadoop-env.sh
echo "export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.362.b08-1.el7_9.x86_64/jre" >> hadoop-env.sh
echo "export PATH=\$PATH:\$JAVA_HOME/bin" >> hadoop-env.sh
echo "export HDFS_NAMENODE_USER=root" >> hadoop-env.sh
echo "export HDFS_DATANODE_USER=root" >> hadoop-env.sh
echo "export HDFS_SECONDARYNAMENODE_USER=root" >> hadoop-env.sh
echo "export YARN_RESOURCEMANAGER_USER=root" >> hadoop-env.sh
echo "export YARN_NODEMANAGER_USER=root" >> hadoop-env.sh

#查看追加结果
cat hadoop-env.sh

2

#如果找不到 chattr 命令需要重装下
yum remove e2fsprogs
yum install e2fsprogs

cd ~/.ssh

lsattr authorized_keys
#显示
#-----a-------e-- authorized_keys

lsattr authorized_keys2
#显示
#-----a-------e-- authorized_keys2


chattr -a -e  authorized_keys
chattr -a -e  authorized_keys2

rm -rf authorized_keys
rm -rf authorized_keys2

2.【漏洞】 Hadoop Yarn RPC未授权访问漏洞

参考文献

【漏洞预警】Hadoop Yarn RPC未授权访问漏洞

Hadoop Yarn RPC服务未授权访问漏洞 - 网安

 Hadoop Yarn RPC未授权访问漏洞存在于Hadoop Yarn中负责资源管理和任务调度的ResourceManager,成因是该组件为用户提供的RPC服务默认情况下无需认证即可访问,因此把RPC服务暴露在公网上是非常危险的。
      RPC服务利用这一问题会影响到部分有安全意识的用户。一部分用户基于过去几年中基于多种利用Hadoop的历史蠕虫已经意识到RESTful API的风险,通过配置开启了基于HTTP的认证,或通过防火墙/安全组封禁了RESTful API对应的8088端口,但由于他们没有意识到Hadoop同时提供RPC服务,并且访问控制机制开启方式跟REST API不一样,导致用户Hadoop集群中RPC服务所在的8032端口仍然可以未授权访问。
       经测试可知,对于8032暴露在互联网且未开启kerberos的Hadoop Yarn ResourceManager,编写应用程序调用yarnClient.getApplications()即可查看所有应用信息

解决方案

1、Apache Hadoop 官方建议用户开启 Kerberos 认证

2、设置 Hadoop RPC 服务所在端口仅对可信地址开放

或者只在【内网】开放8032端口,注意由于这个漏洞不能对外开放8032!

  • 容器方式安装mysql8.0-作为元数据库

这个是作为hive的元数据库的,如果自己有mysql可以跳过这个步骤

前置:数据规划

用户名

密码

root

【你自己的密码】

chenjia

【你自己的密码】

1创建目录

若之前用本文档安装轻用这个命令清理 #rm -rf /home/mysql


cd /home
mkdir mysql
mkdir -p /home/mysql/conf
mkdir -p /home/mysql/data
mkdir -p /home/mysql/logs
chmod -R 777 /home/mysql

2创建一个临时的mysql镜像复制其配置文件

docker run -d -p 3306:3306 --privileged=true --restart=always \

-e MYSQL_ROOT_PASSWORD=123456 \

--name mysql01 mysql \

--lower-case-table-names=1

#复制配置文件 挂载出去方便以后修改
docker cp -a  mysql01:/etc/mysql/my.cnf /home/mysql/conf/my.cnf 

#删除临时镜像
docker rm -f mysql01

3修改/home/mysql/conf/my.cnf 配置文件

vim /home/mysql/conf/my.cnf

在最后一行增加最大连接数设置

max_connections=2000

:wq 保存

4正式启动mysql环境

注意:需要使用大小写不敏感配置 (--lower-case-table-names=1 )

如果之前安装过请先执行此命令删除 #docker rm -f mysql01

mysql8.0

安装命令

docker run -d -p 3306:3306 --privileged=true --restart=always \

-v /home/mysql/conf/my.cnf:/etc/mysql/my.cnf \

-v /home/mysql/data:/var/lib/mysql \

-v /home/mysql/logs:/logs -e MYSQL_ROOT_PASSWORD=123456 \

--name mysql01 mysql \

--lower-case-table-names=1

5为mysql创建一个可以远程访问的用户

以下是创建一个用户名为 chenjia 密码为 【你自己的密码】 的管理员账号

docker exec -it mysql01 /bin/bash

mysql -u root -p

create user chenjia@'%' identified  by '【你自己的密码】';

grant all privileges on *.* to chenjia@'%' with grant option;

flush privileges;

alter user 'chenjia'@'%' identified with mysql_native_password by '【你自己的密码】';

#将简单密码改成复杂的【你自己的密码】 以免收到攻击
alter user 'root'@'%' identified with mysql_native_password by '【你自己的密码】';

#alter user 'root'@'%' identified with mysql_native_password by '【你自己的密码】';



6查看与临时修改mysql最大连接数

docker exec -it mysql01 /bin/bash

mysql -u root -p

show variables like 'max_connections';

set global max_connections=1000;

exit

技巧:Docker镜像中安装vim命令的方法

docker exec -it mysql01 /bin/bash

apt-get update

apt-get install vim

三、安装hive4.0.0

版本选用

对于 Hadoop 3.3.4,建议使用与之兼容的最新版本的 Hive,即 Hive 4.0.0。这是因为 Hive 4.0.0 是与 Hadoop 3.3.x 兼容的最新版本,可以充分利用 Hadoop 3.3.4 中的新特性和改进。

Hive 3.1.3。 Hive 3.1.3 也与 Hadoop 3.3.x 兼容,并且是 Hive 3.x 系列中的最新版本,它在功能和性能方面与 Hive 4.0.0 相当接近。

前置已经安装项目:

Hadoop3.3.4

MySql8.0

安装Hive

1.下载安装包

下载 apache-hive-4.0.0-alpha-2-bin.tar.gz

下载方式1:官方网站

下载方式2: https://pan.baidu.com/s/1hPas2f3PU81SXdtvB4_zbQ?pwd=81lv 提取码: 81lv

2.设置安装目录和环境变量

#建立目录
mkdir -p /home/install/hive
#上传apache-hive-4.0.0-alpha-2-bin.tar.gz

#创建hive安装目录
mkdir -p /home/module/hive
chmod 777 /home/module/hive

#解压hive到 安装目录
tar -zxvf /home/install/hive/apache-hive-4.0.0-alpha-2-bin.tar.gz -C /home/module/hive

#进入hive安装目录
cd /home/module/hive/

#修改名称为 hive-4.0.0
mv  apache-hive-4.0.0-alpha-2-bin hive-4.0.0

#进入hive的安装目录
cd /home/module/hive/hive-4.0.0

#向 /etc/profile 文件追加如下内容
echo "export HIVE_HOME=/home/module/hive/hive-4.0.0" >> /etc/profile
echo "export PATH=\$PATH:\$HIVE_HOME/bin" >> /etc/profile

#查看配置是否被写到最后
cat /etc/profile

#使得配置文件生效
source /etc/profile

#验证环境变量
echo $HIVE_HOME
echo $PATH


解决日志jar包冲突

#在系统重查找所有的    SLF4J 绑定的 JAR 文件
find / -name "*slf4j*.jar" 

[root@k8s-master lib]# find / -name "*slf4j*.jar"

find: ‘/proc/13287’: 没有那个文件或目录

find: ‘/proc/13288’: 没有那个文件或目录

find: ‘/proc/13289’: 没有那个文件或目录

find: ‘/proc/13291’: 没有那个文件或目录

find: ‘/proc/13292’: 没有那个文件或目录

/home/module/hadoop/hadoop-3.3.4/share/hadoop/common/lib/slf4j-reload4j-1.7.36.jar

/home/module/hadoop/hadoop-3.3.4/share/hadoop/common/lib/slf4j-api-1.7.36.jar

/home/module/hadoop/hadoop-3.3.4/share/hadoop/common/lib/jul-to-slf4j-1.7.36.jar

/home/module/hive/hive-4.0.0/lib/log4j-slf4j-impl-2.18.0.jar

/home/module/hive/hive-4.0.0/hcatalog/share/webhcat/svr/lib/jul-to-slf4j-1.7.30.jar

#删除
mv $HIVE_HOME/lib/log4j-slf4j-impl-2.18.0.jar $HIVE_HOME/lib/log4j-slf4j-impl-2.18.0.bak

#恢复 方法
#mv $HIVE_HOME/lib/log4j-slf4j-impl-2.18.0.bak $HIVE_HOME/lib/log4j-slf4j-impl-2.18.0.jar 


3.上载mysql连接驱动

链接: https://pan.baidu.com/s/1dvCqt77D1wOKbtBUrAILkA?pwd=7kni 提取码: 7kni

#mysql8.0  的最新驱动到lib目录
cd /home/module/hive/hive-4.0.0/lib

4.在mysql中创建metastore数据库

#进入容器内容
docker exec -it mysql01 /bin/bash

#登录
mysql -u root -p
#输入密码 123456 (本地可用)

#创建  metastore 数据库:
CREATE DATABASE metastore;

#创建hiveruser 为其设置密码
CREATE USER 'hiveuser'@'%' IDENTIFIED BY '【你自己的密码】';

#授予metastore数库的所有访问权限
GRANT ALL PRIVILEGES ON metastore.* TO 'hiveuser'@'%';

#退出mysql终端
exit

#退出docker环境
exit

5.修改配置文件

1.hive-site.xml

#进入配置文件夹
cd /home/module/hive/hive-4.0.0/conf
#rm -rf hive-site.xml
#创建配置文件
vi hive-site.xml

复制下面内容到文件中用wq保存

<configuration>
  <property>
    <name>javax.jdo.option.ConnectionURL</name>
    <value>jdbc:mysql://k8s-master:3306/metastore?createDatabaseIfNotExist=true&amp;characterEncoding=UTF-8&amp;useSSL=false&amp;allowPublicKeyRetrieval=true</value>  
 </property>
 <property>
    <name>javax.jdo.option.ConnectionDriverName</name>
    <value>com.mysql.jdbc.Driver</value>
 </property>
 <property>
    <name>javax.jdo.option.ConnectionUserName</name>
    <value>hiveuser</value>
 </property>
 <property>
    <name>javax.jdo.option.ConnectionPassword</name>
    <value>【你自己的数据库密码】</value>
 </property>
 <!-- 指定存储元数据要连接的地址 -->
 <property>
    <name>hive.metastore.uris</name>
    <value>thrift://k8s-master:9083</value>
    <description>URI for client to connect to metastore server</description>
 </property>
 <!-- 指定hiveserver2连接的host -->
 <property>
    <name>hive.server2.thrift.bind.host</name>
    <value>k8s-master</value>
 </property>
 <!-- 指定hiveserver2连接的端口号 -->
 <property>
    <name>hive.server2.thrift.port</name>
    <value>10000</value>
 </property>
 <!-- hiveserver2的高可用参数,如果不开会导致了开启tez session导致hiveserver2无法启动 -->
 <property>
    <name>hive.server2.active.passive.ha.enable</name>
    <value>true</value>
 </property>
 <!--解决Error initializing notification event poll问题-->
 <property>
    <name>hive.metastore.event.db.notification.api.auth</name>
    <value>false</value>
 </property>
</configuration>

配置文件解释:

<property>

<name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://<hostname>:<port>/<database>?useSSL=false&amp;allowPublicKeyRetrieval=true</value>

</property>

参数说明:

jdbc:mysql://<hostname>:<port>/<database>?useSSL=false&amp;allowPublicKeyRetrieval=true 应该设置为实际使用的数库连接字符串

<property>

<name>javax.jdo.option.ConnectionUserName</name>

<value><username></value>

</property>

参数说明:

<username>参数应改为实际上的数据库的用户

<property>

<name>javax.jdo.option.ConnectionPassword</name>

<value><password></value>

</property>

参数说明:

<password> 参数应改为实际上的数据库的密码。

<property>

<name>hive.metastore.uris</name>

<value>thrift://<hostname>:9083</value>

<description>URI for client to connect to metastore server</description>

</property>

参数说明:

<hive.metastore.uris> 参数是连接到 Hive 元数据存储服务的必要参数。如果没有正确配置该参数,当您尝试连接到 Hive 时,会遇到类似于 "No current connection" 的错误消息。,<hostname> 应该被替换为运行 Hive Metastore Server 的主机名或 IP 地址。如果 Hive Metastore Server 运行在非默认端口上,那么您需要相应地更改端口号。

6.初始化 元数据 数据库命令

#执行初始化元数据
schematool -dbType mysql -initSchema -verbose 

#查看日志
cat /tmp/root/hive.log

PS:元数据库初始化日志的目录路径取决于我们配置的 Hive 元数据库日志目录位置。默认情况下,Hive 元数据库日志存储在 ${java.io.tmpdir}/${user.name}/hive.log 中,其中 ${java.io.tmpdir} 是 Java 系统属性中的临时目录路径,${user.name} 是当前用户的名称。如果您使用的是默认值,则可以在 /tmp/your-username/ 目录下找到日志文件

(最新版本)hive4.0.0 + hadoop3.3.4 集群安装(无坑版)-大数据学习系列(一)

7. 配置hive启动所需服务

在Hive 4.0.0中,Hive CLI已经被弃用,取而代之的是Beeline。所以,当你启动Hive 4.0.0时,你会默认进入Beeline命令行界面,而不是Hive CLI。如果你想使用Hive CLI,你可以考虑降低Hive的版本,或者在Hive 4.0.0中使用Beeline命令行。

使用Beeline命令行连接Hive服务之前,需要确保以下服务已经启动和配置:

服务

说明

执行命令

Hadoop

Hive需要依赖Hadoop服务来运行,因此需要确保Hadoop服务已经启动,并且配置文件中的相关参数正确。

start-all.sh

Hive Metastore

Hive Metastore是Hive的元数据存储服务,需要确保Metastore服务已经启动,并且在Beeline的配置文件中正确配置了Metastore的地址。

hive --service metastore

HiveServer2

HiveServer2是Hive的查询服务,需要确保HiveServer2服务已经启动,并且在Beeline的配置文件中正确配置了HiveServer2的地址。

hive --service hiveserver2

查看日志文件位置(可用于后续排除错误)

#在 Hive 的 conf/ 目录下 有一个hive-log4j2.properties 指定了日志的位置
#默认是记录在 hive.log中的 可以找下这个文件的位置
find / -name "*hive*.*log*" 

#找到日志后可以使用下面的方法查看日志 排除错误
#持续查看日志
tail -f /tmp/root/hive.log
#查看100行
tail -n 100 /tmp/root/hive.log

按顺序启动各基础服务

# 为演示效果 打开一个新的shell窗口 启动后窗口不再操作
start-all.sh

# 为演示效果 打开一个新的shell窗口 启动后窗口不再操作
hive --service metastore  -n hive -p hivis250ha
netstat -anp | grep 9083

# 为演示效果 打开一个新的shell窗口 启动后窗口不再操作
hive --service hiveserver2
netstat -anp | grep 10000

#为演示效果 打开一个新的shell窗口 用jps -m 查看
jps -m

下面是这些语句分别的执行结果:

(最新版本)hive4.0.0 + hadoop3.3.4 集群安装(无坑版)-大数据学习系列(一)

(最新版本)hive4.0.0 + hadoop3.3.4 集群安装(无坑版)-大数据学习系列(一)

(最新版本)hive4.0.0 + hadoop3.3.4 集群安装(无坑版)-大数据学习系列(一)

进行Hive的连接测试

方式1: 执行beeline 命令

#最后尝试连接
beeline -u jdbc:hive2://k8s-master:10000 --verbose=true

结果如下:

(最新版本)hive4.0.0 + hadoop3.3.4 集群安装(无坑版)-大数据学习系列(一)

方式2: 执行hive命令

#1.执行hive
hive
#2.输入建立连接的命令
!connect jdbc:hive2://k8s-master:10000
#3.输入用户名 root  密码 随意例如:chenjia  
#4.执行SQL命令
show tables;

(最新版本)hive4.0.0 + hadoop3.3.4 集群安装(无坑版)-大数据学习系列(一)

到此已经完成 hive+hadoop的安装。文章来源地址https://www.toymoban.com/news/detail-461383.html

到了这里,关于(最新版本)hive4.0.0 + hadoop3.3.4 集群安装(无坑版)-大数据学习系列(一)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Ubuntu22.04 Hadoop3.3.4 jdk18.02 安装配置

    阅读推荐(105条消息) 大数据安装之hadoop-3.3.4_x_y_z423的博客-CSDN博客 (112条消息) hadoop3.3.4集群安装部署_hwbays的博客-CSDN博客 加倍推荐,Hadoop集群配置内容讲的及其详细 基于docker的hadoop集群搭建 xshell Windows 10 Pro, 64-bit VMware® Workstation 16 Pro Ubuntu22.04 * 3 2、VMware tools安装 apt install

    2023年04月11日
    浏览(44)
  • 最新版本——Hadoop3.3.6单机版完全部署指南

    大家好,我是独孤风,大数据流动的作者。 本文基于最新的 Hadoop 3.3.6 的版本编写,带大家通过单机版充分了解 Apache Hadoop 的使用。本文更强调实践,实践是大数据学习的重要环节,也能在实践中对该技术有更深的理解,所以一些理论知识建议大家多阅读相关的书籍(都在资

    2024年02月03日
    浏览(47)
  • Hadoop3.X集群安装

    服务器 运行角色 hadoop01 namenode、datanode、resourcemanager、nodemanager hadoop02         secondarynamenode、datanode、nodemanager hadoop03 datanode、nodemanager 安装包、源码包下载 https://archive.apache.org/dist/hadoop/common/hadoop-3.3.0/ 准备三台主机 hosts映射 JDK1.8安装 JDK1.8 配置ssh免密登录 ssh免密登录 创建

    2024年01月20日
    浏览(47)
  • hadoop3.2.1+hive3.1.2-docker安装

    建立hadoop用的内部网络(此步出错,若与其它网段冲突,可省略) #指定固定ip号段 建立Master容器,映射端口 10000端口为hiveserver2端口,后面本地客户端要通过beeline连接hive使用,有其他组件要安装的话可以提前把端口都映射出来 若创建了网段则可指定网段运行 创建slave1 172.17.

    2024年02月08日
    浏览(39)
  • 【运维】hadoop3.0.3集群安装(二) 横向新增节点和删除节点

    1.配置、安装 1.1. 所有节点配置新节点主机映射 在namenode节点:   1.2. 上传安装包 在namenode节点,通过scp上传安装包   1.3. 配置环境变量 在新节点   1.4. 配置workers 在namenode节点下的/home/taiyi/hadoop/hadoop/etc/hadoop/workers 填写新增节点主机名 发送到各节点   1.5. 清理之前集群的数

    2024年02月10日
    浏览(48)
  • [sqoop]hive3.1.2 hadoop3.1.1安装sqoop1.4.7

    Hadoop3.2.4+Hive3.1.2+sqoop1.4.7安装部署_hadoop sqoop安装_alicely07的博客-CSDN博客 sqoop-env.sh 末尾添加 环境变量 先创建目录,解决警告:accumulo does not exist! (1)添加jdbc驱动包:将MySQL数据库的JDBC驱动包mysql-connector-java-5.1.37.jar添加到Sqoop安装目录的lib目录中。 (2)删除Sqoop安装目录的

    2024年02月07日
    浏览(60)
  • hadoop集群搭建+hive安装

    VMware-workstation:VMware-workstation-full-16.2.3 ubuntu:ubuntu-21.10 hadoop:hadoop2.7.2 mysql:mysql-connector-java-8.0.19 jdk:jdk-8u91-linux-x64.tar(注意要是linux版本的,因为是在linux系统中创建虚拟机) hive:hive1.2.1 小技巧: 右键单击可以paste 1.选择典型即可 2.将ubuntu镜像文件导入: 3.用户名要记住

    2024年02月05日
    浏览(103)
  • CentOS 搭建 Hadoop3 高可用集群

    spark101 spark102 spark103 192.168.171.101 192.168.171.102 192.168.171.103 namenode namenode journalnode journalnode journalnode datanode datanode datanode nodemanager nodemanager nodemanager recource manager recource manager job history job log job log job log 1.1 升级操作系统和软件 升级后建议重启 1.2 安装常用软件 1.3 修改主机名 1

    2024年02月06日
    浏览(48)
  • hadoop2的集群数据将副本存储在hadoop3

    在 Hadoop 集群中,HDFS 副本是分布式存储的,会存储在不同的节点上。因此,如果您的 HDFS 所在路径是在 Hadoop2 集群中,您可以在 Hadoop3 集群上添加新的节点,并向 Hadoop3 集群中添加这些新节点上的数据副本。 以下是一些常见的方法: 1.添加新节点 首先,在 Hadoop3 集群中添加

    2024年02月12日
    浏览(46)
  • 【hadoop3.x】一 搭建集群调优

    https://blog.csdn.net/fen_dou_shao_nian/article/details/120945221 2.1 模板虚拟机环境准备 0)安装模板虚拟机,IP 地址 192.168.10.100、主机名称 hadoop100、内存 4G、硬盘 50G 1)hadoop100 虚拟机配置要求如下(本文 Linux 系统全部以 CentOS-7.5-x86-1804 为例) (1)使用 yum 安装需要虚拟机可以正常上网,

    2024年02月07日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包