文档章节

Hive HBase 整合

哈鼎
 哈鼎
发布于 2014/10/29 16:56
字数 1260
阅读 3590
收藏 9
点赞 0
评论 1

环境说明:

l  hadoop2.4.0

l  Zookeeper3.4.6

l  Hbase0.96

l  Hive0.13.1

 

1.  Hive整合HBase原理

HiveHBase整合的实现是利用两者本身对外的API接口互相进行通信,相互通信主要是依靠Hive安装包\apache-hive-0.13.1-bin\lib\hive-hbase-handler-0.9.0.jar工具类,它负责HbaseHive进行通信的。

HiveHBase通信原理如下图:

2.  Hive的安装

Step01:上传apache-hive-0.13.1-binLinux目录下

说明:

  1. 这里使用的是最新版本稳定版,下载:http://mirrors.hust.edu.cn/apache/hive/

  2. 使用远程ftp工具上传到Linux下的 /long/home/software目录下

Step02:解压到安装目录下:

    cd /home/long/software

       #切换到root用户:

    su

    password

       #创建目录

    mkdir -p /usr/share/hive

       #解压到安装目录

    tar -zxvf apache-hive-0.13.1-bin.tar.gz -C /usr/share/hive

       #更改用户

    chown -R long:long /usr/share/hive

       #切换回来

    su long

    cd /usr/share/hive

    ll

      

Step03:配置环境变量

su do vi /etc/profile

编辑如下:

# 使之生效

source /etc/profile

Step04:拷贝jar

#删除$HIVA_HOME/lib目录下的的Zookeeperjar

rm -rf $HIVE_HOME/lib/zookeeper*

 

#拷贝生产环境下的Zookeeperjar包到$HIVA_HOME/lib目录下

cp $ZOOKEEPER_HOME/zookeeper-3.4.6.jar $HIVA_HOME/lib

 

Step05修改$HIVE_HOME/conf/hive-site.xml

cd $HIVE_HOME/conf

 

#复制一份出来

cp hive-default.xml.template hive-site.xml

 

#修改hive-site.xml

vi hive-site.mxl

由于文件内容比较多,需要进行查找,查找方式很简单,在命令行模式下输入 ‘/’ 后面跟上需要查找的文本即可找到,如:   / hive.querylog.location

<property>

  <name>hive.querylog.location</name>

  <value>/usr/share/hive/logs</value>

</property>

记得创建logs目录:

mkdir $HIVE_HOME/logs

 

#修改hive.zookeeper.quorum的值:

<property>

  <name>hive.zookeeper.quorum</name>

  <value>long001,long002,long003,long004,long005,long006,long007</value>

</property>

 

Step06在目录$HIVE_HOME/bin目录下面,修改文件hive-config.sh

#在最后面增加以下内容:

export JAVA_HOME=/usr/lib/jvm/java7

export HIVE_HOME=/usr/share/hive

export HADOOP_HOME=/usr/share/hadoop/static

 

Step07:修改$HADOOP_HOME/conf/hadoop-env.sh

#增加HADOOP_CLASSPATH

export HADOOP_CLASSPATH=.:$CLASSPATH:$HADOOP_CLASSPATH:$HADOOP_HOME/bin

#记得修改完成以后,要将修改后的文件同步拷贝到其他的节点。

注:如果hadoop-env.sh中没有增加HADOOP_CLASSPATH的话会报下面的错误:

java.lang.NoClassDefFoundError: org/apache/hadoop/hive/ql/CommandNeedRetryException

 

Step07:验证

#在命令行中输入hive

long@long007:/usr/share/hive/conf$ hive

14/10/29 11:18:16 WARN conf.HiveConf: DEPRECATED: hive.metastore.ds.retry.* no longer has any effect.  Use hive.hmshandler.retry.* instead

 

Logging initialized using configuration in jar:file:/usr/share/hive/lib/hive-common-0.13.1.jar!/hive-log4j.properties

#查看当前数据库

hive> show databases;

OK

default

