Mac M1安装Hive

news2025/1/11 11:19:00

一、下载解压Hive

1.官网地址

https://dlcdn.apache.org/hive/

2.选择对应版本进行下载,这里我以3.1.3为例;

在这里插入图片描述
在这里插入图片描述

3.下载好后,进行解压,并重命名为hive-3.1.3,放到资源库目录下;

二、配置系统环境

1.打开~/.bash_profile文件

open -e ~/.bash_profile

2.添加Hadoop、Hive环境变量

export HADOOP_HOME=/Library/hadoop-3.4.0
export PATH=$PATH:$HADOOP_HOME/bin

export HIVE_HOME=/Library/hive-3.1.3
export PATH=$HIVE_HOME/bin:$PATH

3.使得配置生效

source ~/.bash_profile

4.停止hadoop并重启

如果hadoop正在运行暂停hadoop

# 进入hadoop目录
cd /Library/hadoop-3.4.0
# 停止hadoop服务
./sbin/stop-all.sh
# 启动hadoop
./sbin/start-all.sh

5.查看hive版本

hive --version

如果出现mac权限问题,解决方法参考链接

hive --version
 
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/Library/hive-3.1.3/lib/log4j-slf4j-impl-2.18.0.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/Library/hadoop-3.4.0/libexec/share/hadoop/common/lib/slf4j-reload4j-1.7.36.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.apache.logging.slf4j.Log4jLoggerFactory]
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/Library/hive-3.1.3/lib/log4j-slf4j-impl-2.18.0.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/Library/hadoop-3.4.0/libexec/share/hadoop/common/lib/slf4j-reload4j-1.7.36.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.apache.logging.slf4j.Log4jLoggerFactory]
Hive 4.0.0
Git git://MacBook-Air.local/Users/xxx/projects/hive/fork/hive -r 183f8cb41d3dbed961ffd27999876468ff06690c
Compiled by xxx on Mon Mar 25 12:44:09 CET 2024
From source with checksum e3c64bec52632c61cf7214c8b545b564

三、修改Hive配置文件

1.重命名conf文件夹下的hive-default.xml.template

cd /Library/hive-3.1.3/conf

mv hive-default.xml.template hive-default.xml

2.新建hive-site.xml

vim hive-site.xml

open -e hive-site.xml

hive-site.xml文件中添加如下内容:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
  <property>
    <name>javax.jdo.option.ConnectionURL</name>
    <value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true&amp;useSSL=false&amp;allowPublicKeyRetrieval=true</value>
    <description>JDBC connect string for a JDBC metastore</description>
  </property>
  <property>
    <name>javax.jdo.option.ConnectionDriverName</name>
    <value>com.mysql.jdbc.Driver</value>
    <description>Driver class name for a JDBC metastore</description>
  </property>
  <property>
    <name>javax.jdo.option.ConnectionUserName</name>
    <value>hive</value>
    <description>username to use against metastore database</description>
  </property>
  <property>
    <name>javax.jdo.option.ConnectionPassword</name>
    <value>hive</value>
    <description>password to use against metastore database</description>
  </property>
</configuration>

保存并关闭;

四、安装并配置mysql

1.下载Mysql驱动

MySQL 驱动下载网址

在这里插入图片描述

2.将下载的压缩包解压,找到mysql-connector-j-8.2.0.jar文件,将该文件拷贝到/Library/hive-3.1.3/lib目录下。

3.确保你的电脑安装过mysql

打开终端,执行如下命令:

mysql -u root -p

如果你确定装过mysql,但是执行上述命令后,发现不存在mysql命令,那说明你的系统环境没有配置。

# 查看 mysql 安装路径
which mysql

在这里插入图片描述
若出现路径,则存在mysql。

# 打开如下配置文件
open -e ~/.bash_profile
export PATH=${PATH}:/usr/local/mysql/bin/

配置好后保存,使配置文件生效。

source ~/.bash_profile

4.重新执行mysql 登录

mysql -u root -p

回车,输入密码。

五、创建hive数据库

1.创建hive数据库

create database hive; 

CREATE USER 'hive'@'localhost' IDENTIFIED BY 'hive';

GRANT ALL ON *.* TO 'hive'@'localhost';

