大数据-hive

简介

hive是基于Hadoop的一个数据仓库工具,用来进行数据提取、转化、加载,这是一种可以存储、查询和分析存储在Hadoop中的大规模数据的机制。hive数据仓库工具能将结构化的数据文件映射为一张数据库表,并提供SQL查询功能,能将SQL语句转变成MapReduce任务来执行。Hive的优点是学习成本低,可以通过类似SQL语句实现快速MapReduce统计,使MapReduce变得更加简单,而不必开发专门的MapReduce应用程序。hive十分适合对数据仓库进行统计分析。

hive是在hadoop为基础的一个存储和计算的一款软件,他利用hadoop的hdfs分布式文件系统存储数据,然后利用hadoop的MapReduce计算数据。

hive能将hadoop中结构化的数据文件映射(元数据)为一张数据库表,然后用户只要编写hive sql,hive专注于帮我们将sql转变成MapReduce程序执行从而实现数据的分析,从而将执行结果返回给用户。如果没有hive,我们要分析hadoop中的数据,只能自己编写map和Reduce程序,然后打包,在上传jar包执行。

安装

HIve安装配置(超详细)_hive安装与配置详解_W_chuanqi的博客-CSDN博客

安装前准备

由于Apache Hive是一款基于Hadoop的数据仓库软件,通常部署运行在Linux系统之上。因此不管使用何种方式配置Hive Metastore(可以先理解为就是hive服务),必须要先保证服务器的基础环境正常,Hadoop集群健康可用

服务器基础环境

集群时间同步、防火墙关闭、主机Host映射、免密登录、JDK安装

hadoop集群

启动Hive之前必须先启动Hadoop集群。特别要注意,需等待HDFS 安全模式关闭之后再启动运行Hive

Hive不是分布式安装运行的软件,Hive只要安装在一台服务器上即可。其分布式的特性主要借由Hadoop完成。包括分布式存储、分布式计算。

Hadoop与Hive整合

因为Hive需要把数据存储在HDFS上,并且通过MapReduce作为执行引擎处理数据;

因此需要在Hadoop中添加相关配置属性,以满足Hive可以在Hadoop上运行。

修改Hadoop中core-site.xml,并且Hadoop集群同步配置文件,重启生效。

<property><name>hadoop.proxyuser.atguigu.groups</name><value>*</value>
</property><!--指定了允许代理用户"atguigu"代理任何用户(users),同样,*表示所有用户都被允许-->
<property><name>hadoop.proxyuser.atguigu.users</name><value>*</value>
</property>

这段Hadoop配置是为了配置代理用户(proxy user)的权限。代理用户是指一个用户被授权代表其他用户(这边应该是代理hive)执行某些操作,通常是在Hadoop集群中执行特定的任务或访问特定的资源。

在这里,配置了两个属性来指定代理用户"atguigu"的权限:

安装mysql

项目部署Linux步骤-CSDN博客

metastore服务三种安装模式

metastore服务配置有3种模式:内嵌模式本地模式远程模式。区分3种配置方式的关键是弄清楚两个问题:

  1. Metastore服务是否需要单独配置、单独启动?
  2. Metadata是存储在内置的derby中,还是第三方RDBMS,比如Mysql。

企业推荐模式--远程模式部署。

开始安装

# 上传解压安装包
cd /export/server/
tar zxvf apache-hive-3.1.2-bin.tar.gz
mv apache-hive-3.1.2-bin hive#解决hadoop、hive之间guava版本差异
cd /export/server/hive
rm -rf lib/guava-19.0.jar
cp /export/server/hadoop-3.1.4/share/hadoop/common/lib/guava-27.0-jre.jar ./lib/#添加mysql jdbc驱动到hive安装包lib/文件下
mysql-connector-java-5.1.32.jar#修改hive环境变量文件 添加Hadoop_HOME
cd /export/server/hive/conf/
mv hive-env.sh.template hive-env.sh
vim hive-env.sh
export HADOOP_HOME=/export/server/hadoop-3.1.4
export HIVE_CONF_DIR=/export/server/hive/conf
export HIVE_AUX_JARS_PATH=/export/server/hive/lib#新增hive-site.xml 配置mysql等相关信息
vim hive-site.xml#添加hive的环境变量
sudo vim /etc/profile.d/my_env.sh
#HIVE_HOME
export HIVE_HOME=/opt/module/hive
export PATH=$PATH:$HIVE_HOME/bin
source /etc/profile.d/my_env.sh#初始化metadata
cd /export/server/hive
bin/schematool -initSchema -dbType mysql -verbos
#初始化成功会在mysql中创建74张表

