美文网首页
Hive搭建

Hive搭建

作者: 你韩大爷 | 来源:发表于2019-03-14 16:01 被阅读0次

    Hive搭建

    系统环境:

    • Ubuntu 16
    • Java 8
    • Hadoop 2.7
    • Hive 1.2
    • MySQL

    按照链接安装Java(推荐使用Oracle Java JDK)。

    查看Java所在目录:

    $ whereis java
    

    在/etc/profile文件末尾添加如下内容以配置环境变量JAVA_HOME:

    # JAVA
    export JAVA_HOME=/usr/lib/jvm/java-8-oracle
    export PATH=$PATH:$HOME/bin:$JAVA_HOME/bin
    

    使之立即生效:

    $ source /etc/profile
    

    安装MySQL(注意设置数据库用户及密码):

    $ apt-get install mysql-server
    $ apt install mysql-client
    $ apt install libmysqlclient-dev
    

    安装完后MySQL服务应该是自动启动了的,接下来安装SSH并配置SSH无密码登录,以方便操作:

    $ apt-get install openssh-server
    $ ssh-keygen -t rsa #如果提示root/.ssh/id_rsa already exists,则新创建一个目录,并且指定id_rsa存放到该目录下即可。否则都按回车即可。
    $ cat ./id_rsa.pub >> ./authorized_keys #加入授权
    $ ssh localhost #此时无需输入密码就可以直接登录了
    $ exit #记得退出ssh连接,以继续搭建Hadoop
    

    下载Hadoop并进行配置:

    $ wget https://mirrors.cnnic.cn/apache/hadoop/common/hadoop-2.7.6/hadoop-2.7.6.tar.gz
    $ tar -zxf hadoop-2.7.6.tar.gz -C /usr/local #解压到/usr/local中
    $ cd /usr/local/
    $ mv ./hadoop-2.7.6/ ./hadoop #将文件夹名改为hadoop
    

    在/etc/profile文件末尾添加如下内容以配置环境变量HADOOP_HOME:

    # Hadoop
    export HADOOP_HOME=/usr/local/hadoop
    export PATH=$PATH:/usr/local/hadoop/sbin:/usr/local/hadoop/bin
    

    使之立即生效:

    $ source /etc/profile
    

    输入如下命令来检查Hadoop是否可用,成功则会显示Hadoop版本信息:

    $ hadoop version
    

    下载Hive:

    $ wget http://mirrors.cnnic.cn/apache/hive/hive-1.2.2/apache-hive-1.2.2-bin.tar.gz
    $ tar -zxvf apache-hive-1.2.2-bin.tar.gz -C /usr/local # 解压到/usr/local中
    $ cd /usr/local/
    $ mv apache-hive-1.2.2-bin hive # 将文件夹名改为hive
    

    由于Hive默认使用的不是MySQL数据库,所以需要下载MySQL连接jar包。本文使用的jar包(mysql-connector-java-5.1.45.jar)可以在Maven仓库里面下载。把上述jar包移动到/usr/local/hive/lib目录下即可。

    $ mv mysql-connector-java-5.1.45.jar /usr/local/hive/lib
    

    配置MySQL以满足Hive的需要,首先连接MySQL:

    $ msyql -u root -p
    

    进入MySQL以后进行以下操作,使之适配Hive:

    mysql> create user 'hive_user'@'%' identified by 'hive_pwd'; 这是Hive连接MySQL的用户名和密码,一会儿配置Hive时有用到。(要创建一个新的用户给hive使用,怕原有的用户元数据删除不干净或者有某些配置文件无法删除掉吧)
    mysql> grant all privileges on *.* to 'hive_user'@'%' with grant option; 分配权限
    mysql> flush privileges;
    

    将Hive默认的配置文件复制一份:

    $ cp /usr/local/hive/conf/hive-default.xml.template /usr/local/hive/conf/hive-site.xml
    

    对hive-site.xml中原有内容进行如下修改:

    <property>
      <name>javax.jdo.option.ConnectionURL</name>
        <value>jdbc:mysql://localhost:3306/hive_db?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>hive_user</value>
      <description>Username to use against metastore database</description>
    </property>
    <property>
      <name>javax.jdo.option.ConnectionPassword</name>
        <value>hive_pwd</value>
      <description>password to use against metastore database</description>
    </property>
    

    在hive-site.xml中添加以下内容:

    <property>
      <name>system:java.io.tmpdir</name>
        <value>/usr/local/hadoop/iotmp</value>
      <description/> 
    </property>
    <property>
      <name>system:user.name</name>
        <value>hive_user</value>
    </property>
    

    并创建上述配置中的目录:

    $ mkdir /usr/local/hadoop/iotmp
    

    在/etc/profile文件末尾添加如下内容以配置环境变量HIVE_HOME:

    # Hive
    export HIVE_HOME=/usr/local/hive
    export PATH="$PATH:$HIVE_HOME/bin:$HIVE_HOME/conf"
    

    使之立即生效:

    $ source /etc/profile
    

    在/usr/local/hadoop/etc/hadoop/hadoop-env.sh中进行如下修改以确保Hadoop中的JAVA_HOME可以正常使用:

    # The java implementation to use.
    # export JAVA_HOME=${JAVA_HOME}
    export JAVA_HOME=/usr/lib/jvm/java-8-oracle
    

    启动Hive前必须先启动hdfs:

    $ start-dfs.sh
    

    初始化数据库:

    $  schematool -dbType mysql -initSchema
    

    测试Hive:

    $ hive
    hive> create table a(id int, name string)
        > row format delimited fields terminated by ',';
    OK
    Time taken: 0.808 seconds
    hive> load data local inpath '/home/a.txt' into table a;
    Loading data to table default.a
    Table default.a stats: [numFiles=1, totalSize=18]
    OK
    Time taken: 0.187 seconds
    hive> show tables;
    OK
    a
    Time taken: 0.069 seconds, Fetched: 1 row(s)
    hive> select * from a;
    OK
    1   h
    2   i
    3   v
    4   e
    Time taken: 0.167 seconds, Fetched: 4 row(s)
    hive> dfs -ls /user/hive/warehouse/a;
    Found 1 items
    -rwxr-xr-x   1 root root         18 2018-07-18 00:21 /user/hive/warehouse/a/a.txt   
    

    其中/home/a.txt的内容为:

    1,h
    2,i
    3,v
    4,e
    

    实际上细心的读者发现我们只是在上述hive-site.xml配置文件中指定了hive存放元数据的数据库为hive_db,但是并没有创建该数据库,而且上一步骤中测试hive的时候并没有指定使用该数据库。实际上使因为上一步骤中使用了默认的数据库default。
    再来回顾一下hive:Hive是一种用类SQL语句来协助读写、管理那些存储在分布式存储系统上大数据集的数据仓库软件。
    也即是我们以后使用hive的时候基本都是在Hive命令行(Hive Command Line)中进行的,而不会再回到mysql中进行操作,二者互不冲突的。
    接下来通过操作加深理解:

    $ hive
    hive> show databases;
    OK
    default
    Time taken: 0.009 seconds, Fetched: 1 row(s)
    hive> use default;
    OK
    Time taken: 0.012 seconds
    hive> show tables;
    OK
    a
    Time taken: 0.018 seconds, Fetched: 1 row(s)
    hive> create database hive_db;
    OK
    Time taken: 0.289 seconds
    hive> show databases;
    OK
    default
    hive_db
    Time taken: 0.018 seconds, Fetched: 2 row(s)
    hive> use hive_db;
    OK
    Time taken: 0.011 seconds
    hive> show tables;
    OK
    Time taken: 0.028 seconds
    hive> 
    

    所以以后在存储数据以及查看数据的时候记得先进入hive命令行中,使用指定的hive_db数据库,再进行操作:

    hive> use hive_db;
    

    Hive搭建完成,如果搭建过程中有任何问题,可以参考那些年我们踩过的Hive坑

    相关文章

      网友评论

          本文标题:Hive搭建

          本文链接:https://www.haomeiwen.com/subject/cyhcmqtx.html