Hive 入门及环境搭建

1)Hive主要用途

    解决海量结构化日志数据的文件统计,即离线统计分析


2)架构图

    

    HIVE本身就是一个客户端,不需要集群。

    生产可以在几个hadoop机器上都配hive,目的不是集群,是几个节点都可以提交hive作业。

    以上缺陷:MySQL单点故障


3)Hive VS RDBMS

    1)都是使用sql来查询的

    2)实时性:RDBMS实行性高(延时短),Hive主要是做离线批处理的(延时高)

    3)事务性:都支持事务,但是Hive主要是离线处理,一般不需要考虑事务性

    4)分布式:hive是基于mapreduce分布式执行引擎;RDBMS也是支持分布式,但是节点数比较少。

    5)成本:RDBMS成本比较高,构建在专用的机器上;Hive随便找个Hadoop节点就能处理TB级别的数据。


    Q:用spark跑sql能做到实时吗?

    A:速度会快一点,但是也是不可能做实时的。sql是用来做统计分析的多,实时不能使用sql,只能用流处理框架


4)Hive 环境搭建

    1. wget http://archive.cloudera.com/cdh5/cdh/5/hive-1.1.0-cdh5.7.0.tar.gz

     2.  tar -zxvf hive-1.1.0-cdh5.7.0.tar.gz -C ~/app    或者编译 mvn clean package -Pdist

     3.  添加HIVE_HOME到系统环境变量

        export HIVE_HOME=/home/hadoop/app/hive-1.1.0-cdh5.7.0

        export PATH=$HIVE_HOME/bin:$PATH

    4. Hive配置修改

        hive-env.sh

            HADOOP_HOME=/home/hadoop/app/hadoop-2.6.0-cdh5.7.0

        hive-site.xml   统一元数据管理

            <property>
              <name>javax.jdo.option.ConnectionURL</name>
              <value>jdbc:mysql://localhost:3306/ruozedata_basic02?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>root</value>
            </property>    
            <property>
              <name>javax.jdo.option.ConnectionPassword</name>
             <value>root</value>
            </property> 

    5. 拷贝mysql驱动包到$HIVE_HOME/lib

    6. 配置日志路径    $HIVE_HOME/conf/hive-log4j.properties.template

        hive.log.dir=${java.io.tmpdir}/${user.name}
        hive.log.file=hive.log

        

5)搭建出现的异常

    1. The specified datastore driver ("com.mysql.jdbc.Driver") was not found in the CLASSPATH. 
        Please check your CLASSPATH specification, 

        and the name of the driver.

        解决:没有配置mysql驱动包,把mysql驱动包放到$HIVE_HOME/lib即可

    2. FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask.MetaException      

       (message:For direct MetaStore DB connections, we don't support retries at the client level.)

        原因:创建表失败,这里是看不出具体报错的,要去查看log日志才能清楚知道错误信息

        解决:去log日志下面找,在hive.log发现错误信息,key太长超过767:

                  com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Specified key was too long; max key length is 767 bytes

                  登陆mysql客户端,改变数据库字符集为latin1:mysql> alter database ruozedata_basic02 character set latin1;             

猜你喜欢

转载自blog.csdn.net/qq_30130043/article/details/80467171
今日推荐