deepin 安装 hive

ops/2024/12/15 20:16:19/

hive_0">deepin 安装 hive

  1. 安装 hadoop
  2. 安装 mysql
  3. 安装 hive

准备

HDFS配置

vim $HADOOP_HOME/etc/hadoop/core-site.xml 
  <!--配置所有节点的lhz用户都可作为代理用户--><property><name>hadoop.proxyuser.lhz.hosts</name><value>*</value></property><!--配置lhz用户能够代理的用户组为任意组--><property><name>hadoop.proxyuser.lhz.groups</name><value>*</value></property><!--配置lhz用户能够代理的用户为任意用户--><property><name>hadoop.proxyuser.lhz.users</name><value>*</value></property>

启动Hadoop

# 启动hadoop
start-hadoop.sh
# 检查hadoop进程
jps
# 检查各端口
netstat -aplnt | grep java

安装MySQL

建立MySQL用户和用户组

sudo groupadd mysql
sudo useradd -r -g mysql -s /bin/false mysql

下载MySQL安装包

wget https://cdn.mysql.com//Downloads/MySQL-9.1/mysql-9.1.0-linux-glibc2.28-x86_64.tar.xz

解压缩MySQL安装包

sudo tar -xvf mysql-9.1.0-linux-glibc2.28-x86_64.tar.xz

移动安装包到指定目录

sudo mv mysql-9.1.0-linux-glibc2.28-x86_64 /usr/local/mysql

创建链接符号目录

sudo mkdir /usr/local/mysql/mysql-files

修改目录所属

sudo chown -R mysql:mysql /usr/local/mysql

链接符号目录授权

sudo chmod 750 /usr/local/mysql/mysql-files

配置环境变量

临时环境变量

export PATH=$PATH:/usr/local/mysql/bin

永久环境变量

sudo vim /etc/profile

末尾追加以下内容

export PATH=$PATH:/usr/local/mysql/bin

初始化数据库

sudo /usr/local/mysql/bin/mysqld --initialize --user=mysql

注意:MySQL初始密码会打印在控制台上

例如:[Note] [MY-010454] [Server] A temporary password is generated for root@localhost: .mT/UTw%<5&=

启动MySQL

sudo /usr/local/mysql/bin/mysqld_safe --user=mysql &

修改MySQL root用户密码和授权可访问主机

打开新的控制台执行以下命令

sudo /usr/local/mysql/bin/mysql -uroot -p

根据提示输入之前打印在控制台上的MySQL初始密码
注意:第一次输入可能是操作系统用户密码

修改 root 用户密码为 lihaozhe

alter user 'root'@'localhost' IDENTIFIED BY 'lihaozhe';
flush privileges;

授权任意主机皆可访问

update mysql.user set host = '%' where user = 'root';
flush privileges;

退出MySQL

exit;

设置MySQL服务

在新的控制台执行以下命令

sudo cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql.server

控制 MySQL 可以使用 以下命令

sudo systemctl start mysql

sudo systemctl stop mysql

sudo systemctl restart mysql

sudo systemctl reloead mysql

或者

sudo service mysql.server start

sudo service mysql.server stop

sudo service mysql.server restart

sudo service mysql.server reloead

测试

重启操作系统

手动开启MySQL服务
sudo systemctl start mysql 

或者

sudo service mysql.server start
登录MySQL

使用自定义密码登录

mysql -uroot -p

hive_214">安装hive

# 将软件上传到 /home/lhz/opt 目录
wget https://dlcdn.apache.org/hive/hive-4.0.1/apache-hive-4.0.1-bin.tar.gz
# 解压hive
tar -zxvf apache-hive-4.0.1-bin.tar.gz 
# 目录改名
mv apache-hive-4.0.1-bin hive-4
# 进入配置文件目录
cd /home/lhz/opt/hive-4/conf
# 编辑环境配置文件
vim hive-env.sh
# 编辑配置文件
vim hive-site.xml

hiveenvsh_231">hive-env.sh

hadoop 安装路径 export HADOOP_HOME=/home/lhz/opt/hadoop-3/

