zoukankan      html  css  js  c++  java
  • Apache Hive 安装文档

    简介:

    Apache hive 是基于 Hadoop 的一个开源的数据仓库工具,可以将结构化的数据文件映射为一张数据库表,

    并提供简单的sql查询功能,将 SQL 语句转换为 MapReduce 任务执行。

    Apache hive 数据库仓库工具管理着两类数据:MetaData ( 这里我们存储在远程 MySQL DataBase 中 )、Data 存储在 HDFS 之上!

    一、MySQL

    # http://www.cnblogs.com/wangxiaoqiangs/p/5336048.html

    # 我是安装在了 master.hadoop 上,该数据库是为了保存 Hive 的元数据信息,可以随意安装在别处!

    mysql > create database hive_metadb;
    mysql > grant all on hive_metadb.* to hive@localhost identified by 'hive' with grant option;
    mysql > flush privileges;

    # 为 hive 创建数据库、用户,并授权。测试使用 hive 用户能成功登录 MySQL,注意:% 不包括 localhost

    二、Hive

    1、下载、安装

    shell > wget https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-5.1.41.tar.gz
    shell > wget http://mirror.bit.edu.cn/apache/hive/stable-2/apache-hive-2.1.1-bin.tar.gz
    
    shell > tar zxf apache-hive-2.1.1-bin.tar.gz -C /usr/local
    
    shell > tar zxf mysql-connector-java-5.1.41.tar.gz
    shell > cp mysql-connector-java-5.1.41/mysql-connector-java-5.1.41-bin.jar /usr/local/apache-hive-2.1.1-bin/lib/

    # 复制 MySQL 驱动包

    2、设置环境变量

    shell > vim /etc/profile
    
    PATH=$PATH:/usr/local/mysql-5.6.37/bin:/usr/local/hadoop-2.8.1/bin:/usr/local/apache-hive-2.1.1-bin/bin
    
    shell > source /etc/profile

    3、编辑配置文件

    shell > cd /usr/local/apache-hive-2.1.1-bin

    # 修改 hive-env.sh

    shell > cp conf/hive-env.sh.template conf/hive-env.sh
    shell > vim conf/hive-env.sh
    
    HADOOP_HOME=/usr/local/hadoop-2.8.1

    # 修改 hive-site.xml

    shell > cp conf/hive-default.xml.template conf/hive-site.xml
    shell > vim conf/hive-site.xml
    
        <property>
            <name>hive.metastore.warehouse.dir</name>
            <value>/user/hive/warehouse</value>
        </property>
    
        <property>
            <name>system:java.io.tmpdir</name>
            <value>/tmp/hive/jobs</value>
        </property>
    
        <property>
            <name>system:user.name</name>
            <value>${user.name}</value>
        </property>
        
        <property>
            <name>hive.exec.scratchdir</name>
            <value>/tmp/hive</value>
        </property>
    
        <property>
            <name>javax.jdo.option.ConnectionDriverName</name>
            <value>com.mysql.jdbc.Driver</value>
        </property>
    
        <property>
            <name>javax.jdo.option.ConnectionURL</name>
            <value>jdbc:mysql://localhost:3306/hive_metadb</value>
        </property>
    
        <property>
            <name>javax.jdo.option.ConnectionUserName</name>
            <value>hive</value>
        </property>
    
        <property>
            <name>javax.jdo.option.ConnectionPassword</name>
            <value>hive</value>
        </property>
    
    # hive.metastore.warehouse.dir           hive 数据存储目录
    # system:java.io.tmpdir
    # system:user.name                       这两个变量定义一下,我也不大清楚怎么回事
    # hive.exec.scratchdir                   hive 临时文件目录
    # javax.jdo.option.ConnectionDriverName  数据库驱动类型
    # javax.jdo.option.ConnectionURL         数据库实例链接
    # javax.jdo.option.ConnectionUserName    数据库连接用户
    # javax.jdo.option.ConnectionPassword    数据库连接密码

    4、日志配置文件

    shell > mkdir logs
    shell > cp conf/hive-log4j2.properties.template conf/hive-log4j2.properties
    shell > vim conf/hive-log4j2.properties
    
    property.hive.log.level = INFO
    property.hive.root.logger = DRFA
    property.hive.log.dir = /usr/local/apache-hive-2.1.1-bin/logs
    property.hive.log.file = hive.log
    property.hive.perflogger.log.level = INFO

    # 指定一下日志存放目录

    三、初始化数据表

    shell > schematool -initSchema -dbType mysql

    # 初始化数据表

    mysql > use hive_meta;
    mysql > show tables;
    +---------------------------+
    | Tables_in_hive_meta       |
    +---------------------------+
    | AUX_TABLE                 |
    | BUCKETING_COLS            |
    | CDS                       |
    | COLUMNS_V2                |
    | COMPACTION_QUEUE          |
    | COMPLETED_COMPACTIONS     |
    | COMPLETED_TXN_COMPONENTS  |
    | DATABASE_PARAMS           |
    | DBS                       |
    | DB_PRIVS                  |
    | DELEGATION_TOKENS         |
    | FUNCS                     |
    ...

    # 可以看到生成了好多表
    hadoop shell > hdfs dfs -mkdir /tmp
    hadoop shell > hdfs dfs -mkdir /user/hive/warehouse
    hadoop shell > hdfs dfs -chmod a+w /tmp
    hadoop shell > hdfs dfs -chown -R hive /user/hive
    hadoop shell > hdfs dfs -chmod a+w /user/hive/warehouse

    # 实现创建好这些目录,并给相应的权限,否则 hive 将启动失败

    四、客户端访问 hive

    shell > hive
    
    hive > show databases;
    OK
    default
    Time taken: 1.139 seconds, Fetched: 1 row(s)
    
    hive > quit;

    五、hive2

    # 官方文档:https://cwiki.apache.org/confluence/display/Hive/Setting+Up+HiveServer2

    1、启动 hive2

    shell > hiveserver2 > /dev/null 2>&1 &

    2、beeline 连接 hive2

    shell > beeline -u jdbc:hive2://master.hadoop:10000 -n hive
    
    0: jdbc:hive2://master.hadoop:10000> show databases;
    +----------------+--+
    | database_name  |
    +----------------+--+
    | default        |
    +----------------+--+
    1 row selected (1.771 seconds)
    
    0: jdbc:hive2://master.hadoop:10000> !exit
    Closing: 0: jdbc:hive2://master.hadoop:10000

    # 如果不以 hadoop 身份连接 hive,会由于权限不足无法创建数据存放目录 (可以事先手动创建、授权后操作)
    # 访问 http://192.168.1.25:10002 查看 WEB 展示的一些信息

    # 基本就这样吧!

    报错管理:

    1、beeline 连接报错

    17/05/25 17:35:18 [main]: WARN jdbc.HiveConnection: Failed to connect to master.hadoop:10000
    Error: Could not open client transport with JDBC Uri: jdbc:hive2://master.hadoop:10000: Failed to open new session: java.lang.RuntimeException: org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.security.authorize.AuthorizationException): User: root is not allowed to impersonate anonymous (state=08S01,code=0)

    解决方法:

    hadoop shell > vim etc/hadoop/core-site.xml
    
        <property>
            <name>hadoop.proxyuser.root.hosts</name>
            <value>*</value>
        </property>
    
        <property>
            <name>hadoop.proxyuser.root.groups</name>
            <value>*</value>
        </property>

    # 同步配置文件、重启集群,不过我感觉这不是正确的解决方法,虽然可以解决。

  • 相关阅读:
    LVS DR模式的简单应用
    Linux新加硬盘如何识别 分区 持续挂载
    13周作业
    12周作业
    2次月考
    10周作业
    9周作业
    8周作业
    7周作业
    6周作业
  • 原文地址:https://www.cnblogs.com/wangxiaoqiangs/p/6709672.html
Copyright © 2011-2022 走看看