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

简介

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

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

hive能将hadoop结构化的数据文件映射(元数据)为一张数据库表,然后用户只要编写hive sqlhive专注于帮我们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中coresite.xml,并且Hadoop集群同步配置文件重启生效

<property>
        <name&gt;hadoop.proxyuser.atguigu.groups</name&gt;
        <value&gt;*</value&gt;
</property&gt;

<!--指定了允许代理用户"atguigu"代理任何用户users),同样,*表示所有用户都被允许--&gt;
<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>
    <!--连接mysqlurl-->
    <property>
        <name>javax.jdo.option.ConnectionURL</name>
        <value>jdbc:mysql://hadoop102:3306/metastore?useSSL=false&amp;amp;useUnicode=true&amp;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 &amp;

#前台启动开启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 &amp;
nohup /export/server/hive/bin/hive --service hiveserver2 &amp;

原文地址:https://blog.csdn.net/weixin_52938172/article/details/134739465

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_35898.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注