zoukankan      html  css  js  c++  java
  • hive的体系架构及安装

    1,什么是Hive?

      Hive是能够用类SQL的方式操作HDFS里面数据一个数据仓库的框架,这个类SQL我们称之为HQL(Hive Query Language)

    2,什么是数据仓库?

      存放数据的地方

    3,Hive的特征

      海量数据的存储
      海量数据的查询
      不支持事务性操作

    Hive是SQL解析引擎,它将SQL语句转译成M/R Job然后在Hadoop执行。

    4,Hive中的概念和HDFS里面概念的对应

      Hive中的表----HDFS里面的目录
      Hive中的表中的数据----HDFS目录下的(数据)文件
      Hive中的行列----HDFS数据文件中的行列
      部署时不一定放在集群管理节点中,可以放在某个节点上

    5,Hive的数据存储

      Hive的数据存储基于Hadoop HDFS
      Hive没有专门的数据存储格式
      存储结构主要包括:数据库、文件、表、视图、索引
      Hive默认可以直接加载文本文件(TextFile),还支持SequenceFile、RCFile
      创建表时,指定Hive数据的列分隔符与行分隔符,Hive即可解析数据

    6,Hive的提供架构  

      用户接口主要有三个:CLI,JDBC/ODBC和 WebUI

      CLI,即Shell命令行,JDBC/ODBC 是 Hive 的Java,与使用传统数据库JDBC的方式类似

      WebGUI是通过浏览器访问 Hive
    Hive 将元数据存储在数据库中(metastore),目前只支持 mysql、derby。Hive 中的元数据包括表的名字,表的列和分区及其属性,表的属性(是否为外部表等),表的数据所在目录等
    解释器、编译器、优化器完成 HQL 查询语句从词法分析、语法分析、编译、优化以及查询计划(plan)的生成。生成的查询计划存储在 HDFS 中,并在随后由 MapReduce 调用执行
    Hive 的数据存储在 HDFS 中,大部分的查询由 MapReduce 完成(包含 * 的查询,比如 select * from table 不会生成 MapRedcue 任务)

     7,Hive的元数据Metastore

      metastore是hive元数据的集中存放地。
      metastore默认使用内嵌的derby数据库作为存储引擎
      Derby引擎的缺点:一次只能打开一个会话
      使用MySQL作为外置存储引擎,多用户同时访问

    Ubuntu下MYSQL的安装

    1、查看mysql的依赖

    rpm -qa | grep mysql

    无依赖

    如果有,删除mysql的依赖

    rpm -e --nodeps `rpm -qa | grep mysql`

    或者

    rpm -e --nodeps `rpm -qa | grep MySQL`

    2、在线安装mysql

    apt-get install mysql-server
    apt-get install mysql-client

    启动:

    mysql -u root -p

    ------------------

    中间遇到了dpkt的问题,但是忘记截图了,下次碰到了再补上吧

    Ubuntu下hive的安装

    1,上传tar包,解压

    tar -zxvf apache-hive-0.14.0-bin.tar.gz

    2,更名

    mv apache-hive-0.14.0-bin hive-0.14.0

    3,备份配置文件

    cp hive-env.sh.template hive-env.sh
    cp hive-default.xml.template hive-site.xml

    4,修改hive-env.sh配置文件

    增加内容如下:

    JAVA_HOME=/usr/local/jdk1.8.0_91
    HADOOP_HOME=/usr/local/hadoop-2.6.0
    HIVE_HOME=/usr/local/hive-0.14.0

    5,修改hive-site.xml文件

    首先需要在mysql下新建一个database

    启动mysql:

    mysql -u root -p

    查看有哪些database:

    show databases;    //不要掉了;分号

    新建database:

    create database sql_hive;

    再修改hive的配置文件hive-site.xm:

                    <property>
                        <name>javax.jdo.option.ConnectionURL</name>
                        <value>jdbc:mysql://Ubuntu-1:3306/sql_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>root</value>
                    </property>
                    <property>
                        <name>javax.jdo.option.ConnectionPassword</name>
                        <value>root</value>
                    </property>
                    <property>
                        <name>hive.querylog.location</name>
                        <value>/usr/local/hive-0.14.0/tmp</value>
                    </property>
                    <property>
                        <name>hive.exec.local.scratchdir</name>
                        <value>/usr/local/hive-0.14.0/tmp</value>
                    </property>
                    <property>
                        <name>hive.downloaded.resources.dir</name>
                        <value>/usr/local/hive-0.14.0/tmp</value>
                   </property>

    6,将mysql中的mysql-connector-java-5.1.17.jar上传到hive的lib目录下

    我在mysql的文件中没有找到该目录,所以直接上传的

    7,启动Hive

    ./hive <==>等价于
    ./hive --service cli

    报错:

    Caused by: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure

    The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.

     

    报错原因:

    未开启mysql的3306端口进行远程访问

    解决办法:

    1,查看3306端口是否正常

    netstat -an | grep 3306

    现在的3306端口绑定的IP地址是本地的127.0.0.1

     2,修改Mysql配置文件

     vi /etc/mysql/mysql.conf.d/mysqld.cnf

    找到

    bind-address            = 127.0.0.1

    前面加#注释掉

    3,重启Mysql

    /etc/init.d/mysql restart

    4,再次查看端口信息

    netstat -an | grep 3306

    5,

     telnet 192.168.22.131 3306

    6,开启hive

    成功

  • 相关阅读:
    CodeForces 706C Hard problem
    CodeForces 706A Beru-taxi
    CodeForces 706B Interesting drink
    CodeForces 706E Working routine
    CodeForces 706D Vasiliy's Multiset
    CodeForces 703B Mishka and trip
    CodeForces 703C Chris and Road
    POJ 1835 宇航员
    HDU 4907 Task schedule
    HDU 4911 Inversion
  • 原文地址:https://www.cnblogs.com/huxinga/p/7518123.html
Copyright © 2011-2022 走看看