【原创】hive搭建

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: 本章节主要介绍两部分内容: 1、hive搭建元数据存放于本地文件系统。 2、hive搭建元数据存放于第三方开源数据库mysql。 两者的定义大致如下: ingle User Mode:此模式连接到一个In-memory的数据库Derby,一般用于Unit Test。
本章节主要介绍两部分内容:
1、hive搭建元数据存放于本地文件系统。
2、hive搭建元数据存放于第三方开源数据库mysql。
两者的定义大致如下:
ingle User Mode:此模式连接到一个In-memory的数据库Derby,一般用于Unit Test。
Multi User Mode:通过网络连接到一个数据库中,是最经常使用到的模式。
区别在于如果你用本地文件系统存放hive元数据的话,那么将不支持多用户并发,简单来讲就是只允许一个用户登录hive查询,另外你再开启一个终端登录hive查询会报错,就如下图所示:
hive> show tables;
FAILED: Error in metadata: javax.jdo.JDOFatalDataStoreException: Failed to start database 'metastore_db', see the next exception for details.
NestedThrowables:
java.sql.SQLException: Failed to start database 'metastore_db', see the next exception for details.
FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask
下面我们开始搭建本地文件系统存放hive的元数据,步骤很简单!
说一下我的hadoop和hbase版本分别是1.0.3和0.92.1。
我要部署的hive版本是0.8.1-bin这个版本。
1、从 http://labs.renren.com/apache-mirror/hive/ 网站下载适合你版本的hive。然后上传到服务器上。我这里就默认放到/root下了。
2、解压hive-0.8.1-bin.tar.gz
[root@hadoop1 ~]# tar zxvf hive-0.8.1-bin.tar.gz
3、在.bash_profile文件里添加hive环境变量
export HIVE_HOME=/root/hive-0.8.1-bin
export PATH=$HIVE_HOME/bin:$PATH
4、将hbase的jar包拷贝到hive的lib目录下,并且将hive原本的jar包移出,拷贝hbase-site.xml文件到hive的conf目录下
[root@hadoop1 ~]# cp /root/hbase/hbase-0.92.1.jar /root/hive-0.8.1-bin/lib/
[root@hadoop1 ~]# cp /root/hbase/hbase-0.92.1-tests.jar /root/hive-0.8.1-bin/lib/
[root@hadoop1 ~]# mv /root/hive-0.8.1-bin/lib/hbase-0.89.0-SNAPSHOT.jar /home
[root@hadoop1 ~]# mv /root/hive-0.8.1-bin/lib/hbase-0.89.0-SNAPSHOT-tests.jar /home
[root@hadoop1 ~]# cp /root/hbase/conf/hbase-site.xml /root/hive-0.8.1-bin/conf
5、将默认的hive-default.xml.template拷贝一份为hive-site.xml文件
[root@hadoop1 ~]# cp hive-0.8.1-bin/conf/hive-default.xml.template hive-0.8.1-bin/conf/hive-site.xml
6、启动hive,什么都不用配置哦!很简单的!
[root@hadoop1 ~]# hive
WARNING: org.apache.hadoop.metrics.jvm.EventCounter is deprecated. Please use org.apache.hadoop.log.metrics.EventCounter in all the log4j.properties files.
Logging initialized using configuration in jar:file:/root/hive-0.8.1-bin/lib/hive-common-0.8.1.jar!/hive-log4j.properties
Hive history file=/tmp/root/hive_job_log_root_201207200921_612921620.txt
hive> show tables;
OK
Time taken: 4.656 seconds
7、测试hive能否正常工作?我们现在hbase中新建一张表,然后插入点数据,最后在hive中关联上hbase里面的表,看看数据是否一致哈!
hbase(main):005:0> create 'xyz','cf1'
0 row(s) in 1.0680 seconds
hbase(main):006:0> put 'xyz','10000','cf1:val','China'
0 row(s) in 0.1260 seconds
hbase(main):007:0> scan 'xyz'
ROW                  COLUMN CELL                                              
10000                column=cf1:val, timestamp=1342748087354, value=China     
1 row(s) in 0.0310 seconds
在hive的shell里执行下面命令来关联hbase中的表
hive> CREATE EXTERNAL TABLE hbase_table_1(key string, value string)
    > STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
    > WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,cf1:val")
    > TBLPROPERTIES ("hbase.table.name" = "xyz");