hive 配置文件路径 export HIVE_CONF_DIR=/home/lhz/opt/hive-4/conf/****

export HADOOP_HOME=/home/lhz/opt/hadoop-3/
export HIVE_CONF_DIR=/home/lhz/opt/hive-4/conf/

hivesitexml_242">hive-site.xml

需要修改的位置提炼如下:

<configuration><!-- 记录HIve中的元数据信息  记录在mysql中 --><property><name>javax.jdo.option.ConnectionURL</name><value>jdbc:mysql://lihaozhe:3306/hive?allowPublicKeyRetrieval=true&amp;useUnicode=true&amp;createDatabaseIfNotExist=true&amp;characterEncoding=UTF8&amp;useSSL=false&amp;useServerPrepStmts=false&amp;rewriteBatchedStatements=true&amp;cachePrepStmts=true&amp;allowMultiQueries=true&amp;serverTimeZone=Asia/Shanghai&amp;sslMode=DISABLED</value></property><!-- jdbc mysql驱动 --><property><name>javax.jdo.option.ConnectionDriverName</name><value>com.mysql.cj.jdbc.Driver</value></property><!-- mysql的用户名和密码 --><property><name>javax.jdo.option.ConnectionUserName</name><value>root</value></property><property><name>javax.jdo.option.ConnectionPassword</name><value>lihaozhe</value></property><property><name>hive.metastore.warehouse.dir</name><value>/user/hive/warehouse</value></property><property><name>hive.exec.scratchdir</name><value>/user/hive/tmp</value></property><property><name>hive.exec.local.scratchdir</name><value>/home/lhz/data/hive/local</value><description>Local scratch space for Hive jobs</description></property><property><name>hive.downloaded.resources.dir</name><value>/home/lhz/data/hive/resources</value><description>Temporary local directory for added resources in the remote file system.</description></property><!-- 日志目录 --><property><name>hive.querylog.location</name><value>/user/hive/log</value></property><!-- 设置metastore的节点信息 --><property><name>hive.metastore.uris</name><!--<value>thrift://lihaozhe03:9083</value>--><value/></property><!-- 客户端远程连接的端口 --><property> <name>hive.server2.thrift.port</name> <value>10000</value></property><property> <name>hive.server2.thrift.bind.host</name> <value>0.0.0.0</value></property><property><name>hive.server2.webui.host</name><value>0.0.0.0</value></property><!-- hive服务的页面的端口 --><property><name>hive.server2.webui.port</name><value>10002</value></property><property> <name>hive.server2.long.polling.timeout</name> <value>5000ms</value></property><property><name>hive.server2.enable.doAs</name><value>true</value></property><!--<property><name>datanucleus.autoCreateSchema</name><value>false</value></property><property><name>datanucleus.fixedDatastore</name><value>true</value></property>--><property><name>hive.execution.engine</name><value>mr</value></property><property><name>hive.metastore.schema.verification</name><value>false</value></property><property><name>hive.server2.logging.operation.log.location</name><value>/home/lhz/data/hive/tmp/operation_logs</value></property>
</configuration>

注意:上面配置文件中的路径在 vi 编辑器下 全局替换 本案例已经替换过了无需执行

:%s@\${system:java.io.tmpdir}@/tmp/hive-log@g

不要使用图形化 不然每次保存后3215行都会有个 &#8 特殊字符 如果产生删除即可 具体报错信息 后面有单独的描述

配置环境变量

vim /home/lhz/.bashrc
export HIVE_HOME=/home/lhz/opt/hive-4
export HCATALOG_HOME=/home/lhz/opt/hive-4/hcatalogexport PATH=$PATH:$HIVE_HOME/bin:$HCATALOG_HOME/bin:$HCATALOG_HOME/sbin

完整

export JAVA_HOME=/home/lhz/opt/jdk-8
export M2_HOME=/home/lhz/opt/mavenexport HDFS_NAMENODE_USER=lhz
export HDFS_SECONDARYNAMENODE_USER=lhz
export HDFS_DATANODE_USER=lhz
export HDFS_ZKFC_USER=lhz
export HDFS_JOURNALNODE_USER=lhz
export HADOOP_SHELL_EXECNAME=lhzexport YARN_RESOURCEMANAGER_USER=lhz
export YARN_NODEMANAGER_USER=lhzexport HADOOP_HOME=/home/lhz/opt/hadoop-3
export HADOOP_INSTALL=$HADOOP_HOME
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export JAVA_LIBRARY_PATH=$HADOOP_HOME/lib/nativeexport HIVE_HOME=/home/lhz/opt/hive-4
export HCATALOG_HOME=/home/lhz/opt/hive-4/hcatalogexport SCALA_HOME=/home/lhz/opt/scala-2export SPARK_HOME=/home/lhz/opt/spark-3export PATH=$PATH:$JAVA_HOME/bin:$M2_HOME/bin:$SCALA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$SPARK_HOME/bin:$SPARK_HOME/sbin:$HIVE_HOME/bin:$HCATALOG_HOME/bin:$HCATALOG_HOME/sbin

hive_lib_416">上传 MySQL 连接驱动 jar 包到 hive 安装目录的lib目录下:

$HIVE_HOME/lib

删除原有的 protobuf-java-3.24.4.jar 文件

上传 jar 包有两个 分别为:

  • mysql-connector-j-9.1.0.jar
  • protobuf-java-4.28.3.jar
rm -f $HIVE_HOME/lib/protobuf-java-3.24.4.jar

guava版本冲突

删除 hive/lib目录中的 guava-22.0.jar

拷贝hadoop/share/hadoop/common/lib目录中的 guava-27.0-jre.jar 到 hive/lib 目录

rm -f $HIVE_HOME/lib/guava-22.0.jar
cp -v $HADOOP_HOME/share/hadoop/common/lib/guava-27.0-jre.jar $HIVE_HOME/lib

hive_446">初始化hive的元数据库

注意初始初始元数据库之前 保证 hadoop 和 mysql 正常启动

推荐现在mysql 手动创建 hive 元数据库

create database hive default character set utf8;

Linux控制台执行以下命令初始化 hive 元数据库

schematool -initSchema -dbType  mysql -verbose

中文乱码

mysql -uroot -p
use hive;
alter table COLUMNS_V2 modify column COMMENT varchar(256) character set utf8;
alter table TABLE_PARAMS modify column PARAM_VALUE varchar(4000) character set utf8;
alter table PARTITION_PARAMS modify column PARAM_VALUE varchar(4000) character set utf8;
alter table PARTITION_KEYS modify column PKEY_COMMENT varchar(4000) character set utf8;
alter table INDEX_PARAMS modify column PARAM_VALUE varchar(4000) character set utf8;
flush privileges;

远程模式

hive --service metastore
hive --service hiveserver2  
# hive --service hiveserver2 与 hiveserver2 start 作用相同# 启动服务端 后台运行
hive --service metastore &
hive --service hiveserver2 &# 启动服务端 后台运行
nohup hive --service metastore > /dev/null 2>&1 &
nohup hive --service hiveserver2 > /dev/null 2>&1 &

bash 中 0、1、2 三个数字分别代表 STDIN_FILENO 、 STDOUT_FILENO 、STDERR_FILENO ,
即标准输入(一般是键盘),
标准输出(一般是显示屏,准确的说是用户终端控制台),
标准错误(输出错信息输出)。

数字含义
0标准输入(一般是键盘)
1标准输出(一般是显示屏,准确的说是用户终端控制台)
2标准错误(输出错信息输出)

/dev/null看作"黑洞". 它等价于一个只写文件.
所有写入它的内容都会永远丢失.
而尝试从它那儿读取内容则什么也读不到

hive_512">启动hive脚本

start-hive.sh

nohup hive --service metastore > /dev/null 2>&1 &
nohup hive --service hiveserver2 > /dev/null 2>&1 &

为脚本添加可执行权限

chmod +x start-hive.sh

分发启动脚本

mv start-hive.sh /home/lhz/opt/hive-4/bin/

客户端连接

beeline 连接
beeline -u jdbc:hive2://lihaozhe:10000 -n root
beeline 连接参数
Option Description  
--autoCommit=[true/false] ---进入一个自动提交模式:beeline --autoCommit=true  
--autosave=[true/false]   ---进入一个自动保存模式:beeline --autosave=true  
--color=[true/false]    ---显示用到的颜色:beeline --color=true  
--delimiterForDSV= DELIMITER ---分隔值输出格式的分隔符。默认是“|”字符。  
--fastConnect=[true/false]  ---在连接时,跳过组建表等对象:beeline --fastConnect=false  
--force=[true/false]    ---是否强制运行脚本:beeline--force=true  
--headerInterval=ROWS   ---输出的表间隔格式,默认是100: beeline --headerInterval=50  
--help ---帮助  beeline --help  
--hiveconf property=value  ---设置属性值,以防被hive.conf.restricted.list重置:beeline --hiveconf prop1=value1   
--hivevar name=value   ---设置变量名:beeline --hivevar var1=value1  
--incremental=[true/false]  ---输出增量
--isolation=LEVEL  ---设置事务隔离级别:beeline --isolation=TRANSACTION_SERIALIZABLE  
--maxColumnWidth=MAXCOLWIDTH ---设置字符串列的最大宽度:beeline --maxColumnWidth=25  
--maxWidth=MAXWIDTH ---设置截断数据的最大宽度:beeline --maxWidth=150  
--nullemptystring=[true/false]  ---打印空字符串:beeline --nullemptystring=false  
--numberFormat=[pattern]     ---数字使用DecimalFormat:beeline --numberFormat="#,###,##0.00"  
--outputformat=[table/vertical/csv/tsv/dsv/csv2/tsv2] ---输出格式:beeline --outputformat=tsv   
--showHeader=[true/false]   ---显示查询结果的列名:beeline --showHeader=false  
--showNestedErrs=[true/false] ---显示嵌套错误:beeline --showNestedErrs=true  
--showWarnings=[true/false] ---显示警告:beeline --showWarnings=true  
--silent=[true/false]  ---静默方式执行,不显示执行过程信息:beeline --silent=true  
--truncateTable=[true/false] ---是否在客户端截断表的列     
--verbose=[true/false]  ---显示详细错误信息和调试信息:beeline --verbose=true  
-d <driver class>  ---使用一个驱动类:beeline -d driver_class  
-e <query>  ---使用一个查询语句:beeline -e "query_string"  
-f <file>  ---加载一个文件:beeline -f filepath  多个文件用-e file1 -e file2
-n <username>  ---加载一个用户名:beeline -n valid_user  
-p <password>  ---加载一个密码:beeline -p valid_password  
-u <database URL> ---加载一个JDBC连接字符串:beeline -u db_URL
hive__576">hive 连接
hive

启动客户端后连接

!connect jdbc:hive2://lihaozhe:10000 -n root

浏览器访问

http://lihaozhe:10002/

<a class=hiveserver2" />

hive__594">关闭 hive 脚本

编写 stop-hive.sh 脚本 kill 掉后台 RunJar 进程

#!/bin/bash  # 查找并杀死所有 RunJar 进程  
pids=$(ps -ef | grep RunJar | grep -v grep | awk '{print $2}')  # 检查是否有找到任何 PID
if [ -n "$pids" ]; then# 按行kill并输出for pid in $pids; doecho "Killing the following RunJar processes PID: $pid"kill -9 $piddone
elseecho "No RunJar processes found."
fi

脚本添加可执行权限

chmod +x stop-hive.sh

分发脚本

mv stop-hive.sh /home/lhz/opt/hive-4/bin/

体验

use default;
create table person (id int,phonenum bigint,salary dicimal,name string
);
show tables;
insert into person values (1001,13966668888,9999.99,"张三");
songsong,bingbing_lili,xiao song:18_xiaoxiao song:19
longlong,pingping_liuliu,xiao long:8_xiaoxiao long:9
drop table person;
create table person (name string,friends array<string>,childrens map<string,int>
)row format delimited fields terminated by ',' collection items terminated by '_' map keys terminated by ':' lines terminated by '\n';
load data local inpath  '/root/person.txt' into table person; 
drop table data;
create table data (name string, amount int
)row format delimited fields terminated by ',' lines terminated by '\n';load data local inpath  '/root/data.txt' into table data; 
select count(*) from data;
select count(*) from data group by name;
select name,max(t) from data group by name;
select name,max(t) from data group by name order by max(t) ;
# 本地
set mapreduce.framework.name=local;
set hive.exec.mode.local.auto=true;
# yarn
set mapreduce.framework.name=yarn;
set hive.exec.mode.local.auto=false;# 向量模式
set hive.vectorized.execution.enabled=true;
set hive.vectorized.execution.enabled=false;set mapreduce.framework.name=local;
set hive.exec.mode.local.auto=true;
set hive.vectorized.execution.enabled=true; 

t
)
row format delimited fields terminated by ‘,’
lines terminated by ‘\n’;
load data local inpath ‘/root/data.txt’ into table data;


```sql
select count(*) from data;
select count(*) from data group by name;
select name,max(t) from data group by name;
select name,max(t) from data group by name order by max(t) ;
# 本地
set mapreduce.framework.name=local;
set hive.exec.mode.local.auto=true;
# yarn
set mapreduce.framework.name=yarn;
set hive.exec.mode.local.auto=false;# 向量模式
set hive.vectorized.execution.enabled=true;
set hive.vectorized.execution.enabled=false;set mapreduce.framework.name=local;
set hive.exec.mode.local.auto=true;
set hive.vectorized.execution.enabled=true; 

http://www.ppmy.cn/ops/142194.html

相关文章

梳理你的思路(从OOP到架构设计)_架构设计的UML图形思考03

目录 1、绘制UML基於类别图 &#xff1a;表达接口(Interface) 接口的表达 Astah操作 接口实现 类 <实现>接口的表达 接口的使用(调用接口的函数) 2、接口的表示 在C裡&#xff0c; 在Java里 1、绘制UML基於类别图 &#xff1a;表达接口(Interface) 接口的表达 …

webrtc学习----前端推流拉流,局域网socket版,一对多

提示&#xff1a;局域网socket版&#xff0c;一对多 文章目录 [TOC](文章目录) 前言一、教程二、webrtc工作流程三、推流端四、拉流五、socket服务六、效果七、备注总结 前言 ‌‌‌‌‌WebRTC&#xff08;Web Real-Time Communication&#xff09;‌是一种实时通讯技术&#x…

“AI数据生成系统:创造数据新动力

嘿&#xff0c;大家好&#xff01;今天咱们来聊聊一个特别火的话题——AI数据生成系统。这玩意儿&#xff0c;听起来可能有点技术范儿&#xff0c;但其实它就像是我们的创意工厂&#xff0c;能源源不断地产出新鲜、有用的数据。 首先&#xff0c;咱们得搞清楚&#xff0c;AI数据…

AI Alignment: A Comprehensive Survey---摘要、简介

题目 人工智能对齐&#xff1a;全面调查 摘要 人工智能对齐旨在使人工智能系统的行为符合人类的意图和价值观。随着人工智能系统的能力不断增强&#xff0c;错位的风险也在不断增加。为了提供对齐领域的全面和最新概述&#xff0c;在本调查中&#xff0c;我们深入研究了对齐的…

Linux系统操作03|chmod、vim

上文&#xff1a; Linux系统操作02|基本命令-CSDN博客 目录 六、chmod&#xff1a;给文件设置权限 1、字母法 2、数字法&#xff08;用的最多&#xff09; 七、vim&#xff1a;代码编写和文本编辑 1、启动和退出 1️⃣启动 2️⃣退出 2、vim基本操作 六、chmod&#x…

前端 websocket

一、定义和基本概念 WebSocket 是一种在单个 TCP 连接上进行全双工通信的协议。它使得客户端和服务器之间可以进行实时的、双向的数据传输。与传统的 HTTP 请求-响应模式不同&#xff0c;WebSocket 允许服务器主动向客户端推送数据&#xff0c;而不需要客户端先发起请求。这为…

【JavaWeb后端学习笔记】Redis常用命令以及Java客户端操作Redis

redis 1、redis安装与启动服务2、redis数据类型3、redis常用命令3.1 字符串String3.2 哈希Hash3.3 列表List3.4 集合Set&#xff08;无序&#xff09;3.5 有序集合zset3.6 通用命令 4、使用Java操作Redis4.1 环境准备4.2 Java操作字符串String4.3 Java操作哈希Hash4.4 Java操作…

【Linux】Ubuntu:安装系统后配置

hostname&#xff1a;更改主机名 打开终端。 使用hostnamectl命令更改主机名。 sudo hostnamectl set-hostname 新的主机名你可以使用hostnamectl 命令来验证更改是否成功&#xff1a; hostnamectlChrome&#xff1a;更换默认浏览器 以下是从 Ubuntu 中移除预装的 Snap 版 Fi…