一小时快速搭建 Hive

Hive 的安装配置,比起 hadoop 来简单了许多。

参考这篇可以得到更多细节。

http://note.youdao.com/noteshare?id=ad62dd69f5c66cd616aa41f70789f93c

今天要做的事情,有两件:

  1. 在 Mac 上安装 MySQL ;
  2. 在 Mac 上安装Hive 2.2.0, 并且以安装好的 MySQL 做为 Hive 的 MetaData Store

MySQL 的安装配置:

在 Mac 上安装 MySQL, 其实在前期已经做好了。直接使用 MySQL Workbench 就能访问使用了。

目前的问题集中在,安装好的 MySQL 是以 Root 登录使用的。我们怎么给 Hive 分配一个可以单独使用的账户,方便配置 Hive.

1 增加一个 MySQL 的账户:和 Oracle 的语法一样,

Create User 'HiveAdmin'@'localhost' Identified by 'HiveAdmin' ;

2 为 HiveAdmin 添加一个专门使用的数据库 HiveStore

HiveStore 必须是由 Root 权限创建,Create Database HiveStore

由 Root 将使用 HiveStore 的权限赋给 HiveAdmin :

grant all on HiveStore.* To ‘HiveAdmin’@’localhost’ ;
Flush Privileges;

在Mac 上配置 Hive 服务:

0.在正式的配置 Hive 服务之前,需要做必要的环境设置。

环境变量配置:
Hive 必须要有分布式的存储环境,我们这里用 HDFS 作为 Hive 的分布式环境。

由于我的 Hive 与 Hadoop 都安装在同一台 Mac 笔记本上,Hadoop_Home 已经配置好了, Java_Home也配置好了,只需要配置 Hive_Home 环境变量即可。

打开 ~/.profile, 输入:

HIVE_HOME =/opt/hive/apache-hive-2.2.0-bin
EXPORT HIVE_HOME

当然如果想要直接输入 Hive 就进入 Hive 环境,还需要配置环境变量 PATH HIVE_HOME/bin 目录:

$PATH=$PATH:$HIVE_HOME/bin`
EXPORT $PATH

Hive 对应的 HDFS 文件目录创建:

Hive 的存储文件格式,可以选择文本文件形式,即用文本程序,比如 vi 就可以看到 Hive 表具体的内容,这种格式的文件,是直接存储在 HDFS 的某一个文件目录下面的, 从 HDFS 整体来看,虽然在 namenode 上,Hive 表是存储了一个文件夹,这文件夹下面都是组成表数据的单个文件,但是具体到 data node 上,则是在对应的表文件夹下面,存储了很多分块的小文件,这些小文件依然可用 VI 即时查看。

因此我们要创建一个文件夹,专门用来存储我们的 Hive 对应的总目录,表示这个目录下面的所有文件,都是属于一个 Hive 库的。Hive 数据库,表,分区,在 HDFS 文件系统上来看,就是目录对于文件的文件的关系。一个 Hive 数据库对应一个 HDFS 文件目录,这个 Hive 数据库下面的表,就是对应了 HDFS Hive 库目录下面的文件夹目录。

我创建的 Hadoop HDFS 的基本结构是:
/USER/Lewis

在该目录下面,我还需要搭建一个目录,专门用来存储 Hive 的库对象
/USER/Lewis/Hive/WareHouse

给该目录加上 group 的写入权限:
hdfs dfs -chmod g+w /user/lewis/hive/warehouse

还需要增加一个 /tmp 目录,暂不明了要做什么,等接下来清楚了,再来讲这个作用:
HDFS dfs -mkdir /tmp
HDFS dfs -chmod g+w /tmp

Mac 上的怪现象:

每当我的 Hadoop 没有使用 stop-dfs.sh 正常关掉,在下一次重新使用 start-dfs.sh 启动的时候,都会出现 namenode 连不上的 情况,因此都要重复一遍新建 namenode 的情况:

0.1 删除namenode 存储的目录及其子目录:
rm /tmp/hadoop-lewis/dfs

0.2 重新格式化 namenode :
$:> HDFS namenode -format

0.3 启动 HDFS :
$:> start-dfs.sh

0.4 访问本机 HDFS Name node web 入口:
http://localhost:50070

1 配置 Hive Configuration 文件:

在这一步,我会使用到上面安装好的 MySQL, Hadoop, 以及对应的 HDFS Hive 总目录

而这些使用,就是通过 hive-site.xml ( hive configuration file ) 来实现的:

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
       <property>
               <name>hive.metastore.warehouse.dir</name>
               <value>/user/lewis/hive/warehouse</value>
               <description>
                       HADOOP location for Hive Warehouse
               </description>
       </property>
       <property>
               <name>hive.metastore.local</name>
               <value>false</value>
               <description>
                       if derby used, true here; if other RDBMS used for production,false here
               </description>
       </property>
       <property>        <name>javax.jdo.option.ConnectionURL</name>        <value>jdbc:mysql:/localhost:3306/HiveStore?characterEncoding=UTF-8</value>    
</property>    
<property>        <name>javax.jdo.option.ConnectionDriverName</name>        <value>com.mysql.jdbc.Driver</value>    
</property>    
<property>        <name>javax.jdo.option.ConnectionUserName</name>        <value>HiveAdmin</value>    
</property>    
<property>        <name>javax.jdo.option.ConnectionPassword</name>        <value>HiveAdmin</value>   
 </property>
</configuration>

2 开启 Hive 服务

2.1 Schema 初始化:

Hive 的存储虽然都是在 HDFS 上,但是 Hive 数据仓库对象的定义,都是存储在 MySQL 的 HiveStore 数据库里的。

要使用 Hive 的数据仓库功能,我们必须现在 HiveStore 创建一些基础元数据,用来初始化 Hive.

SchemaTool 就是这么一个工具。

<script type="math/tex" id="MathJax-Element-26"> </script>HIVE_HOME/bin/schematool -dbType -initSchema
将这里的改成 mysql 即可:
$>schematool -dbType mysql -initSchema

Hive 不带 MySQL 的 JDBC 驱动,因此要将正确的 MySQL JDBC 驱动放到 $HIVE_HOME/lib下面

2.2 创建第一个 Hive 表

Hive> Create Table Users( userId int, userName varchar(200))
row format delimited
fields terminated by ‘,’ ;

将本地的数据,加载到 Hive 的表里面去

这里写图片描述

本地的表,一定是符合 Hive 表格式文件的要求:用 , (逗号) 来分割字段:
1,Alex
2,Ken
3,Ford

谢谢阅读与分享,欢迎观众【有关SQL】

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dbLenis

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值