Hive搭建(单机版)

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坑

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值