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坑

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,718评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,683评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,207评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,755评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,862评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,050评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,136评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,882评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,330评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,651评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,789评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,477评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,135评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,864评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,099评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,598评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,697评论 2 351

推荐阅读更多精彩内容