OK
Time taken: 1.186 seconds
hive> select * from hbase_table_1;
OK
10000   China
Time taken: 0.455 seconds
这样基本就测试可以了哈!
第二部分我会写怎么搭建hive,将它的元数据存放于本机的mysql中。配置就复杂了很多了。
1、解压hive-0.8.1-bin.tar.gz
tar zxvf hive-0.8.1-bin.tar.gz
2、在.bash_profile文件里添加hive环境变量并且让其生效
export HIVE_HOME=/root/hive-0.8.1-bin
export PATH=$HIVE_HOME/bin:$PATH
[root@hadoop1 ~]# source .bash_profile
3、把hbase的jar包copy到hive中
[root@hadoop1 ~]# cp -v hbase/hbase-0.92.1.jar hive-0.8.1-bin/lib/
`hbase/hbase-0.92.1.jar' -> `hive-0.8.1-bin/lib/hbase-0.92.1.jar'
[root@hadoop1 ~]# cp -v hbase/hbase-0.92.1-tests.jar hive-0.8.1-bin/lib/
`hbase/hbase-0.92.1-tests.jar' -> `hive-0.8.1-bin/lib/hbase-0.92.1-tests.jar'
[root@hadoop1 ~]# cp -v hbase/conf/hbase-site.xml hive-0.8.1-bin/conf
`hbase/conf/hbase-site.xml' -> `hive-0.8.1-bin/conf/hbase-site.xml'
[root@hadoop1 ~]# mv hive-0.8.1-bin/lib/hbase-0.89.0-SNAPSHOT.jar /home
[root@hadoop1 ~]# mv hive-0.8.1-bin/lib/hbase-0.89.0-SNAPSHOT-tests.jar /home/
4、修改hive环境hive-config.sh,增加hadoop的安装路径,复制配置文件:
export HADOOP_HOME=/root/hadoop
export HIVE_HOME=/root/hive-0.8.1-bin
[root@hadoop1 ~]# cp hive-0.8.1-bin/conf/hive-default.xml.template hive-0.8.1-bin/conf/hive-site.xml
5、安装mysql-5.5.24,这里相信很多朋友就很熟悉了
安装mysql依赖包,我这里安装系统是把所有的包都安装了,所有这步骤省略!

yum -y install bison gcc gcc-c autoconf automake zlib* libxml* ncurses-devel libtool-ltdl-devel*

mysql需要cmake编译,所以先安装cmake

[root@hadoop1 ~]# wget http://www.cmake.org/files/v2.8/cmake-2.8.6.tar.gz
[root@hadoop1 ~]# tar zxvf cmake-2.8.6.tar.gz
[root@hadoop1 ~]# cd  cmake-2.8.6
[root@hadoop1 ~]# gmake
[root@hadoop1 ~]# make install
下载mysql的安装包,解压并安装
[root@hadoop1 ~]# wget http://dev.mysql.com/get/Downloads/MySQL-5.5/mysql-5.5.24.tar.gz/from/http://mysql.ntu.edu.tw/
建立mysql用户和组,并且建立mysql存放数据的目录/mysql
[root@hadoop1 ~]# /usr/sbin/groupadd mysql
[root@hadoop1 ~]# /usr/sbin/useradd -g mysql mysql
[root@hadoop1 ~]# mkdir /mysql
[root@hadoop1 ~]# chown -R mysql:mysql /mysql
安装mysql
[root@hadoop1 ~]# tar zxvf mysql-5.5.24.tar.gz
[root@hadoop1 ~]# cd mysql-5.5.24
[root@hadoop1 ~]# cmake . -DCMAKE_INSTALL_PREFIX=/opt/mysql -DMYSQL_DATADIR=/mysql -DSYSCONFDIR=/etc/
[root@hadoop1 ~]# make && make install
拷贝mysql默认配置文件
[root@hadoop1 ~]# cp ./support-files/my-medium.cnf /etc/my.cnf
修改my.cnf文件
在[mysqld]段增加:
datadir = /mysql
wait-timeout = 30
max_connections = 512
default-storage-engine = MyISAM
在[mysqld]段修改:
max_allowed_packet = 16M
生产授权表:
[root@hadoop1 ~]# /opt/mysql/scripts/mysql_install_db --user=mysql
开启mysql:
[root@hadoop1 ~]# /opt/mysql/bin/mysqld_safe &
更改密码:
[root@hadoop1 ~]# /opt/mysql/bin/mysqladmin -u root password 123456
测试连接mysql及授权用户登录:
[root@hadoop1 ~]# /opt/mysql/bin/mysql -u root -p123456
mysql> create user
'hive'@'192.168.3.65' identified by 'hivepasswd';
mysql> grant all privileges on *.* to 'hive'@'192.168.3.65' with grant option;
6、修改hive的配置文件hive-site.xml
修改为如下所示:
[root@hadoop1 ~]# more hive-0.8.1-bin/conf/hive-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

    
        hive.metastore.local    
        true    
        controls whether to connect to remove metastore server or open a new metastore server in Hive Client JVM 
 
    
        javax.jdo.option.ConnectionURL    
        jdbc:mysql://192.168.3.65:3306/hive?createDatabaseIfNotExist=true    
        192.168.3.65 JDBC connect string for a JDBC metastore
 
    
        javax.jdo.option.ConnectionDriverName    
        com.mysql.jdbc.Driver    
        Driver class name for a JDBC metastore 
 
    
        javax.jdo.option.ConnectionUserName    
        hive    
        username to use against metastore database 
 
    
        javax.jdo.option.ConnectionPassword    
        hivepasswd    
        password to use against metastore database 
 
7、添加jdbc的jar包:

wget http://ftp.iij.ad.jp/pub/db/mysql/Downloads/Connector-J/mysql-connector-java-5.1.18.tar.gz