#刷新mysql系统权限关系表
flush privileges;

2.使用Hive自带的schematool工具升级元数据

cd /Library/hive-3.1.3
./bin/schematool -initSchema -dbType mysql

出现一段空白,接着出现Initialization script completed。

六、修改Hadoop配置文件并重启

1.编辑Hadoop的core-site.xml配置文件

cd /Library/hadoop-3.4.0
open -e core-site.xml

在文件中补充如下内容:

<property>
  <name>hadoop.proxyuser.用户名.hosts</name>
  <value>*</value>
</property>
<property>
  <name>hadoop.proxyuser.用户名.groups</name>
  <value>*</value>
</property>

保存并推出。

用户名通过如下命令查看

whoami

2.重启Hadoop集群

cd /Library/hadoop-3.4.0/sbin
./stop-all.sh
./satrt-all.sh

七、启动Hive并访问

1.启动hive

cd /Library/hive-3.1.3/bin
hive --service hiveserver2&

启动后,出现如下命令证明启动成功:

SLF4J: Found binding in [jar:file:/Library/hive-3.1.3/lib/log4j-slf4j-impl-2.18.0.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/Library/hadoop-3.4.0/libexec/share/hadoop/common/lib/slf4j-reload4j-1.7.36.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.apache.logging.slf4j.Log4jLoggerFactory]
Hive Session ID = 7afcdcf2-3f5d-4912-99b9-4e57a7ef3a03
Hive Session ID = 51a21ecb-ae06-4ed3-a6b7-a62444b5836e

2.浏览器访问

再去浏览器里输入

http://localhost:10002

就可以见到hive的web界面了
在这里插入图片描述

3.客户端访问

在bin目录下,重启一个终端,输入如下命令:

beeline
!connect jdbc:hive2://localhost:10000

用户名hive,密码hive
成功登录出现
0: jdbc:hive2://localhost:10000>

show databases;

执行上面命令后,若有结果输出,则证明配置完成了。

关闭hiveServer2时,执行如下命令查看hive进程;

ps aux | grep hive 

进程大概是下面内容:

 52843   0.1  2.9 413527440 489776 s003  SN    8:58下午   0:17.23 /Library/Java/JavaVirtualMachines/jdk-1.8.jdk/Contents/Home/bin/java -Dproc_jar -Dproc_hiveserver2 -Dlog4j2.formatMsgNoLookups=true -Dlog4j.configurationFile=hive-log4j2.properties -Djava.util.logging.config.file=/Library/hive-3.1.3/conf/parquet-logging.properties -Djline.terminal=jline.Unsuppo

4.通过如下命令杀死该进程

kill -9 52843 

八、通过DBeaver连接Hive

主机:localhost

认证:Database Native

用户名:hive

密码:hive

九、利用Python连接Hive库,并在库中插入数据

代码如下:

from pyhive import hive

def ConnectHive(addr, port, user, pwd, db, auth):
    try:
        # 1. Create connection
        conn = hive.Connection(host=addr, port=port, username=user, password=pwd, database=db, auth=auth)
        print("Hive connection successful!")

        # 2. Use Hive SQL to create table
        create_tab_sql = """CREATE TABLE users (id INT, name STRING, age INT, address STRING)"""

        # 3. Execute SQL with cursor
        with conn.cursor() as cursor:
            cursor.execute(create_tab_sql)
            print("User table created successfully!")

    except Exception as e:
        print(f"An error occurred: {e}")

    finally:
        # 4. Close connection
        if conn:
            conn.close()
            print("Hive connection closed.")


if __name__ == '__main__':
    addr = '127.0.0.1'
    port = 10000
    user = 'hive'
    pwd = 'hive'
    db = 'default'
    auth = 'LDAP'
    ConnectHive(addr, port, user, pwd, db, auth)

在执行这段代码时,出现下面报错:

org.apache.hadoop.security.AccessControlException Permission denied: user=hive, access=WRITE, inode="/"

说明hive用户没有写HDFS根目录(/)的权限。

2.解决办法

# 列出hdfs根目录的内容并查看权限
hdfs dfs -ls /

在这里插入图片描述

hdfs dfs -chmod 755 /
hdfs dfs -chown hive:supergroup /

再执行如下命令:

hdfs dfs -ls /

在这里插入图片描述

3.重新运行你的Python代码就成功了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2112603.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

WebGL系列教程一(开篇)

目录 1 前言2 推荐的书籍和网站3 WebGL简介4 本教程包含的主要内容预览4.1 顶点着色器4.2 片元着色器4.3 绘制点线面4.4 绘制三角形和四边形4.5 缓冲区4.6 旋转、平移、缩放4.7 动画4.8 颜色和纹理4.9 GLSL语法4.10 模型变换、视图变换、投影变换4.11 光照4.12 层次模型4.13 鼠…

【MySQL】MySQL常用的数据类型——表的操作

前言&#xff1a; &#x1f31f;&#x1f31f;本期讲解关于MySQL常用数据类型&#xff0c;表的简单使用&#xff0c;希望能帮到屏幕前的你。 &#x1f308;上期博客在这里&#xff1a;http://t.csdnimg.cn/wwaqe &#x1f308;感兴趣的小伙伴看一看小编主页&#xff1a;GGBondl…

传统CV算法——特征匹配算法

Brute-Force蛮力匹配 Brute-Force蛮力匹配是一种简单直接的模式识别方法&#xff0c;经常用于计算机视觉和数字图像处理领域中的特征匹配。该方法通过逐一比较目标图像中的所有特征点与源图像中的特征点来寻找最佳匹配。这种方法的主要步骤包括&#xff1a; 特征提取&#xff…

JAVA开源项目 图书个性化推荐系统 计算机毕业设计

本文项目编号 T 015 &#xff0c;文末自助获取源码 \color{red}{T015&#xff0c;文末自助获取源码} T015&#xff0c;文末自助获取源码 目录 一、系统介绍1.1 业务分析1.2 用例设计1.3 时序设计 二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究…

jmeter之循环控制器使用

一、循环控制器介绍及使用 循环控制器作用&#xff1a; 通过设置循环次数&#xff0c;来实现循环发送请求 位置&#xff1a;测试计划------>线程组(右键添加)------>逻辑控制器------>循环控制器 如图&#xff1a; 参数介绍&#xff1a; 循环次数&#xff1a;5 …

C语言11--特殊函数

静态函数 背景知识&#xff1a;普通函数都是跨文件可见的&#xff0c;即在文件 a.c 中定义的函数可以在 b.c 中使用。静态函数&#xff1a;只能在定义的文件内可见的函数&#xff0c;称为静态函数。 因此静态函数一般会被写在头文件中方便任何需要调用的文件直接包含即可作用&…

JavaScript 循环分支语句-dowhile循环

do/while 循环是 while 循环的变体。该循环会在检查条件是否为真之前执行一次代码块&#xff0c;然后如果条件为真的话&#xff0c;就会重复这个循环。 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta htt…

Ansys Zemax | 什么是Sobol取样?

附件下载 联系工作人员获取附件 本文主要介绍了&#xff1a; 什么是Sobol取样&#xff1f; 和随机光线产生方法相比&#xff0c;Sobol取样有什么优点&#xff1f; Sobol取样有什么限制&#xff1f; 随机取样和Sobol取样模式 一个光源会在位置空间以及角度空间随机产生光…

前端常用工具网站分享:MemFire Cloud,懒人开发者的福音

你是否曾梦想过&#xff0c;有那么一款工具&#xff0c;能够让你像变魔术一样快速搭建起一个应用&#xff0c;而无需深陷复杂的后端搭建和接口开发的泥潭&#xff1f;今天&#xff0c;我要为你介绍的&#xff0c;就是这样一个神奇的存在——MemFire Cloud&#xff0c;一款专为懒…

1.C_数据结构_基本知识

相关名词 数据是什么&#xff1a; 数据即信息的载体&#xff0c;是能够输入到计算机中并且能够计算机识别、存储、处理的符号总称。这里的数据不一定是一个int型&#xff0c;也可能是一个语音、一个字符串或者其他的一些打包的内容。 数据元素是什么&#xff1a; 数据元素(…

Danbooru风格图片分享平台szurubooru