Time taken: 0.03 seconds, Fetched: 1 row(s)

Step08:创建表

hive> use default;

hive> create table student(id string, name string);

创建好表以后,会在hdfs文件系统上产生一个/user/hive/warehouse/student的目录,至此,Hive就安装好了。

3.修改存储引擎为MySQL

为什么要修改存储引擎?

1. metastorehive元数据的集中存放地。metastore默认使用内嵌的derby数据库作为存储引擎。

2. Derby引擎的缺点:一次只能打开一个会话

3. 使用Mysql作为外置存储引擎,多用户同时访问

 

Step01:安装MySQL

我采用在线安装的方式,机器为Ubuntu

# 安装server

sudo apt-get install mysql-server

中间会提示输入root用户密码

# 安装client

sudo apt-get install mysql-client

Step02:启动MySQL服务

mysqld_safe &

Step03:登录数据库

mysql –root –p1234

 

Step04:设置数据库日志格式

set global binlog_format='MIXED';

 

# 创建数据库

create database hive;

# 为long用户授权,可以对hive数据库下的所有内容执行任意操作,在任意位置,root验证密码是admin

mysql> GRANT all ON hive.* TO long@'%' IDENTIFIED BY 'admin';

mysql> flush privileges;        --刷新权限表

 

Step04:上传mysql-connector-java-5.1.20-bin.jar$HIVE_HOME/lib目录下

Step05修改hive的数据库配置信息,修改hive-site.xml文件,修改如下:

<property>

     <name>hive.metastore.warehouse.dir</name>

     <value>/hive</value>

     <description>location of default database for the warehouse</description>

</property>

4.启动Hive

# 以集群的方式启动

hive --auxpath /usr/share/hive/lib/hive-hbase-handler-0.9.0.jar,/usr/share/hive/lib/zookeeper-3.4.6.jar -hiveconf hbase.master=longV007:60000

 

5.创建Hive外部表关联HBase

说明:现在已存在一张HBase’bidask_quote’,现在要创建一张hive的外部表,关联到hbase的表,语句如下:

hive> CREATE EXTERNAL TABLE bidask_quote_hive(key string,ProdCode string,ProdName string,TradingDay string,ExchangeID string,ExchangeInstID string,LastPrice string,PreSettlementPrice string,PreClosePrice string)

STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'

WITH SERDEPROPERTIES ("hbase.columns.mapping" = "info:ProdCode,info:ProdName,info:TradingDay,info:ExchangeID,info:ExchangeInstID,info:LastPrice,info:PreSettlementPrice,info:PreClosePrice ")

TBLPROPERTIES("hbase.table.name" = "bidask_quote"); 

说明:

    * bidask_quote_hivehivebiao

    * "hbase.table.name" = "bidask_quote"hbase中已经存在的表

    * bidask_quote_hive(key string,ProdCode string,string,ProdName string,....)hive表的结构

    * "hbase.columns.mapping" = "info:ProdCode,info:ProdName,info:TradingDay,...)HBase中的列信息,这里现在只有一个列蔟。

 

现在来看一下是否创建成功:

hive> show tables;

 

如果存在我们创建的bidask_quote_hive表,就查询几条数据试试吧

hive> select * from bidask_quote_hive limit 3;

 

 

 

后续还有关于Hive API的操作。

 

 

 

 

 

遇到的错误

错误1

long@long007:/usr/share/hive/bin$ ./hive

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hadoop/hive/ql/CommandNeedRetryException

        at java.lang.Class.forName0(Native Method)

        at java.lang.Class.forName(Class.java:270)

        at org.apache.hadoop.util.RunJar.main(RunJar.java:205)

Caused by: java.lang.ClassNotFoundException: org.apache.hadoop.hive.ql.CommandNeedRetryException

        at java.net.URLClassLoader$1.run(URLClassLoader.java:366)

        at java.net.URLClassLoader$1.run(URLClassLoader.java:355)

        at java.security.AccessController.doPrivileged(Native Method)

        at java.net.URLClassLoader.findClass(URLClassLoader.java:354)

        at java.lang.ClassLoader.loadClass(ClassLoader.java:425)

        at java.lang.ClassLoader.loadClass(ClassLoader.java:358)

        ... 3 more

