`

基于hadoop集群的hive 安装及异常解决方法

 
阅读更多
  • 第一部分:软件准备与环境规划

Hadoop环境介绍
•Hadoop安装路径
•/usr/local/hadoop
Hive环境规划
•Hive安装路径
•/usr/local/hive
•Hive数据存放路径
•hdfs
•/user/hive/warehouse
•Hive元数据
•第三方数据库
•derby mysql
软件准备
•OS
•ubuntu
•JDK
•java 1.6.0_27
•Hadoop
•hadoop-1.0.0.tar
•Hive
•hive-0.8.1.tar

 

  • 第二部分:Hive项目介绍
项目结构

 

Hive配置文件介绍

 

•hive-site.xml      hive的配置文件
•hive-env.sh        hive的运行环境文件
•hive-default.xml.template  默认模板
•hive-env.sh.template     hive-env.sh默认配置
•hive-exec-log4j.properties.template   exec默认配置
• hive-log4j.properties.template log默认配置
hive-site.xml
 < property>
  <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://localhost:3306/hive?createData baseIfNotExist=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>test</value>
   <description>password to use against metastore database</description>
</property> 
 
hive-env.sh
•配置Hive的配置文件路径
•export HIVE_CONF_DIR= your path
•配置Hadoop的安装路径
•HADOOP_HOME=your hadoop home

 

  • 第三部分:安装hive

 下载hive安装包 http://mirrors.tuna.tsinghua.edu.cn/apache/hive/
  tar -xf hive-0.10.0.tar.gz
 将解压后的hive文件放在系统的/usr/local/hive 中。

在/etc/profile中添加:
export HIVE_HOME=/usr/local/hive/hive
export PATH=$HIVE_HOME/bin:$PATH


将conf/hive-default.xml.template复制两份,分别命名为hive-default.xml(用于保留默认配置)和hive-site.xml(用于个性化配置,可覆盖默认配置)

启动hive:
$ $HIVE_HOME/bin/hive

hive> create database test;
OK
Time taken: 0.07 seconds
hive> show databases;
OK
default
test
Time taken: 0.196 seconds


执行成功。

  • 第三部分:使用MySQL数据库的安装方式

但是这样安装的元数据保持在内嵌的数据库Derby中,只能允许一个会话连接,如果要支持多用户多会话,则需要一个独立的元数据库,目前比较流行的是使用MySQL,下面进行配置。
 
1)安装MySQL服务器并启动MySQL服务

2)为Hive建立相应的MySQL帐号,并赋予足够的权限
①进入root:mysql -uroot -p;
②创建hive数据库:create database hive;
③创建用户hive,它只能从localhost连接到数据库并可以连接到wordpress数据库:grant all on hive.* to hive@localhost identified by 'hive'。

3)在Hive的conf目录下修改配置文件hive-site.xml,配置文件修改如下

<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>hive</value> 
  <description>username to use against metastore database</description> 
</property> 
<property> 
  <name>javax.jdo.option.ConnectionPassword</name> 
  <value>hive</value> 
  <description>password to use against metastore database</description> 
</property>

 页

4)把MySQL的JDBC驱动包(我使用的是mysql-connector-java-5.0.8-bin.jar,从http://downloads.mysql.com/archives/mysql-connector-java-5.0/mysql-connector-java-5.0.8.tar.gz下载并解压后可以找到)复制到Hive的lib目录下。


启动Hive shell,执行
show tables;
如果不报错,表明基于独立元数据库的Hive已经安装成功了。

查看一下元数据的效果。
在Hive上建立数据表:
CREATE TABLE my(id INT,name string) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t';
show tables;
select name from my;

然后我们以刚刚建立的hive帐号登录MySQL查看元数据信息。
mysql> use hive
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed

mysql> show tables;
+-----------------+
| Tables_in_hive  |
+-----------------+
| BUCKETING_COLS  |
| COLUMNS         |
| DATABASE_PARAMS |
| DBS             |
| PARTITION_KEYS  |
| SDS             |
| SD_PARAMS       |
| SEQUENCE_TABLE  |
| SERDES          |
| SERDE_PARAMS    |
| SORT_COLS       |
| TABLE_PARAMS    |
| TBLS            |
+-----------------+
13 rows in set (0.00 sec)

mysql> select * from TBLS;
+--------+-------------+-------+------------------+--------+-----------+-------+----------+---------------+--------------------+--------------------+
| TBL_ID | CREATE_TIME | DB_ID | LAST_ACCESS_TIME | OWNER  | RETENTION | SD_ID | TBL_NAME | TBL_TYPE      | VIEW_EXPANDED_TEXT | VIEW_ORIGINAL_TEXT |
+--------+-------------+-------+------------------+--------+-----------+-------+----------+---------------+--------------------+--------------------+
|      1 |  1319445990 |     1 |                0 | hadoop |         0 |     1 | my       | MANAGED_TABLE | NULL               | NULL               |
+--------+-------------+-------+------------------+--------+-----------+-------+----------+---------------+--------------------+--------------------+
1 row in set (0.00 sec)

在TBLS中可以看到Hive表的元数据。


  • 第四部分:安装过程异常处理

异常描述:
hive> show tables;
FAILED: Error in metadata: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.metastore.HiveMetaStoreClient
FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask

解决方法:
    引起这种异常的可能性较多,这里只是列举了一些相关的注意事项以供参考,详细大家可以通过网络找更多相关的内容.
    1  删除  $HADOOP_HOME/build 目录(如果当时通过下载gz包进行编译安装的话,会残留部分信息,删除这个目录是必须的)
    2  ./hive -hiveconf hive.root.logger=DEBUG,console  进行调试模式,根据问题逐步解决
    3  确认 $HIVE_HOME/lib 下存在 mysql-connector-java-5.1.25-bin.jar  hadoop-core-1.2.0.jar 主包
    4  了解Hive metastore三种存储方式,确认自身配置的模式是否正确


异常描述:
java.sql.SQLException: Invalid authorization specification,  message from server: "Access denied for user 'root'@'localhost' (using password: YES)"
java.sql.SQLException: Syntax error or access violation,  message from server: "Access denied for user 'hadoop'@'localhost' to database 'metastore_db'"
解决方法:
这是因为mysql远程访问的权限问题,执行 grant all on *.*  to 'hadoop'@'%' identified by 'hadoop'; 即可。

INSERT INTO USER(HOST,USER,PASSWORD) VALUES("localhost","hadoop",PASSWORD("hadoop"));
GRANT ALL PRIVILEGES ON * TO 'hadoop'@'localhost' IDENTIFIED BY 'hadoop' WITH GRANT OPTION;

FLUSH PRIVILEGES;

 

异常描述:
java.sql.SQLException: Syntax error or access violation,  message from server: "Specified key was too long; max key length is 767 bytes"
解决方法:
一般是由于mysql的最大索引长度导致,看了一个人的文章颇有感触下面给出链接:
http://blog.csdn.net/cindy9902/article/details/6215769


1、数据库的字符集除了system为utf8,其他最好为latin1,否则可能出现如上异常。
2、set global binlog_format='MIXED';READ-COMMITTED需要把bin-log以mixed方式来记录
改完上述两种方法后,我还是会出现以上问题,我把mysql的metastore_db里面的所有表删除,hadoop重启,然后重新启动hive之后就能够正常删除表了。

问题解决。




分享到:
评论

相关推荐

    基于hadoop平台hive数据库处理电影数据(8965字数32页).doc

    “系统总体设计”部分可能详细描述了Hadoop集群的搭建步骤,包括硬件选择、软件安装、配置参数调整等。同时,对于Hive数据库的设计,可能会涉及数据模型的定义,如创建表、分区策略、数据类型选择等,以适应电影数据...

    大数据离线分析系统,基于hadoop的hive以及sqoop的安装和配置

    这些步骤是确保Hadoop集群稳定性和容错性的基础。 接下来是Hive的安装。Hive提供了对PB级数据的SQL查询能力,使得非程序员也能轻松进行大数据分析。在安装过程中,需要下载Hive的发行版,配置Hadoop的相关路径,如...

    Hadoop+Hive集群搭建步骤

    VM虚拟机上,安装ubantu搭建hadoop+Hive集群,步骤详细。

    Hadoop集群搭建及Hive的安装与使用

    本教程将详细介绍如何搭建Hadoop集群以及安装和使用Hive。 首先,我们来了解Hadoop集群的搭建步骤: 1. **环境准备**:确保所有节点的操作系统一致,通常选择Linux发行版,如Ubuntu或CentOS。安装Java开发套件...

    hadoop集群配置之———hive安装与配置(超详细)

    在Hadoop集群配置过程中,安装和配置Hive是一个重要环节。这个过程中需要保证Hadoop集群本身已经搭建好并且运行正常。在安装Hive之前,一般需要先安装和配置好MySQL数据库,因为Hive会使用MySQL来存储其元数据。元...

    基于虚拟机hadoop集群hive2.1.1配置文件

    本文将详细探讨如何在虚拟机环境中配置基于Hadoop集群的Hive 2.1.1,以及涉及的相关配置文件。 首先,我们要理解Hadoop集群的基本架构。Hadoop通常采用主从结构,由一个NameNode(Master)作为中心节点,负责管理...

    hadoop&hive安装配置

    本文将详细介绍hadoop&hive的安装配置过程,包括对hadoop集群的搭建和hive的配置。下面将逐步介绍每个步骤的详细内容。 hadoop集群搭建 在开始安装hadoop之前,我们首先需要准备三台机器,分别作为master、slave1...

    Hadoop和Hive的安装配置

    9. **检查状态**:通过Web界面(默认是50070端口)查看Hadoop集群的状态,确认所有服务正常运行。 **Hive的安装配置** 1. **下载Hive**:同样,从Apache官网下载Hive的最新稳定版本。 2. **解压和配置**:解压后...

    从VMware中安装CentOS到Hadoop集群+ Hive+ MySQL搭建

    适合新手,详细 01-Java环境安装 02- Eclipse下载与安装 03-VMware虚拟机的安装 04-在VMware中安装CentOS 05- Hadoop集群+ Hive+ MySQL搭建

    Hadoop集群搭建Hive的安装配置

    本实验将指导你如何在已搭建的Hadoop集群上安装和配置Hive。 首先,你需要满足一定的实验环境要求,包括五台独立的PC式虚拟机,每台主机运行CentOS7-64位操作系统,且已完成Hadoop和MySQL的安装。在进行Hive的安装...

    基于Hadoop/Hive的web日志分析系统的设计

    同时,由于数据量巨大,对于Hadoop/Hive集群的性能优化也是设计时不可忽视的一环,包括集群硬件的选型、Hadoop/Hive配置参数的调整、MapReduce任务的优化等。 此外,该系统与传统单机处理Web日志的实验对比,证明了...

    Hadoop集群上安装hive并运行一个例子的排错分析

    在Hadoop集群上安装和运行Hive可能会遇到各种挑战,特别是在不同版本之间存在兼容性问题时。本篇文章将深入探讨如何解决两个常见的错误,并提供在Hadoop集群上配置和使用Hive的一般步骤。 首先,我们来看第一个错误...

    基于Hadoop_Hive的气象数据分布式处理研究.pdf

    Hive将用户的HiveQL查询转换为一系列的MapReduce任务,并在Hadoop集群上执行这些任务。因此,Hive既继承了Hadoop强大的分布式存储和处理能力,又通过SQL接口提供了更高级的数据抽象和易用性。 此外,由于大数据处理...

    基于Hadoop的数据仓库Hive学习指南.doc

    元数据存储了表和分区的定义,Hive服务器处理客户端请求,执行引擎则将HiveQL转换为MapReduce任务在Hadoop集群上执行。 6. **HiveQL操作**:HiveQL支持常见的数据操作,如创建表、加载数据、查询、聚合、分组、排序...

    hadoop和hive调优个人总结

    hadoop和hive调优个人总结 Hadoop和Hive调优是当前大数据处理中...Hadoop和Hive的调优是一个复杂的过程,需要对Hadoop和Hive的原理和机理有深入的了解,掌握了调优的技巧和方法,才能提高Hadoop和Hive的性能和可靠性。

    基于Hadoop的成绩分析系统.docx

    接着,详细介绍了Hadoop集群的搭建过程,包括VMWARE安装、CENTOS6.8安装和Hadoop的安装与配置。 在编码实现部分,本文介绍了使用MapReduce实现成绩分析的过程,包括初始数据的处理、计算每门课程的平均成绩、最高...

    大数据Hadoop+HBase+Spark+Hive集群搭建教程(七月在线)1

    - 在Hadoop集群运行的基础上安装HBase,确保Hadoop的相关环境变量被HBase使用。 - 配置HBase的`hbase-site.xml`以指定Zookeeper地址和集群模式。 - 启动HBase服务,包括Master和RegionServer。 3. **Spark**:...

    Hadoop集群监控与Hive高可用.pdf

    本文档主要介绍了Hadoop集群监控和Hive高可用的解决方案,涵盖了Cacti和Ganglia两种监控工具的优缺点、Hive高可用集群的实现方案、HAProxy的应用和优化。 一、Hadoop集群监控 1. Cacti监控工具 Cacti是一种基于...

Global site tag (gtag.js) - Google Analytics