hive-site.xml

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration><!--连接mysql的url--><property><name>javax.jdo.option.ConnectionURL</name><value>jdbc:mysql://hadoop102:3306/metastore?useSSL=false&amp;useUnicode=true&amp;characterEncoding=UTF-8</value></property><!--连接mysql的驱动--><property><name>javax.jdo.option.ConnectionDriverName</name><value>com.mysql.jdbc.Driver</value></property><!--连接mysql的用户名--><property><name>javax.jdo.option.ConnectionUserName</name><value>root</value></property><!--连接mysql的密码--><property><name>javax.jdo.option.ConnectionPassword</name><value>123456</value></property><!--关闭元数据版本的验证--><property><name>hive.metastore.schema.verification</name><value>false</value></property><!--H2S运行绑定host--><property><name>hive.server2.thrift.bind.host</name><value>hadoop102</value></property><!--远程模式部署metastore服务地址--><property><name>hive.metastore.uris</name><value>thrift://hadoop102:9083</value></property><!--关闭元数据存储授权--><property><name>hive.metastore.event.db.notification.api.auth</name><value>false</value></property></configuration>

启动hive metastore服务

远程模式下,必须首先启动Hive metastore服务才可以使用hive

#前台启动  关闭ctrl+c
/export/server/hive/bin/hive --service metastore#后台启动 进程挂起  关闭使用jps + kill
#输入命令回车执行 再次回车 进程将挂起后台
nohup /export/server/hive/bin/hive --service metastore &#前台启动开启debug日志
/export/server/hive/bin/hive --service metastore --hiveconf hive.root.logger=DEBUG,console

元数据库乱码

Hive元数据库的字符集默认为Latin1,由于其不支持中文字符,故若建表语句中包含中文注释,会出现乱码现象。如需解决乱码问题,须做以下修改。

修改Hive元数据库中存储注释的字段的字符集为utf-8

(1)字段注释

mysql> alter table COLUMNS_V2 modify column COMMENT varchar(256) character set utf8;

(2)表注释

mysql> alter table TABLE_PARAMS modify column PARAM_VALUE mediumtext character set utf8;

客户端连接

hive经过发展,推出了第二代客户端beeline,但是beeline客户端不是直接访问metastore服务的,而是需要单独启动hiveserver2服务

在hive运行的服务器上,首先启动metastore服务然后启动hiveserver2服务

#先启动metastore服务 然后启动hiveserver2服务
nohup /export/server/hive/bin/hive --service metastore &
nohup /export/server/hive/bin/hive --service hiveserver2 &

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

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

相关文章

C语言练习题

C语言练习题 文章目录 C语言练习题题目一题目二题目三题目四题目五题目六题目八 题目一 #include <stdio.h> //VS2022,默认对齐数为8字节 union Un {short s[7];int n; };int main() {printf("%zd", sizeof(union Un));return 0; }代码运行结果:> 16 sizeo…

新手村之SQL——增删改查条件查询

1.查询不同行——DISTINCT SELECT DISTINCT column_name FROM table_nameDISTINCT 关键字需位于列名之前。 2.在指定列中插入数据——INSERT INSERT INTO courses (name, student_count, created_at, teacher_id) VALUES (Flash Sale, 100, 2018-01-01, 5);3.更新数据——UPD…

用Python来解一元二次方程

1 问题 如何利用python 来解一元二次方程组。 2 方法 解一元二次方程是高中数学中的重要内容&#xff0c;也是数学中的基础知识之一。在Python语言中&#xff0c;我们可以使用数学库中的函数来解一元二次方程。一元二次方程的一般形式为&#xff1a;axbxc0&#xff0c;其中a、b…

基于Springboot + vue的汽车资讯网站

qq&#xff08;2829419543&#xff09;获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;springboot 前端&#xff1a;采用vue技术开发 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xf…

基于springboot实现的垃圾分类管理系统

一、系统架构 前端&#xff1a;html | layer | jquery | css 后端&#xff1a;springboot | mybatis 环境&#xff1a;jdk1.8 | mysql | maven 二、 代码及数据库 三、功能介绍 01. 登录页 02. 系统设置-用户管理 03. 系统设置-页面管理 04. 系统设置-角色管…

【Openstack Train安装】一、虚拟机创建

Openstack是一个云平台管理的项目&#xff0c;它不是一个软件。这个项目由几个主要的组件组合起来完成一些具体的工作。Openstack是一个旨在为公共及私有云的建设与管理提供软件的开源项目。它的社区拥有超过130家企业及1350位开发者&#xff0c;这些机构与个人将 Openstack作为…

[Java] 模拟Jdk 以及 CGLib 代理原理

文章目录 JDKarthas 反编译jdk代理对象arthas 反编译的结果是&#xff1a; CGlibmethodProxy 不经过反射调用方法的原理MethodProxy原理模拟 结合目标对象使用模拟结合 代理对象使用 JDK Jdk代理的最简单模拟&#xff0c; 由前文可知 JDK动态代理需要实现接口&#xff0c;所以…

★543. 二叉树的直径

543. 二叉树的直径 简单题&#xff0c;确实不难。 相当于就是求节点的深度。左孩子的最大深度 右孩子的最大深度 1 根节点深度。 本题要求的就是路径数&#xff0c;这里的路径数 节点数 - 1&#xff0c;然后想一下&#xff0c;对于一个节点来说&#xff0c;以他为根左右两…