tar   vxf  mysql-connector-java-5.1.18.tar.gz

chwon -R hadoop mysql-connector-java-5.1.18/

cp -v  mysql-connector-java-5.1.18/mysql-connector-java-5.1.18-bin.jar  hive/lib/

8、开启hive并测试
[root@hadoop1 ~]# hive
WARNING: org.apache.hadoop.metrics.jvm.EventCounter is deprecated. Please use org.apache.hadoop.log.metrics.EventCounter in all the log4j.properties files.
Logging initialized using configuration in jar:file:/root/hive-0.8.1-bin/lib/hive-common-0.8.1.jar!/hive-log4j.properties
Hive history file=/tmp/root/hive_job_log_root_201207201723_1051702106.txt
hive> show tables;
OK
Time taken: 3.301 seconds
还是关联hbase中的表测试:
hbase(main):002:0> create 'xyz','cf1'
0 row(s) in 1.1120 seconds
hbase(main):003:0> put 'xyz','10000','cf1:val','China'
0 row(s) in 0.2080 seconds
hbase(main):004:0> put 'xyz','11000','cf1:val','Japanese'
0 row(s) in 0.0320 seconds
hbase(main):005:0> scan 'xyz'
ROW                   COLUMN+CELL                                              
 10000                column=cf1:val, timestamp=1342776914297, value=China     
 11000                column=cf1:val, timestamp=1342776933201, value=Japanese  
2 row(s) in 0.0340 seconds
hbase(main):006:0>
在hive中关联此表:
hive> CREATE EXTERNAL TABLE hbase_table_1(key string, value string)
    > STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
    > WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,cf1:val")
    > TBLPROPERTIES ("hbase.table.name" = "xyz");
OK
Time taken: 1.155 seconds
hive> select * from hbase_table_1;
OK
10000   China
11000   Japanese
Time taken: 0.379 seconds
这样基本就OK了哈!顺便看看mysql中的hive库中存放哪些表?

mysql> use hive;
Database changed
mysql> show tables;
+-----------------+
| Tables_in_hive  |
+-----------------+
| BUCKETING_COLS  |
| CDS             |
| COLUMNS_V2      |
| DATABASE_PARAMS |
| DBS             |
| PARTITION_KEYS  |
| SDS             |
| SD_PARAMS       |
| SEQUENCE_TABLE  |
| SERDES          |
| SERDE_PARAMS    |
| SORT_COLS       |
| TABLE_PARAMS    |
| TBLS            |
+-----------------+
14 rows in set (0.00 sec)


 
 
 
相关实践学习
lindorm多模间数据无缝流转
展现了Lindorm多模融合能力——用kafka API写入,无缝流转在各引擎内进行数据存储和计算的实验。
云数据库HBase版使用教程
&nbsp; 相关的阿里云产品:云数据库 HBase 版 面向大数据领域的一站式NoSQL服务,100%兼容开源HBase并深度扩展,支持海量数据下的实时存储、高并发吞吐、轻SQL分析、全文检索、时序时空查询等能力,是风控、推荐、广告、物联网、车联网、Feeds流、数据大屏等场景首选数据库,是为淘宝、支付宝、菜鸟等众多阿里核心业务提供关键支撑的数据库。 了解产品详情:&nbsp;https://cn.aliyun.com/product/hbase &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
12月前
|
存储 缓存 分布式计算
HBase入门指南
HBase是一个开源的非关系型分布式数据库,设计初衷是为了解决大量结构化数据存储与处理的需求
264 0
HBase入门指南
|
11月前
|
SQL 存储 资源调度
Hive初体验
Hive初体验
54 0
|
5月前
|
SQL 存储 分布式计算
Hive精选10道面试题
Hive精选10道面试题
254 3
Hive精选10道面试题
|
11月前
|
SQL 分布式计算 Hadoop
44 Hive简介
44 Hive简介
52 0
|
12月前
|
SQL 存储 分布式计算
HIVE3 深度剖析 (上篇)
HIVE3 深度剖析 (上篇)
|
12月前
|
SQL 分布式计算 DataX
HIVE3 深度剖析 (下篇)
HIVE3 深度剖析 (下篇)
|
SQL 弹性计算 分布式计算
Hive安装(图文并茂)
Hive安装(图文并茂)
239 0
Hive安装(图文并茂)
|
SQL 关系型数据库 MySQL
CDH 搭建_Hive_搭建完成|学习笔记
快速学习 CDH 搭建_Hive_搭建完成
216 0
CDH 搭建_Hive_搭建完成|学习笔记
|
存储 SQL 分布式计算
BigData之Hbase:Hbase数据管理的简介、下载、案例应用之详细攻略
BigData之Hbase:Hbase数据管理的简介、下载、案例应用之详细攻略
BigData之Hbase:Hbase数据管理的简介、下载、案例应用之详细攻略
|
SQL 存储 分布式计算
Hive快速学习指南
Hive数据据仓库了解了解
357 0
Hive快速学习指南
下一篇
无影云桌面