Hive安装

来源:互联网 发布:手机淘宝达人申请步骤 编辑:程序博客网 时间:2024/05/17 01:54
Hive安装
    mysql使用主机(win7)上的mysql数据库,启动后,要关闭360和win7自带的防火墙,确保在虚拟机里能拼通主机**************************************************
    D:\server\mysql-5.0.16-win32\bin
        grant all on *.* to hive@'localhost' identified by 'hive' with grant  option;
        create database hive character set 'UTF8'; 
    下载地址:http://archive.apache.org/dist/hive/hive-0.8.1/
        拷贝:cp /mnt/hgfs/share_files/hive-0.8.1.tar.gz ~
        解压:tar -zxvf hive-0.8.1.tar.gz 
    安装配置hive
    (1)修改/home/grid/hive-0.8.1/bin/hive-config.sh
        在末尾添加:
        [grid@h1 bin]$ vi hive-config.sh
            export JAVA_HOME=/usr/java/jdk1.6.0_29/
            export HIVE_HOME=/home/grid/hive-0.8.1
            export HADOOP_HOME=/home/grid/hadoop-0.20.2 
    (2) 根据hive-default.xml.template复制hive-site.xml
        [grid@h1 conf]$ cp hive-default.xml.template hive-site.xml 
    (3) 修改配置文件hive-site.xml:
        临时文件目录,默认值是/tmp/hive-${user.name}
        数据目录,默认值是/user/hive/warehouse
            <property>
            <name>hive.exec.scratchdir</name>
            <value>/home/grid/hive-tmp</value>
            </property> 
            <property>
            <name>hive.metastore.warehouse.dir</name>
            <value>/home/grid/hive-data</value>
            </property> 
            <property>  
            <name>javax.jdo.option.ConnectionURL</name>  
            <value>jdbc:mysql://192.168.1.100:3306/hive?createDatabaseIfNotExist=true</value>
            </property> 
            <property>  
            <name>javax.jdo.option.ConnectionDriverName</name>  
            <value>com.mysql.jdbc.Driver</value>
            </property> 
            <property>  
            <name>javax.jdo.option.ConnectionUserName</name>  
            <value>hive</value> 
            </property>
            <property>  
            <name>javax.jdo.option.ConnectionPassword</name>  
            <value>hive</value> 
            </property> 



    (4)配置log4j
        [grid@h1 conf]$ cp hive-log4j.properties.template hive-log4j.properties 

    (5)创建临时文件目录、数据目录
        [grid@h1 ~]$ mkdir hive-tmp
        [grid@h1 ~]$ mkdir hive-data 

    (6)把MySQL的JDBC驱动mysql-connector-java-5.0.8.jar 复制到Hive的lib目录下。(注:发现无法直接拷贝到/home/grid/hive-0.8.1/lib目录下,奇怪)
        [grid@h1 ~]$ cp /mnt/hgfs/share_files/mysql-connector-java-5.0.8.jar ~
        [grid@h1 ~]$ cp mysql-connector-java-5.0.8.jar /home/grid/hive-0.8.1/lib
        [grid@h1 ~]$ rm mysql*.jar 

    (7)启动
        [grid@h1 ~]$ hive-0.8.1/bin/hive 
        出现问题1:
            Hive requires Hadoop 0.20.x (x >= 1).
            'hadoop version' returned:
            Hadoop 0.20-append-r1056497 Subversionhttps://svn.apache.org/repos/asf/hadoop/common/branches/branch-0.20-append -r 1056491 Compiled by stack on Fri Jan 7 20:43:30 UTC 2011 
        问题解决1:出现这个问题是因为安装hbase的时候,我们用hbase的jar包覆盖hadoop的jar包(老师的课程里说的是用hadoop的包覆盖hbase的包,但这样运行时会报错) 

        [grid@h1 ~]$ hadoop-0.20.2/bin/stop-all.sh
        [grid@h1 ~]$ cd hadoop-0.20.2
        [grid@h1 hadoop-0.20.2]$ rm hadoop-0.20.2-core.jar
        //用原来备份的文件还原(如果想运行hbase,又要用hbase的jar来覆盖这个jar)
        [grid@h1 hadoop-0.20.2]$ cp hadoop-0.20.2-core.sav hadoop-0.20.2-core.jar
        //要同步到其他机器
        [root@h1 hadoop-0.20.2]# scp hadoop-0.20.2-core.jar grid@h2:/home/grid/hadoop-0.20.2/hadoop-0.20.2-core.jar
        [root@h1 hadoop-0.20.2]# scp hadoop-0.20.2-core.jar grid@h3:/home/grid/hadoop-0.20.2/hadoop-0.20.2-core.jar 

        再次启动:
        [grid@h1 ~]$ hadoop-0.20.2/bin/start-all.sh
        [grid@h1 ~]$ hive-0.8.1/bin/hive
        hive> show databases;
        又报错2:
            FAILED: Error in metadata: javax.jdo.JDOFatalDataStoreException: null,  message from server: "Host '192.168.1.104' is not allowed to connect to this MySQL server"
            NestedThrowables:
            java.sql.SQLException: null,  message from server: "Host '192.168.1.104' is not allowed to connect to this MySQL server"
            FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask 
        问题解决2:
            在mysql里运行:grant all on *.* to hive@'192.168.1.104' identified by 'hive' with grant option;
            192.168.1.104是安装hive的机器ip 
这个是因win7自带防火墙问题,连不上mysql 



        问题3
        hive> show tables;   
        FAILED: Error in metadata: MetaException(message:Got exception: javax.jdo.JDODataStoreException An exception was thrown while adding/validating class(es) : Can't create table '.\hive\sd_params.frm' (errno: 139)
        java.sql.SQLException: Can't create table '.\hive\sd_params.frm' (errno: 139)
            at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:946)
            at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2985)
            at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1631)
            at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1723) 
        问题解决3:(是数据库编码引起的)
            drop database hive;
            create database hive character set 'latin1'; 
        建表
        hive> CREATE TABLE pokes (foo INT, bar STRING); 
            OK
            Time taken: 4.357 seconds
        其他操作见:Hive常用的SQL命令操作.txt 

0 0
原创粉丝点击