数据结构与算法设计分析——NP完全理论

目录 一、P类问题与NP类问题的定义二、常见的NP类问题&#xff08;一&#xff09;旅行商问题&#xff08;TSP&#xff09;&#xff08;二&#xff09;哈密尔顿回路问题&#xff08;三&#xff09;判断回路问题&#xff08;四&#xff09;图的着色问题&#xff08;五&#xff09…

使用AOS实现网页动画效果

在现代Web开发中&#xff0c;动画效果是提升用户体验和页面交互性的重要因素之一。而AOS&#xff08;Animate On Scroll&#xff09;作为一个强大的动画库&#xff0c;可以帮助我们轻松地实现网页元素的滚动动画效果。 什么是AOS&#xff1f; AOS是一个基于CSS3和JavaScript的…

Transformer

目录 Encoder Add&Norm:&#xff08;LayerNorm&#xff09;Transformer中的归一化(五)&#xff1a;Layer Norm的原理和实现 & 为什么Transformer要用LayerNorm - 知乎 (zhihu.com) LayerNorm怎么做的&#xff1f; Feed Forward: FeedForward代码&#xff1a; 公式…

Java Stream流对多个字段动态指定字段排序

Java 8 的 Stream 使用了函数式编程模式,它可以被用来对集合或数组进行链状流式的排序就需要搬出Stream sort方法进行排序,重写其中的Comparator。 本文重点介绍使用Java Stream流排序器Comparator对List集合进行排序的技巧,包括复杂实体对象多字段升降序排序方法。 1为什么…

学习TypeScrip5(函数扩展)

函数的类型 注意&#xff0c;参数不能多传&#xff0c;也不能少传 必须按照约定的类型来 const fn (name: string, age:number): string > {return name age } fn(张三,18) 函数的可选参数? 通过?表示该参数为可选参数 const fn (name: string, age?:number): stri…

Android 12 及以上授权精确位置和模糊位置

请求位置信息权限 为了保护用户隐私&#xff0c;使用位置信息服务的应用必须请求位置权限。 请求位置权限时&#xff0c;请遵循与请求任何其他运行时权限相同的最佳做法。请求位置权限时的一个重要区别在于&#xff0c;系统中包含与位置相关的多项权限。具体请求哪项权限以及…

栈和队列的OJ题——14.用栈实现队列

14.用栈实现队列 232. 用栈实现队列 - 力扣&#xff08;LeetCode&#xff09; /* 解题思路&#xff1a; 此题可以用两个栈实现&#xff0c;一个栈进行入队操作&#xff0c;另一个栈进行出队操作 出队操作&#xff1a; 当出队的栈不为空是&#xff0c;直接进行出栈操作&#xff…

算法通关村第七关—迭代实现二叉树的遍历(黄金)

迭代实现二叉树的遍历 迭代法实现前序遍历 前序遍历是中左右&#xff0c;如果还有左子树就一直向下找。完了之后再返回从最底层逐步向上向右找。不难写出如下代码&#xff1a;&#xff08;注意代码中&#xff0c;空节点不入栈&#xff09; public List<Integer>preorde…

VSCode 中将头文件和头文件函数分离,编译主函数跳出 undefined reference to 的问题解决

VSCode 编写 C &#xff08;.h&#xff0c;.cpp 文件分离&#xff09;代码&#xff0c;编写完成后&#xff0c;编译遇到了编译错误 undefined reference to xxx。 开始还以为使用了 -stdc20 而不能使用 #include “xxx.h" 方式头文件&#xff0c;但仔细一想虽然引入了 im…

前端这个岗位对于整个项目的意义

在软件开发这个领域&#xff0c;开发一款软件就意味着一个项目的诞生&#xff0c;那么&#xff0c;一个项目诞生它包括很多人的共同协作和努力去实现&#xff0c;那么大概包括以下这些步骤&#xff1a; 1.需求分析&#xff1a;这是软件开发的第一步&#xff0c;商务人员和产品…

基于YOLOv7算法的的高精度实时通用目标检测识别系统(PyTorch+Pyside6+YOLOv7)

摘要&#xff1a;基于YOLOv7算法的高精度实时检测识别系统可用于日常生活中检测与定位多种目标&#xff0c;此系统可完成对输入图片、视频、文件夹以及摄像头方式的目标检测与识别&#xff0c;同时本系统还支持检测结果可视化与导出。本系统采用YOLOv7目标检测算法来训练数据集…

OpenHarmony 应用(HarmonyOS 原生应用)- 写一个 Hello World 并在华为手机上跑起来

OpenHarmony 简介 ArkUI 开发框架 OpenHarmony 提供了一套UI开发框架&#xff0c;即方舟开发框架&#xff08;ArkUI 框架&#xff09;。 两种开发范式 支持两种开发范式&#xff0c;分别是基于ArkTS的声明式开发范式&#xff08;简称“声明式开发范式”&#xff09;和兼容J…