什么是 Danbooru &#xff1f; Danbooru 是一种流行的图片分享网站&#xff0c;以其独特的图片标签系统和搜索功能而闻名。"Danbooru风格"通常指的是模仿 Danbooru 网站的图片论坛或图片分享平台所具有的特定特征&#xff0c;如&#xff1a; 标签系统&#xff1a;用户…

代码随想录刷题day24丨93.复原IP地址 ,78.子集 , 90.子集II

代码随想录刷题day24丨93.复原IP地址 &#xff0c;78.子集 &#xff0c; 90.子集II 1.题目 1.1复原IP地址 题目链接&#xff1a;93. 复原 IP 地址 - 力扣&#xff08;LeetCode&#xff09; 视频讲解&#xff1a;回溯算法如何分割字符串并判断是合法IP&#xff1f;| LeetCod…

2024年高教杯国赛(B题)数学建模竞赛解题思路|完整代码论文集合

我是Tina表姐&#xff0c;毕业于中国人民大学&#xff0c;对数学建模的热爱让我在这一领域深耕多年。我的建模思路已经帮助了百余位学习者和参赛者在数学建模的道路上取得了显著的进步和成就。现在&#xff0c;我将这份宝贵的经验和知识凝练成一份全面的解题思路与代码论文集合…

【2024高教社杯国赛A题】数学建模国赛建模过程+完整代码论文全解全析

你是否在寻找数学建模比赛的突破点&#xff1f;数学建模进阶思路&#xff01; 作为经验丰富的数学建模团队&#xff0c;我们将为你带来2024国赛数学建模竞赛&#xff08;A题&#xff09;的全面解析。这个解决方案包不仅包括完整的代码实现&#xff0c;还有详尽的建模过程和解析…

WebAPI(二)、DOM事件监听、事件对象event、事件流、事件委托、页面加载与滚动事件、页面尺寸事件

文章目录 一、 DOM事件1. 事件监听2. 事件类型(1)、鼠标事件(2)、焦点事件(3)、键盘事件(4)、文本事件 3. 事件对象(1)、获取事件对象(2)、事件对象常用属性 4. 环境对象 this5. 回调函数 二、 DOM事件进阶1. 事件流(1)、 捕获阶段(2)、 冒泡阶段(3)、 阻止冒泡(4) 、阻止元素默…

Optuna发布 4.0 重大更新:多目标TPESampler自动化超参数优化速度提升显著

Optuna这个备受欢迎的超参数优化框架在近期发布了其第四个主要版本。自2018年首次亮相以来&#xff0c;Optuna不断发展&#xff0c;现已成为机器学习领域的重要工具。其用户社区持续壮大&#xff0c;目前已达到以下里程碑&#xff1a; 10,000 GitHub星标每月300万 下载量16,00…

静心是良性循环

我发现一个挺有意思的事&#xff1a; 花时间修炼自己的心&#xff0c;让自己静心&#xff0c;就愿意多花时间修炼&#xff0c;会更加静心&#xff0c;这样就良性循环了。难的是刚开始&#xff0c;心不静&#xff0c;没时间修炼&#xff0c;心静不下来&#xff0c;更没时间修炼&…

分类中的语义一致性约束:助力模型优化

前言 这里介绍一篇笔者在去年ACL上发表的一篇文章&#xff0c;使用了空间语义约束来提高多模态分类的效果&#xff0c;类似的思路笔者也在视频描述等方向进行了尝试&#xff0c;也都取得了不错的效果。这种建模时对特征进行有意义的划分和约束对模型还是很有帮助的&#xff0c;…

基于人工智能的文本摘要生成系统

目录 引言项目背景环境准备 硬件要求软件安装与配置系统设计 系统架构关键技术代码示例 数据预处理模型训练模型预测应用场景结论 1. 引言 文本摘要生成是自然语言处理&#xff08;NLP&#xff09;中的一个重要任务&#xff0c;它旨在从长文本中提取出核心内容&#xff0c;生…

【学习笔记】SSL证书安全机制之证书验证

前言&#xff1a;每当Client从Server收到一张证书&#xff0c;有2件事Client需要去验证&#xff1a; 证书是否有效&#xff1f; 证书只是文件中的文本Client如何知道内容能够信任&#xff1f;Server是否是证书真正的拥有者&#xff1f; 证书可以公开获取Client如何知道Server是…