大数据入门与实战-Hive

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
简介: 大数据入门与实战-Hive

1 Hive是什么


Hive是一个数据仓库基础工具在Hadoop中用来处理结构化数据。它架构在Hadoop之上,总归为大数据,并使得查询和分析方便。 最初,Hive是由Facebook开发,后来由Apache软件基金会开发,并作为进一步将它作为名义下Apache Hive为一个开源项目。它用在好多不同的公司。例如,亚马逊使用它在 Amazon Elastic MapReduce。


2 Hive不是


  • 一个关系数据库
  • 一个设计用于联机事务处理(OLTP)
  • 实时查询和行级更新的语言


3 Hive特点


它存储架构在一个数据库中并处理数据到HDFS。 它是专为OLAP设计。 它提供SQL类型语言查询叫HiveQL或HQL。 它是熟知,快速,可扩展和可扩展的。


4 Hive架构


下面的组件图描绘了Hive的结构:


38.png



39.png


5 Hive 工作原理


40.png



下表定义Hive和Hadoop框架的交互方式:

1   Execute Query Hive接口,如命令行或Web UI发送查询驱动程序(任何数据库驱动程序,如JDBC,ODBC等)来执行。

2   Get Plan 在驱动程序帮助下查询编译器,分析查询检查语法和查询计划或查询的要求。

3   Get Metadata 编译器发送元数据请求到Metastore(任何数据库)。

4   Send Metadata Metastore发送元数据,以编译器的响应。

5   Send Plan 编译器检查要求,并重新发送计划给驱动程序。到此为止,查询解析和编译完成。

6   Execute Plan 驱动程序发送的执行计划到执行引擎。

7   Execute Job 在内部,执行作业的过程是一个MapReduce工作。执行引擎发送作业给JobTracker,在名称节点并把它分配作业到TaskTracker,这是在数据节点。在这里,查询执行MapReduce工作。

7.1 Metadata Ops 与此同时,在执行时,执行引擎可以通过Metastore执行元数据操作。

8   Fetch Result 执行引擎接收来自数据节点的结果。

9   Send Results 执行引擎发送这些结果值给驱动程序。

10  Send Results 驱动程序将结果发送给Hive接口。



6 Hive的安装与配置


安装Hive之前,先安装hadoop,保证HDFS、YARN启动成功。默认情况下,Hive元数据保存在嵌入式数据库Derby中,只能允许一个会话连接,只适合简单的测试。为了支持多用户多会话,则需要一个独立的元数据库,我们使用 MySQL 作为元数据库。


6.1 安装MySQL


参考下面的三个教程:

安装mysql:https://www.jianshu.com/p/7cccdaa2d177

更改mysql密码:https://blog.csdn.net/lihao21/article/details/80692068

设置mysql开机自启动:https://www.cnblogs.com/yoyotl/p/5752437.html


1.1. 创建Hive元数据库


创建名称为hive的数据库,用于存储hive的元数据,如下图所示:

41.png


1.2. 用户授权


为root用户授权,使其能从外部IP访问mysql数据库,使用如下命令:

grant all privileges on . to 'root'@'%' identified by '123456';

使授权立即生效,使用如下命令:

flush privileges;


命令执行如下图所示:

42.png


1.3. 从windows环境连接mysql


使用windows环境下的mysql客户端工具Navicat for MySQL连接mysql:

43.png


6.2  安装Hive

1.1. 将下载的hive包拷贝到Linux环境中


将hive软件包拷贝到hadoop集群的某一台服务器上面,具体目录可根据情况设置。本教程中的大数据软件都安装在/opt目录下。如下图所示:


44.png


1.2. 解压hive软件包


使用如下命令解压hive软件包:tar –zxvf apache-hive-2.1.1-bin.tar.gz。


1.3. 配置Hive环境变量


在/etc/profile 或者~/.bashrc中配置hive环境变量:

export HIVE_HOME=hive****安装路径

export PATH=HIVE_HOME/bin:

配置后的profile文件如下图所示:


45.png


使环境变量生效:

source /etc/profile


1.4. Hive配置文件


进入hive解压目录的conf目录,运行如下命令,复制配置文件:

[root@bigdata02 conf]# cp hive-default.xml.template hive-site.xml

[root@bigdata02 conf]# cp hive-env.sh.template hive-env.sh


1.4.1. 修改hive-env.sh文件


修改hive-env.sh文件,增加两行,根据实际情况修改安装路径:

export HADOOP_HOME=hadoop****安装路径

export HIVE_CONF_DIR=hive****安装路径/conf


1.4.2. 修改hive-site.xml文件


修改配置文件$HIVE_HOME/conf/hive-site.xml。

找到配置项hive.metastore.warehouse.dir,

hive.metastore.warehouse.dir的默认值为/user/hive/warehouse,保持不变


1.4.3. 设置元数据数据库


更换存储元数据的数据库,需要配置以下参数值:

javax.jdo.option.ConnectionURL // 数据库URL

javax.jdo.option.ConnectionDriverName // JDBC 驱动名称

javax.jdo.option.ConnectionUserName // 数据库用户名

javax.jdo.option.ConnectionPassword // 数据库密码

下面是使用mysql来存储元数据的配置信息,可以通过搜索其中的name值,如javax.jdo.option.ConnectionURL,找到对应的配置项进行修改:


<configuration>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://bigdata02:3306/hive?createDatabaseIfNotExist=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>root</value>
<description>username to use against metastore database</description>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>123456</value>
<description>password to use against metastore database</description>
</property>
</configuration>


1.4.4. 创建tmp目录


在$HIVE_HOME目录下创建tmp目录:

46.png


1.4.4.1. 继续修改配置文件 hive-site.xml


把${system:java.io.tmpdir} 改成 /opt/hive211/tmp //****上步骤中创建的****tmp****目录


{user.name}


注意:将****hive-site.xml****中所有出现****


{system:user.name} ****的地方都进行相应的修改。如下图,是其中一个地方的修改,供参考:

47.png


hive.metastore.schema.verification设置成false(可选):如果初始化元数据库出现认证问题,可以设置此参数,再次初始化。


1.4.5. 在hdfs上创建目录


使用如下HDFS命令,创建相应目录:

hdfs dfs -mkdir /tmp   //hive的默认临时文件目录

hdfs dfs -mkdir -p /user/hive/warehouse //hive的warehouse默认目录

hadoop fs -chmod g+w /tmp //为tmp目录授权

hadoop fs -chmod g+w /user/hive/warehouse //为目录授权


1.4.6. 上传mysql驱动包


我们配置了hive的元数据库为mysql,hive连接mysql,需要mysql的jdbc驱动包 ,所以,需要将驱动包上传到$HIVE_HOME/lib 目录下


1.5. 初始化Hive元数据库


使用hive安装目录下bin目录中的schematool命令初始化元数据库:

schematool -dbType mysql -initSchema


48.png


看到如下提示,则初始化完成 :


49.png


1.6. 检测hive 是否安装成功


直接在命令行输入hive:

注意:此时hdfs和yarn必须是启动状态。


50.png


7 参考资料


Hive教程

https://cniao5.com/course/lessons/10185