解决办法:

/usr/share/hadoop/etc/hadoop/hadoop-env.sh里面被增加了HADOOP_CLASSPATH.

设置如下:

export HADOOP_CLASSPATH=$HBASE_HOME/hbase/hbase-0.20.3.jar:$HABSE_HOME/hbase-config:$ZOOKEEPER/zookeeper-3.2.2.jar

将其修改为:

export HADOOP_CLASSPATH=.:$CLASSPATH:$HADOOP_CLASSPATH:$HADOOP_HOME/bin

 

© 著作权归作者所有

共有 人打赏支持
哈鼎
粉丝 4
博文 20
码字总数 7646
作品 0
深圳
加载中

评论(1)

kt431128
kt431128
能讲讲为什么要将hive和hbase整合吗?
HIVE和HBASE之间,主要的区别是什么?

  【IT168 评论】Apache Hive是一个构建在hadoop基础设施之上的数据仓库。通过Hive可以使用HQL语言查询存放在HDFS上的数据。HQL是一种类SQL语言,这种语言最终被转化为Map/Reduce. 虽然Hiv...

中国大数据 ⋅ 05/18 ⋅ 0

HBase 和 Hive 的差别是什么,各自适用在什么场景中?

https://www.zhihu.com/question/21677041/answer/185664626 先放结论:Hbase和Hive在大数据架构中处在不同位置: Hbase主要解决实时数据查询问题 Hive主要解决数据处理和计算问题,一般是配...

chenhao_asd ⋅ 04/24 ⋅ 0

Apache HBase 2.0.0 发布,Hadoop 数据库

Apache HBase 2.0.0 发布了,HBase 2.0.0 是 HBase 的第二个主要版本。 此次更新信息如下: 一个新的区域分配管理器(“AMv2”), 用于配置读取和/或写入路径以运行堆外的装置,以及可选的内...

雨田桑 ⋅ 05/03 ⋅ 0

HBase相对Hive查询速度快的对比

首先Hive的底层首先是MR,是属于批处理处理时间相对较长,不属于实时读写。在其架构上HBase和Hive有很大的区别. 架构介绍: Hive架构 – (1)用户接口主要有三个:CLI,Client 和 WUI。其中最...

jiaozi00_ ⋅ 05/10 ⋅ 0

兑吧:从自建HBase迁移到阿里云HBase实战经验

业务介绍 兑吧集团包含兑吧网络和推啊网络,兑吧网络是一家致力于帮助互联网企业提升运营效率的用户运营服务平台,提供积分商城和媒体运营服务。推啊网络是一家互动式广告平台,经过多年的探...

所在jason ⋅ 06/12 ⋅ 0

中国HBase技术社区第一届MeetUp-HBase2.0研讨圆桌会

