【Hive】01-安装Hive

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/shenchaohao12321/article/details/82352117
安装Hive的过程和安装Hadoop的过程非常相似。我们需要先下载一个Hive软件压缩包,然后进行解压缩。
Hive使用环境变量HADOOP_HOME来指定Hadoop的所有相关JAR和配置文件。因此,在继续进行之前请确认下是否设置好了这个环境变量。

解压安装包

       $ tar -xzvf hive-3.y.z.tar.gz

设置环境变量

       $ export HIVE_HOME=/xxxx/xxx   

       $ export PATH=$HIVE_HOME/bin:$PATH

1、本地模式配置

在本地模式中,所有提及的文件都存储在本地文件系统而不是分布式文件系统中。其中没有服务在运行。相反地,用户的job在同一个JVM实例中执行所有的任务。如果用户计划经常使用本地模式的话,那么非常有必要为Derby metastore_db(这里Hive存储了用户的表等元数据信息)配置一个标准的位置。

用户如果不想使用默认的路径,那么还可以配置一个不同的目录来存储表数据。对于本地模式,默认路径是file:///user/hive/warehouse,对于其他模式,默认存储路径是hdfs://namenode-server/user/hive/warehouse。首先,切换到$HIVE_HOME/conf目录下。好奇者可能会看到hive-default.xml.template 这个大文件。这个文件中包含了 Hive提供的配置属性以及默认的属性值。这些属性中 的绝大多数,用户可以直接忽略不管。用户所作的配置修改只需要在hive-site.xml文件 中进行就可以了。如果这个文件不存在,那么用户需要自己创建一个。

<?xml version="l.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
    <property>
        <name>hive.metastore.warehouse.dir</name>
        <value>/home/me/hive/warehouse</value>
        <description>Local or HDFS directory where Hive keeps table contents</description>
    </property>
    <property>
        <name>hive.metastore.local</name>
        <value>true</value>
        <description>Use false if a production metastore server is used.</description〉
    </property>
    <property>
        <name>javax.jdo.option.ConnectionURL</name>
            <value>jdbc:derby:;databaseName=/home/me/hive/metastore_db;create=true</value>
    </property>
</configuration>

正如<description>#签内所表明的,属性hive.metastore.warehouse.dir 告诉 Hive 在本地文件系统中使用哪个路径来存储Hive表中的数据。(这个值会追加到Hadoop配置文件中所配置的属性fs.default.name的值,其默认为,file:///。)用户可以根据需要为这个属性指定任意的目录路径。
属性hive.metastore.local的默认值就是true,因此我们其实是没必要将这个属性加进去的。放在例子中更多的目的是提供文档信息。这个属性控制着是否连接到一个远程metastore server或者是否作为Hive Client JVM的构成部分重新打开一个新的metastore server。这个设置通常是设置成true的,然后使用JDBC直接和一个关系型数据库通信。当设置为false时,Hive将会通过一个metastore server来进行通信。
属性javax.jdo.option.ConnectionURL的值对默认的值进行了简单的修改。这个属性告诉Hive如何连接server。默认情况下,它使用当前的工作目录作为属性值字符串中的databaseName 部分。如我们使用databaseName=/home/me/hive/metastore_db作为绝对路径,它是目录所在的路径。这样设置可以解决每次开启一个新的Hive会话时,Hive自动删除工作目录下的办目录的问题。现在,我们不管在哪个目录下工作都可以访问到所有的元数据。

2、分布式和伪分布式配置

用户可能需要配置的一个Hive属性是表存储所位于的顶级文件目录,其由属性hive.metastore.warehouse.dir指定,在本地模式配置”中也有进行讨论。
Apache Hadoop和MapR分支中这个属性的默认值是/user/hive/warehouse,当Hadoop配置的是分布式模式或者伪分布式模式时,这个路径被认为是分布式文件系统中的路径。
为这个属性指定不同的值可以允许每个用户定义其自己的数据仓库目录,这样就可以避免影响其他系统用户。因此,用户可能需要使用如下语句来为其自己指定数据仓库目录:

set hive.metastore.warehouse.dir=/user/myname/hive/warehouse

如果每次启动HiveCLI或者在每个Hive脚本前都指定这行语句,那么显得过于冗长。当然,也更容易会忘记设置这个属性值。因此,最好将和这个命令类似的所有命令放置在$HOME/.hiverc文件中,每一次启动Hive都会执行这个文件。

3、使用JDBC连接元数据

Hive所需要的组件中只有一个外部组件是Hadoop没有的,那就是metastore了(元数据存储)组件。元数据存储中存储了如表的模式和分区信息等元数据信息。用户在执行如create table x...或者alter table y ...等命令时会指定这些信息。因为多用户和系统可能需要并发访问元数据存储,所以默认的内置数据库并不适用于生产环境。
提示
如果用户使用的是单个节点上的疠分布式式,那么用户可能会发现,为元据荐緔殳置一个完整的关系型数据库并没多大用处,反而,用户可能希望继续使用默认的Derby进行元数据存储,但是可以为其设置一个中央位置来储存数据。

任何一个适用JDBC进行连接的数据库都可用作元数据存储。在实践中,大多数的Hive客户端会使用MySQL0我们也将讨论如何使用MySQL来进行元数据存储。执行过程对于其他适用于JDBC连接的数据库都是适用的。像表的模式信息、分区信息等这些必须的元数据,其信息量是很小的,通常比存储在Hive中的数据的量要少的多·因此,用户其实无需为元数据存储提供一个强劲的专用数据库服务器·不过,因为这是一个单点问题(SPOF),所以强烈建议用户使用对于其他关系型数据库实例同样适用的标准技术来对这个数据库进行冗余存储和数据备份。
对于MySQL配置,我们需要知道指定服务运行在哪个服务器和端口。我们将假定是在db1.mydomain.pvt服务器的3306端口上,这个端口也是标准的MySQL端口。最后,我们假定存储数据库名为hive_db。
配置元数据库信息vi  hive-site.xml添加如下内容:

<configuration>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://localhost: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>root</value>
<description>password to use against metastore database</description>
</property>
</configuration>

用户可能已经注意到ConnectionURL属性值前缀是jdbc:mysql。
为了使Hive能够连接上MySQL,我们需要将JDBC驱动放置在类路径下。
这个驱动可以放置在Hive的库路径下,也就是$HIVE_HOME/lib目录下。有些团队会将所有这些支持类的库放置在Hadoop的库目录下。驱动和配置设置正确后,Hive就会将元数据信息存储到MySQL中。

猜你喜欢

转载自blog.csdn.net/shenchaohao12321/article/details/82352117