hive基础操作

时间:2019-11-03
本文章向大家介绍hive基础操作,主要包括hive基础操作使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

1、安装Hadoop

Hive 运行在Hadoop之上。Hadoop是一个非常活跃的开源项目,其具有很多的发行版和分支。同时,很多的商业软件公司现在也在开发他们自己的Hadoop分支,有时会对某些组件进行个性化的增强或者替换。这种形式可以促进创新,但是同时也会产生潜在的混乱和兼容性问题。

2、本地模式、伪分布式模式和分布式模式

我们先阐明Hadoop的不同运行模式。我们前面默认的模式是本地模式,这种模式下使用的是本地文件系统。在本地模式下,当执行Hadoop job时(包含有大多数的Hive查询),Map task 和Reduce task在同一个进程中执行。

真实的集群配置都是分布式模式,其中所有没有默认完整URL指定的路径默认都是分布式文件系统中的路径,而且由JobTracker服务来管理job,不同的task在不同的进程中执行。

对于个人计算机工作 的开发者来说,一个进退两难的实际问题是,本地模式并不能真实的反映真实集群的行为状况,这个是测试程序需要记住的事情。为了解决这个需求,一台物理机可以配置在伪分布式模式下运行。这种模式下执行的行为和在分布式模式下的行为是一致的。也就是说,引用的文件系统默认为分布式文件系统,而且由JobTracker服务来管理Job,但是实际上只有一台物理机。因为hive中大多数工作是使用Hadoop中的job,所有hive的行为可以反映出用户所使用的Hadoop运行模式。不过即使在分布式模式下执行,hive还是可以在提交查询前判断是否可以使用本地模式来执行这个查询。这时,它会读取数据文件,然后自己管理MapReduce  task ,最终提供更快的执行方式。不过对于Hadoop来说,不同模式之间的差异相对于部署方式更多的在于执行方式上。

3、测试Hadoop

假设用户使用的是本地模式,我们通过两种不同的方式来查看本地文件系统。下面这个是通过Linux ls 命令来查看Linux系统"root"目录下的目录信息。

 1 ls / 

hadoop 提供了MapReduce计算框架。Hadoop分支中都会包含有一个WordCount算法实现。现在我们来运行它。首先我们也创建一个输入目录(要位于用户当前工作目录内)用于存放将要使用的Hadoop进行处理的文件。

mkdir  wc-in 
echo "bia   bia">wc-in/a.txt 
echo "bia  wa  wa ">wc-in/b.txt

使用Hadoop命令指定我们刚刚创建好的文件输入目录来执行wordCount程序。需要注意的是,最好每次指定的文件输入输出路径都是文件夹,而不是文件。这时因为通常文件输入输出目录中有很多文件,这时系统并行性的结果。

如果用户是在本地安装的软件上以本地模式运行这些命令的话,那么Hadoop命令将会在同一个进程中加载MapReduce组件。如果用户是在集群中运行或者在伪分布式单台集群上运行的话,那么Hadoop命令将会使用JobTracker服务启动一个或者多个不同进程执行。

4、安装hive

安装hive过程和安装Hadoop过程非常相似。我们需要先下载一个hive软件压缩包,然后进行解压缩。通常这个压缩包不会包含有某个版本的hadoop。一个hive二进制压缩包可以在多个Hadoop版本上工作。这也意味着和Hadoop版本升级相比,升级到hive最新版本会更加容易和低风险。

hive使用环境变量Hadoop_home来指定Hadoop所有相关的jar和配置文件。因此,在继续进行之前请确认是否设置好了这个环境变量。

1 cd  ~
2 curl -o http://archive.apache.org/dist/hive/hive-0.9.0/hive-0.9.0-bin.tar.gz
3 tar  -xzf   hive-0.9.0.tar.gz
4 sudo mkdir  -p /user/hive/warehouse
5 sudo  chmod a+rwx  /user/hive/warehouse

正如用户从这些命令推断到的,我们使用的是编写本书时最新稳定的hive发行版,也就是v0.9.0版本。

5、hive内部是什么

hive二进制分支版本核心包含3个部分。主要部分是Java本身。

$HIVE_HOME/bin目录下包含可以执行各种各样的hive服务可执行文件,包含hive命令行界面(CLI),CLI是我们使用的hive最常用方式。CLI可用于提供交互式的界面输入语句或者可以供用户执行含有hive语句的脚本。

hive还有一些其他组件,Thrift服务提供了可远程访问其他进程的功能,也提供了使用JDBC和ODBC访问hive功能。这些都是基于Thrift服务实现的。

所有hive客户端都需要一个metastoreservice(元数据服务),Hive使用这个服务来存储表模式信息和其他元数据信息。通常情况下会使用一个关系数据库中的表来存储这些信息。默认情况下,hive会使用内置的Derby SQL服务器,其可以提供有限的,单进程的存储服务。

最后hive还提供了一个简单的网页界面,也就是hive网页界面(HwI),提供了远程访问hive服务。

6、分布式模式和伪分布式模式配置

在分布式模式下,集群中会启动多个服务。JobTracker管理着Job,而HDFS则由NameNode管理。每个工作节点都有job task在运行,由每个节点的TaskTracker服务管理着。而且每个节点上还存放着分布式文件系统的文件数据块,由每个节点的DataNode服务管理着。

7、使用JDBC连接元数据

hive中所需要的组件中只有一个是外部组件Hadoop没有的,那就是metastore(元数据存储)组件。元数据存储中存储了如表的模式和分区信息等元数据信息 。用户在执行create table x..或者alter table  y..等命令时会指定这些信息。因为多用户和系统可能需要并发访问元数据存储,所以默认的内置数据块并不适用于生产环境。

任何一个适用JDBC连接的数据块都可以用作元数据存储。在实践中,大多的hive客户端都会适用mysql。我们也将讨论如何使用msyql来进行元数据存储。执行过程对于其他适用于JDBC连接的数据库都是适用的。

对于msyql配置,我们需要知道指定服务运行在哪个服务器和端口。

8、hive命令

$hive_home/bin/hive这个shell命令时通向包含命令行界面也就是CLI等Hive服务的通道。

cli(命令行界面):用户定义表、执行查询等。如果没有指定其他服务,这个是默认服务。

hiveserver(Hive  Server):监听来自于其他进程的Thrift连接的一个守护进程。

hwi(hive  web 界面):是一个可以执行查询语句和其他命令的简单web界面,这样可以不用登录到集群中的某台机器上使用CLI来进行查询。

jar:Hadoop  jar命令的一个扩展,这样可以执行需要hive环境的应用。

metastore:启动一个扩展的Hive元数据服务,可以供多客户端使用。

rcfilecat:一个可以打印出RCFile文件内容格式的工具。

原文地址:https://www.cnblogs.com/zxmei/p/11785824.html