• CentOS6安装hive-2.1.1


    hive

      这里简单说明一下,好对大家配置hive有点帮助。hive是建立在hadoop上的,当然,你如果只搭建hive也没用什么错。说简单一点,hadoop中的mapreduce调用如果面向DBA的时候,那么问题也就显现了,因为不是每个DBA都能明白mapreduce的工作原理,如果为了管理数据而需要学习一门新的技术,从现实生活中来说,公司又需要花钱请更有技术的人来了。

      开个玩笑,hadoop是为了存储数据和计算而推广的技术,而和数据挂钩的也就属于数据库的领域了,所以hadoop和DBA挂钩也就是情理之中的事情,在这个基础之上,我们就需要为了DBA创作适合的技术。

      hive正是实现了这个,hive是要类SQL语句(HiveQL)来实现对hadoop下的数据管理。hive属于数据仓库的范畴,那么,数据库和数据仓库到底有什么区别了,这里简单说明一下:数据库侧重于OLTP(在线事务处理),数据仓库侧重OLAP(在线分析处理);也就是说,例如mysql类的数据库更侧重于短时间内的数据处理,反之。

    无hive:使用者.....->mapreduce...->hadoop数据(可能需要会mapreduce)

    有hive:使用者...->HQL(SQL)->hive...->mapreduce...->hadoop数据(只需要会SQL语句)

    安装hive

    1.安装在hadoop的namenode上,拷贝安装文件到linux中/usr/local/hive/apache-hive-2.1.1-bin.tar.gz

    解压:

    tar –zxvf apache-hive-2.1.1-bin.tar.gz

    修改文件名

    mv apache-hive-2.1.1-bin hive-2.1.1

    2.配置环境变量

    vi /etc/profile

    编辑(i  进入编辑模式,添加如下信息 ESC 退出编辑模式 :wq   保存并退出   :q!  退出不保存)

    #hive
    
    export HIVE_HOME=/usr/local/hive/hive-21.1
    
    export PATH=$PATH:$HIVE_HOME/bin

    保存后使其生效:

    source /etc/profile

    测试是否安装成功

    执行

    hive --version

    安装mysql作为hive的Metastore

    首先检查mysql是否已安装:

    rpm -qa | grep -i mysql

    结果:

    mysql-libs-5.1.71-1.el6.x86_64

    删除已安装的mysql

    yum -y remove mysql-libs*

    解压安装MySQL                              

    tar xvf MySQL-5.5.49-1.linux2.6.x86_64.rpm-bundle.tar
    
    
    
    rpm -ivh MySQL-server-5.5.49-1.linux2.6.x86_64.rpm
    
    rpm -ivh MySQL-devel-5.5.49-1.linux2.6.x86_64.rpm
    
    rpm -ivh MySQL-client-5.5.49-1.linux2.6.x86_64.rpm

     

    启动mysql

    service mysql start

    首次安装时,默认密码为空,可以使用如下命令修改root密码

    mysqladmin -u root  password mypassword

    mypassword 为你设定的新密码

    登录mysql

    mysql -u root –p

     

    rpm包安装的MySQL是不会安装/etc/my.cnf文件的,解决方法,只需要复制/usr/share/mysql目录下的my-huge.cnf 文件到/etc目录,并改名为my.cnf即可

    cp /usr/share/mysql/my-huge.cnf /etc/my.cnf

     

    mysql默认不可以远程访问,设置远程访问

    --GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'WITH GRANT OPTION;

    上面这句远程访问不需要密码,如果需要密码使用下面这句

    GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'IDENTIFIED BY 'root' WITH GRANT OPTION;

     

    使权限生效:

    FLUSH PRIVILEGES;

     

    设置etc/my.cnf文件,使binlog_format=mixed

    vi etc/my.cnf

    将注释掉的binlog_format=mixed这一行前面的注释去掉然后保存,重启mysql即可

    service mysql restart

    配置hive

    1.在hdfs中新建目录/user/hive/warehouse

    hdfs dfs –mkdir /tmp
    
    hdfs dfs –mkdir /user
    
    hdfs dfs –mkdir /user/hive
    
    hdfs dfs –mkdir /user/hive/warehouse
    hadoop fs -chmod g+w /tmp
    
    hadoop fs -chmod g+w /user/hive/warehouse

    2.将mysql的驱动jar包mysql-connector-java-5.1.7-bin.jar拷入hive的lib目录下面

    复制mysql的驱动程序到hive/lib下面(这里已经拷贝好了)

    3.进入hive的conf目录下面复制一下hive-default.xml.template名子命名为:hive-site.xml

    cp hive-default.xml.template hive-site.xml
    <property>
    
        <name>javax.jdo.option.ConnectionURL</name>
    
        <value>jdbc:mysql://192.168.188.1: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>root</value>
    
        <description>Username to use against metastore database</description>
    
      </property>
    
      <property>
    
        <name>javax.jdo.option.ConnectionPassword</name>
    
        <value>sa</value>
    
        <description>password to use against metastore database</description>
    
      </property>
    
    
    
      <property>
    
        <name>hive.exec.local.scratchdir</name>
    
        <value>/usr/local/hive/hive-2.1.1/tmp</value>
    
        <description>Local scratch space for Hive jobs</description>
    
      </property>
    
      <property>
    
        <name>hive.downloaded.resources.dir</name>
    
        <value>/usr/local/hive/hive-2.1.1/tmp/resources</value>
    
        <description>Temporary local directory for added resources in the remote file system.</description>
    
      </property>
    
      <property>
    
        <name>hive.querylog.location</name>
    
        <value>/usr/local/hive/hive-2.1.1/tmp</value>
    
        <description>Location of Hive run time structured log file</description>
    
      </property>
    
      <property>
    
        <name>hive.server2.logging.operation.log.location</name>
    
        <value>/usr/local/hive/hive-2.1.1/tmp/operation_logs</value>
    
        <description>Top level directory where operation logs are stored if logging functionality is enabled</description>
    
      </property>

     

    使用schematool 初始化metastore的schema:

    schematool -initSchema -dbType mysql

    运行hive

    Hive shell

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

    错误总结:

    1.在运行hive之前hadoop集群必须开启,否则回报拒绝连接

    2.这里不得不说一下,如果你的 schematool -dbType mysql -initSchema 并没有执行成功怎么办,

    在hive-site.xml中配置的 <value>jdbc:mysql://192.168.188.1:3306/hive?createDatabaseIfNotExist=true</value>

    192.168.188.1:表示的是Windows是ip地址,是要连接Windows下的数据库,在数据库中创建hive数据库。

    hive数据库一定不能存在,如果存在请修改配置将hive变成其他名字-例如hive01,否则会一直初始化不成功。

    hive-site.xml中的配置只需要写下面内容即可,

    <?xml version="1.0" encoding="UTF-8" standalone="no"?>
    <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
    <configuration>
            <property>
                    <name>javax.jdo.option.ConnectionURL</name>
                    <value>jdbc:mysql://192.168.188.1:3306/hive</value>(mysql地址192.168.188.1)
            </property>
    
            <property>
                    <name>javax.jdo.option.ConnectionDriverName</name>(mysql的驱动)
                    <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>123</value>
            </property>
    
            <property>
                    <name>hive.metastore.schema.verification</name>
                    <value>false</value>
            </property>
    </configuration>
    
    

    出现HiveMetaException异常,有可能配置数据库写错了,我的是ip地址写错了。

  • 相关阅读:
    剑指OFFER----面试题17- 打印从1到最大的n位数
    剑指OFFER----面试题16. 数值的整数次方
    剑指OFFER----面试题15. 二进制中1的个数
    剑指OFFER----面试题14- II. 剪绳子II
    07 多层if判断
    08 while循环
    06 if 流程控制
    03 身份运算符、逻辑运算符
    04 位运算符、运算符优先级
    02 赋值运算符、成员运算符
  • 原文地址:https://www.cnblogs.com/pigdata/p/10305579.html
Copyright © 2020-2023  润新知