相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps&nbsp;
相关文章
|
16天前
|
分布式计算 大数据 Apache
ClickHouse与大数据生态集成:Spark & Flink 实战
【10月更文挑战第26天】在当今这个数据爆炸的时代,能够高效地处理和分析海量数据成为了企业和组织提升竞争力的关键。作为一款高性能的列式数据库系统,ClickHouse 在大数据分析领域展现出了卓越的能力。然而,为了充分利用ClickHouse的优势,将其与现有的大数据处理框架(如Apache Spark和Apache Flink)进行集成变得尤为重要。本文将从我个人的角度出发,探讨如何通过这些技术的结合,实现对大规模数据的实时处理和分析。
48 2
ClickHouse与大数据生态集成:Spark & Flink 实战
|
7天前
|
并行计算 数据挖掘 大数据
Python数据分析实战:利用Pandas处理大数据集
Python数据分析实战:利用Pandas处理大数据集
|
1月前
|
消息中间件 存储 druid
大数据-156 Apache Druid 案例实战 Scala Kafka 订单统计
大数据-156 Apache Druid 案例实战 Scala Kafka 订单统计
40 3
|
25天前
|
Oracle 大数据 数据挖掘
企业内训|大数据产品运营实战培训-某电信运营商大数据产品研发中心
本课程是TsingtaoAI专为某电信运营商的大数据产品研发中心的产品支撑组设计,旨在深入探讨大数据在电信运营商领域的应用与运营策略。通过密集的培训,从数据的本质与价值出发,系统解析大数据工具和技术的最新进展,深入剖析行业内外的实践案例。课程涵盖如何理解和评估数据、如何有效运用大数据技术、以及如何在不同业务场景中实现数据的价值转化。
37 0
|
1月前
|
SQL 分布式计算 Java
大数据-96 Spark 集群 SparkSQL Scala编写SQL操作SparkSQL的数据源:JSON、CSV、JDBC、Hive
大数据-96 Spark 集群 SparkSQL Scala编写SQL操作SparkSQL的数据源:JSON、CSV、JDBC、Hive
34 0
|
3月前
|
数据采集 人工智能 安全
AI大数据处理与分析实战--体育问卷分析
本文是关于使用AI进行大数据处理与分析的实战案例,详细记录了对深圳市义务教育阶段学校“每天一节体育课”网络问卷的分析过程,包括数据概览、交互Prompt、代码处理、年级和学校维度的深入分析,以及通过AI工具辅助得出的分析结果和结论。
|
3月前
|
分布式计算 资源调度 Hadoop
Hadoop入门基础(五):Hadoop 常用 Shell 命令一网打尽,提升你的大数据技能!
Hadoop入门基础(五):Hadoop 常用 Shell 命令一网打尽,提升你的大数据技能!
|
3月前
|
大数据 API 数据处理
揭秘!Flink如何从默默无闻到大数据界的璀璨明星?起源、设计理念与实战秘籍大公开!
【8月更文挑战第24天】Apache Flink是一款源自Stratosphere项目的开源流处理框架,由柏林理工大学等机构于2010至2014年间开发,并于2014年捐赠给Apache软件基金会。Flink设计之初即聚焦于提供统一的数据处理模型,支持事件时间处理、精确一次状态一致性等特性,实现了流批一体化处理。其核心优势包括高吞吐量、低延迟及强大的容错机制。
61 1
|
3月前
|
分布式计算 大数据 分布式数据库
"揭秘HBase MapReduce高效数据处理秘诀:四步实战攻略,让你轻松玩转大数据分析!"
【8月更文挑战第17天】大数据时代,HBase以高性能、可扩展性成为关键的数据存储解决方案。结合MapReduce分布式计算框架,能高效处理HBase中的大规模数据。本文通过实例展示如何配置HBase集群、编写Map和Reduce函数,以及运行MapReduce作业来计算HBase某列的平均值。此过程不仅限于简单的统计分析,还可扩展至更复杂的数据处理任务,为企业提供强有力的大数据技术支持。
63 1
|
3月前
|
API C# Shell
WPF与Windows Shell完美融合:深入解析文件系统操作技巧——从基本文件管理到高级Shell功能调用,全面掌握WPF中的文件处理艺术
【8月更文挑战第31天】Windows Presentation Foundation (WPF) 是 .NET Framework 的关键组件,用于构建 Windows 桌面应用程序。WPF 提供了丰富的功能来创建美观且功能强大的用户界面。本文通过问题解答的形式,探讨了如何在 WPF 应用中集成 Windows Shell 功能,并通过具体示例代码展示了文件系统的操作方法,包括列出目录下的所有文件、创建和删除文件、移动和复制文件以及打开文件夹或文件等。
76 0