hive安装配置

安装hive之前需先安装jdk1.7、hadoop2.6.0、mysql-5.6.24。

1.配置hive的元数据库,进入mysql,运行如下命令:

create database hive character set latin1;

注意1:字符集必须指定为latin1,否则在启动hive时,会出现以下异常:
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Specified key was too long; max key length is 767 bytes
FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask
注意2
当运行HIVE的建表语句的字段注释或表注释(comment语法)存在中文时,需要将相应mysql库表的字段存储编码改为utf-8,否则可能会出现以下报错:
FAILED: Error in metadata: MetaException(message:javax.jdo.JDODataStoreException: Put request failed
运行语句如下:
ALTER TABLE columns_v2 CHANGE `COMMENT` `COMMENT` varchar(256) CHARACTER SET utf8 DEFAULT NULL;
ALTER TABLE table_params CHANGE `PARAM_VALUE` `PARAM_VALUE` varchar(4000) CHARACTER SET utf8 DEFAULT NULL;

2.下载并解压apache-hive-1.0.1-bin.tar.gz,修改~/.bashrc,添加如下内容后执行source ~/.bashrc

export HIVE_HOME=/home/hadoop/apps/hive #hive-env会用到,sqoop会用到
export PATH=$HIVE_HOME/bin:$PATH

3.添加mysql的java驱动包到hive的lib目录下,下载mysql的java驱动包mysql-connector-java-5.1.35.tar.gz,解压把里面的mysql-connector-java-5.1.35-bin.jar包复制到hive主目录的lib目录下。

4.配置conf/hive-env.sh,复制hive-env.sh.template,cp hive-env.sh.template hive-env.sh。

4.1.HADOOP_HOME=。如果在环境变量配置了HADOOP_HOME,则推荐使用默认配置,否则推荐使用如下配置。

export HADOOP_HOME=/home/hadoop/apps/hadoop

配置hadoop的安装目录

4.2.HIVE_CONF_DIR=。如果在环境变量配置了HIVE_HOME,则推荐使用如下配置。这个一定要配置,有一次写成了HVIE_HOME,hive就找不到配置了,只会用默认配置。

export HIVE_CONF_DIR=${HIVE_HOME}/conf

配置hive的配置目录。

5.配置conf/hive-site.xml,复制hive-site.xml,cp hive-default.xml.template hive-site.xml。hive-1.1.0-cdh5.5.2.tar.gz里面没有hive-default.xml.template,从hive原始版本复制一个过来。在hive-site.xml中,有些是服务端配置,有些是客户端配置,注意仔细分清楚。

5.1.hive.exec.scratchdir=/tmp/hive-${user.name}。此目录为hdfs目录。hive搜索job的零时目录。

服务端推荐使用如下配置。也可以使用默认配置

<property>
  <name>hive.exec.scratchdir</name>
  <value>/hive/tmp/scratchdir</value>
  <description>Scratch space for Hive jobs</description>
</property>

客户端不配置。

5.2.hive.metastore.warehouse.dir=/user/hive/warehouse。此目录为hdfs目录。默认的hive数据仓库位置。

服务端推荐使用如下配置。

<property>
  <name>hive.metastore.warehouse.dir</name>
  <value>/hive/warehouse</value>
  <description>location of default database for the warehouse</description>
</property>

客户端推荐使用如下配置。

<property>
  <name>hive.metastore.warehouse.dir</name>
  <value>/hive/warehouse</value>
  <description>location of default database for the warehouse</description>
</property>

客户端不配置。

5.3.javax.jdo.option.ConnectionURL=jdbc:derby:;databaseName=metastore_db;create=true。如果使用mysql作为元数据数据库,

服务器端推荐使用如下配置。

<property>
  <name>javax.jdo.option.ConnectionURL</name>
  <value>jdbc:mysql://master:3306/hive?createDatabaseIfNotExist=true</value>
  <description>JDBC connect string for a JDBC metastore</description>
</property>

客户端不配置。

5.4.javax.jdo.option.ConnectionDriverName=org.apache.derby.jdbc.EmbeddedDriver。如果使用mysql作为元数据数据库,推荐使用如下配置。

<property>
  <name>javax.jdo.option.ConnectionDriverName</name>
  <value>com.mysql.jdbc.Driver</value>
  <description>Driver class name for a JDBC metastore</description>
</property>

客户端不配置。

5.5.javax.jdo.option.ConnectionUserName=APP。如果使用mysql作为元数据数据库,推荐使用如下配置。

<property>
  <name>javax.jdo.option.ConnectionUserName</name>
  <value>root</value>
  <description>username to use against metastore database</description>
</property>

客户端不配置。

5.6.javax.jdo.option.ConnectionPassword=mine如果使用mysql作为元数据数据库,推荐使用如下配置。

<property>
  <name>javax.jdo.option.ConnectionPassword</name>
  <value>123456</value>
  <description>password to use against metastore database</description>
</property>

客户端不配置。

5.7.hive.metastore.schema.verification=true。此属性比较特殊。先改为false,等第一次启动后改回true。服务器端客户端都做相同处理。

该属性是检查metastore的版本号,由于第一次启动metastore服务时,mysql作为数据源的hive数据库内没有生成任何表和数据,所以会出现返回的版本号为空的情况。我们可以暂时在hive.metastore.schema.verification里设置成false,在第一次启动自动生成了数据后,那么就可以将这个配置值再改回true,往后也相关无事了。

注意:如果报Relative path in absolute URI,是因为hive-site.xml文件中加了system就解析不出正确的路径了,将hive-site.xml文件中的所有${system:java.io.tmpdir}和${system:user.name}中的"system:"去掉。${java.io.tmpdir}默认是/tmp,包括hive的日志文件也在此目录下(conf/hive-log4j.properties里定义)。

5.8.hive.metastore.uris=。客户端连服务器的metastore的uri,默认域名是hive服务器的域名,端口是9083。比如spark需要连接hive时,就需要用到此属性。

服务器端不配置

客户端配置如下:

<property>
    <name>hive.metastore.uris</name>
    <value>thrift://bigdata1:9083</value>
</property>

参考:Hive metastore三种配置方式

6.启动两项服务进程

nohup hive --service metastore & #启动hive的metastorm服务进程,将Hive的元数据保存到一台远端服务器上,
nohup hive --service hiveserver2 & #启动hive server服务

metastore将Hive的元数据保存到一台远端服务器上,这样就不用每个客户端都维护一个metastore了。

7.启动hdfs和yarn后,执行hive(hive --service cli)命令(要先启动metastore,否则提示需要启动metastore),即进入hive命令模式,首先执行show tables命令(目的是自动在mysql中建表,这样会生成20张表,否则只会生成4张表)。

8.hive-0.12.0-cdh5.1.0.tar.gz出现的一个问题

Unable to instantiate org.apache.hadoop.hive.metastore.HiveMetaStoreClient,产生问题原因如下:

version information not found in metastore(版本信息找不到):

看过网上的解决方案是在配置文件中将hive-site.xml 里面 hive.metastore.schema.verification 的值改为 false后不会出现问题。

根据错误检查了下ObjectStore.java源代码,该异常会在检查metastore的版本号时,如果从metastore数据源中没有返回版本号,则会根据上面所说的schema.verification来确定是否招抛出这个异常:

由于第一次启动metastore服务时,mysql作为数据源的hive数据库内没有生成任何表和数据,所以会出现返回的版本号为空的情况。我们可以暂时在hive.metastore.schema.verification里设置成false,在第一次启动自动生成了数据后,那么就可以将这个配置值再改回true,往后也相关无事了。在我看来,其实是hive在配置远端metastore的一个小bug。

9.Caused by: org.datanucleus.store.rdbms.exceptions.MissingTableException: Required table missing : "`DBS`" in Catalog "" Schema "". DataNucleus requires this table to perform its persistence operations. Either your MetaData is incorrect, or you need to enable "datanucleus.autoCreateTables"。

这是因为hive的mysql元数据信息没有建全,需要mysql数据库,重新建立mysql库,一共有20个表,严格按照如下步骤,先启动metastore、hiveserver2,然后再启动hive,在hive中执行show tables;让hive框架自动生成那些表。


转载于:https://my.oschina.net/cjun/blog/479031

<think>好的,用户想了解Hive安装配置及验证方法。我需要按照之前的系统级指令来组织回答,确保格式正确,比如数学表达式用$...$,独立公式用$$...$$,同时用中文回答,还要生成相关问题。首先,我得回忆一下Hive安装的基本步骤,然后结合用户提供的引用内容来组织信息。 用户提供的引用中有三个来源,引用[1]提到Hive配置文件hive-site.xml和启用审计的步骤,引用[2]详细介绍了安装配置的实战指南,包括环境准备、下载解压、修改配置、环境变量设置和服务启动,引用[3]则涉及Kerberos配置的状态图。不过用户的问题主要是安装配置和验证,所以重点应该放在引用[2]的内容上,可能还需要引用[1]中的配置步骤。 首先,安装部分需要环境准备,比如Java、Hadoop,然后下载解压Hive配置部分包括修改hive-site.xml,设置环境变量,初始化元数据库。验证部分可能需要通过执行Hive命令和测试基本操作来确认安装成功。 另外,用户要求生成相关问题,我需要考虑用户可能后续会问的问题,比如环境变量配置错误如何处理,Hive与Hadoop的兼容性,或者如何配置数据库到MySQL等。 需要注意引用标记的正确使用,比如在提到配置步骤时引用[^1],在安装指南部分引用[^2]。同时,确保所有技术术语和步骤清晰准确,比如元数据库初始化使用schematool,这可能涉及到命令行代码的展示。 最后,检查LaTeX格式是否正确,虽然Hive安装可能不涉及数学公式,但如果有需要的地方要应用正确的格式,比如路径中的变量可能需要用$符号,例如$HIVE_HOME。不过根据示例,用户可能没有数学表达式,所以这部分可能不需要。但代码块需要用三个反引号包裹,并注明语言,比如shell或sql。 现在,我需要把整个流程结构化,分步骤说明,确保每个部分都有对应的引用标注,并在最后生成相关问题。</think>### Hive安装配置及验证方法分步指南 #### 一、环境准备 1. 基础依赖: - Java 1.8+环境(需验证$JAVA_HOME$配置) - Hadoop集群已部署(推荐Hadoop 3.x) 2. 创建专用用户: ```shell sudo useradd hive -g hadoop sudo passwd hive ``` #### 二、安装步骤 1. 下载解压: ```shell wget https://downloads.apache.org/hive/hive-3.1.2/apache-hive-3.1.2-bin.tar.gz tar -zxvf apache-hive-3.1.2-bin.tar.gz -C /opt/ mv /opt/apache-hive-3.1.2-bin /opt/hive ``` 2. 环境变量配置: ```shell # 在~/.bashrc中添加 export HIVE_HOME=/opt/hive export PATH=$PATH:$HIVE_HOME/bin ``` #### 三、核心配置hive-site.xml) ```xml <configuration> <!-- 元数据存储配置(以本地Derby为例) --> <property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:derby:;databaseName=metastore_db;create=true</value> </property> <property> <name>hive.metastore.warehouse.dir</name> <value>/user/hive/warehouse</value> </property> <!-- 启用审计日志(引用[1]配置) --> <property> <name>hive.server2.logging.operation.enabled</name> <value>true</value> </property> </configuration> ``` #### 四、元数据库初始化 ```shell schematool -dbType derby -initSchema ``` 初始化成功后会出现"schemaTool completed"提示 #### 五、服务验证 1. 启动Hive CLI: ```shell hive ``` 2. 执行验证命令: ```sql CREATE TABLE test(id INT); SHOW TABLES; INSERT INTO test VALUES(1); SELECT COUNT(*) FROM test; ``` 预期输出: ``` OK 1 ``` #### 六、Kerberos集成(可选) 根据引用[3]状态图流程: 1. Kerberos客户端配置 2. 生成Hive服务主体 3. 更新hive-site.xml安全配置 4. 重启Hive服务 $$ \text{验证公式:} \quad \exists x \in \text{Hive进程列表}, x=\text{HiveServer2} $$
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值