HBase Committers&各公司HBase负责人 出席嘉宾(排名不分次序): 封神(HBase Committer,阿里) 天梧(HBase Committer,阿里) 陈恒(HBase Committer,蚂蚁金服) 李钰(HBase PMC,阿里) 王锋(奇...

wenzi0563 ⋅ 06/14 ⋅ 0

中国HBase技术社区第一届meetup入群邀请

各位报名成功的HBase爱好者,请扫描以下微信二维码,加入本次HBase meetup消息通知群,后续会议相关通知,会在群里进行公布,请各位及时关注。 会议地址:北京望京阿里中心B座(各位6号到园区...

wenzi0563 ⋅ 05/31 ⋅ 0

Hadoop、Spark、HBase与Redis的适用性见解

问题导读: 1.你认为Hadoop适用什么场景? 2.Spark适用于什么场景? 3.HBase与 Redis各有什么特点? 最近在网上又看到有关于Hadoop适用性的讨论[1]。想想今年大数据技术开始由互联网巨头走向...

cuiyaonan2000 ⋅ 05/07 ⋅ 0

多位HBase Committer圆桌会,讨论HBase2.0技术变革

HBase Committers&各公司HBase负责人 出席嘉宾(排名不分次序): 封神(HBase Committer,阿里) 天梧(HBase Committer,阿里) 陈恒(HBase Committer,蚂蚁金服) 李钰(HBase PMC,阿里) 王锋(奇...

HBase技术社区 ⋅ 06/21 ⋅ 0

白骑士基于阿里云HBase构建金融风控数据中心的使用实践

白骑士提供专业大数据风控SaaS服务 互联网金融业务经常遭受中介代办、团伙作案、消费者身份冒用、用户多平台申请、薅羊毛、虚假交易等风险问题。白骑士是一家提供专业大数据风控SaaS服务的公...

所在jason ⋅ 05/03 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

tcp/ip详解-链路层

简介 设计链路层的目的: 为IP模块发送和接收IP数据报 为ARP模块发送ARP请求和接收ARP应答 为RARP模块发送RARP请求和接收RARP应答 TCP/IP支持多种链路层协议,如以太网、令牌环往、FDDI、RS-...

loda0128 ⋅ 今天 ⋅ 0

spring.net aop代码例子

https://www.cnblogs.com/haogj/archive/2011/10/12/2207916.html

whoisliang ⋅ 今天 ⋅ 0

发送短信如何限制1小时内最多发送11条短信

发送短信如何限制1小时内最多发送11条短信 场景: 发送短信属于付费业务,有时为了防止短信攻击,需要限制发送短信的频率,例如在1个小时之内最多发送11条短信. 如何实现呢? 思路有两个 截至到当...

黄威 ⋅ 昨天 ⋅ 0

mysql5.7系列修改root默认密码

操作系统为centos7 64 1、修改 /etc/my.cnf,在 [mysqld] 小节下添加一行:skip-grant-tables=1 这一行配置让 mysqld 启动时不对密码进行验证 2、重启 mysqld 服务:systemctl restart mysql...

sskill ⋅ 昨天 ⋅ 0

Intellij IDEA神器常用技巧六-Debug详解

在调试代码的时候,你的项目得debug模式启动,也就是点那个绿色的甲虫启动服务器,然后,就可以在代码里面断点调试啦。下面不要在意,这个快捷键具体是啥,因为,这个keymap是可以自己配置的...

Mkeeper ⋅ 昨天 ⋅ 0

zip压缩工具、tar打包、打包并压缩

zip 支持压缩目录 1.在/tmp/目录下创建目录(study_zip)及文件 root@yolks1 study_zip]# !treetree 11└── 2 └── 3 └── test_zip.txt2 directories, 1 file 2.yum...

蛋黄Yolks ⋅ 昨天 ⋅ 0

聊聊HystrixThreadPool

序 本文主要研究一下HystrixThreadPool HystrixThreadPool hystrix-core-1.5.12-sources.jar!/com/netflix/hystrix/HystrixThreadPool.java /** * ThreadPool used to executed {@link Hys......

go4it ⋅ 昨天 ⋅ 0

容器之上传镜像到Docker hub

Docker hub在国内可以访问,首先要创建一个账号,这个后面会用到,我是用126邮箱注册的。 1. docker login List-1 Username不能使用你注册的邮箱,要用使用注册时用的username;要输入密码 ...

汉斯-冯-拉特 ⋅ 昨天 ⋅ 0

SpringBoot简单使用ehcache

1,SpringBoot版本 2.0.3.RELEASE ①,pom.xml <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.0.3.RELE......

暗中观察 ⋅ 昨天 ⋅ 0

Spring源码解析(八)——实例创建(下)

前言 来到实例创建的最后一节,前面已经将一个实例通过不同方式(工厂方法、构造器注入、默认构造器)给创建出来了,下面我们要对创建出来的实例进行一些“加工”处理。 源码解读 回顾下之前...

MarvelCode ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部