hive0.11.0/hadoop1.2.1/hbase0.94.15整合

来源:互联网 发布:淘宝客入口在哪里 编辑:程序博客网 时间:2024/06/14 06:41

工作在假设已经正确配置安装了Hadoop和Hbase的前提下进行。

一、安装Hive

从官网下载Hive-0.11.0.tar.gz

1,解压

2,设置/etc/profile:

exportHIVE_HOME=/home/hadoopuser/hive-0.11.0

exportHIVE_CONF_DIR=/home/hadoopuser/hive-0.11.0/conf

export PATH=$PATH:$HIVE_HOME/bin

3,进入HIVE_HOME运行bin/hive 出现hive shell 命令行说明安装成功。


二、安装MySql

1,从官网下载并安装MySql,用命令mysqladmin password [New Password] -u root -p [Old Password] 修改root用户密码,[Old Password]在Linux的Root用户HOME下的.mysql_secret文件里

2, 为hive建立相应的mysql账号:

进入mysql: mysql –u root –p

mysql> create user 'hive'@’localhost’identified by '111111';

Query OK, 0 rows affected (0.00 sec)

mysql> GRANT ALL PRIVILEGES ON *.* TO 'hive'@'localhost'IDENTIFIED BY '111111' WITH GRANT OPTION;

Query OK, 0 rows affected (0.00 sec)

[url=]mysql>[/url] flush privileges;

Query OK, 0rows affected (0.00 sec)

mysql> exit

如果要为远程访问MySql的电脑设置权限,就用:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'10.200.%' IDENTIFIED BY '111111' WITH GRANT OPTION;

这里是为10.200的ip段设置了访问权限

3,     从客户端用hive账号登陆mysql

mysql –u hive -p

4,    建立hive的元数据库

mysql>create database hive;

5,    mysql中保存了hive的元数据信息,包括表的属性、桶信息和分区信息等,以hive帐号登陆hive查看元数据信息


三、配置Hive

在Hive安装目录的conf目录下,将hive-default.xml.template复制一份命名为:hive-site.xml

 设置以下内容,配置上mysql数据连接、驱动、用户名和密码

<property>

  <name>hive.metastore.local</name>

  <value>false</value>

</property>

<property>

  <name>javax.jdo.option.ConnectionURL</name>

  <value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true</value>

</property>

<property>

  <name>javax.jdo.option.ConnectionDriverName</name>

  <value>com.mysql.jdbc.Driver</value>

</property>

<property>

  <name>javax.jdo.option.ConnectionUserName</name>

  <value>hive</value>

</property>

<property>

  <name>javax.jdo.option.ConnectionPassword</name>

  <value>111111</value>

</property>

1,     把mysql的驱动包mysql-connector-java-5.1.15拷贝到Hive安装路径下的lib目录,改驱动包需要在官网下载。

2,    进入bin/hive,没报错说明安装成功


四、hive与hbase的整合(用hive读取hbase的数据)

Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供完整的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。 其优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析。 Hive与HBase的整合功能的实现是利用两者本身对外的API接口互相进行通信,相互通信主要是依靠hive_hbase-handler.jar工具类, 大致意思如图所示:

a)         将文件hbase-0.94.15.jar 与zookeeper-3.4.5.jar拷贝到/home/hadoopuser/hive- 0.11.0/lib文件夹下面

注意:如果hive/lib下已经存在这两个文件的其他版本(例如zookeeper-3.3.1.jar),建议删除后使用hbase下的相关版本

b)        修改hive/conf下hive-site.xml文件,在底部添加如下内容:

<property>

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

<value>/home/hadoopuser/hive-0.11.0/logs</value>

</property>

<property>

<name>hive.aux.jars.path</name>

<value>file:///home/hadoopuser/hive-0.11.0/lib/hive-hbase-handler-0.11.0.jar,file:///home/hadoopuser/hive-0.11.0/lib/hbase-0.94.15.jar,file:///usr/hadoop/hive-0.11.0/lib/zookeeper-3.4.5.jar</value>

</property>

注意:如果hive-site.xml不存在则自行创建,或者把hive-default.xml.template文件改名后使用。

c)         拷贝hbase-0.94.15.jar到所有hadoop节点(包括master)的usr/hadoop/hadoop-1.2.1/lib下。

d)        拷贝home/hadoopuser/hbase-0.94.15/conf下的hbase-site.xml文件到所有hadoop节点(包括master)的usr/hadoop/hadoop-1.2.1/conf下。

注意,如果3,4两步跳过的话,运行hive时很可能出现如下错误:org.apache.hadoop.hbase.ZooKeeperConnectionException:HBase is able to connect to ZooKeeper but the connection closes immediately.
This could be a sign that the server has too many connections (30 is thedefault). Consider inspecting your ZK server logs for that error and
then make sure you are reusing HBaseConfiguration as often as you can. SeeHTable's javadoc for more information. at org.apache.hadoop.
hbase.zookeeper.ZooKeeperWatcher.

e)         启动hive
单节点启动
bin/hive -hiveconf hbase.master=master:60000

f)         集群启动
bin/hive   

注意:如果hive-site.xml文件中没有配置hive.aux.jars.path,则可以按照如下方式启动。hive --auxpath /home/hadoopuser/hive-0.11.0/lib/hive-hbase-handler-0.11.0.jar,/home/hadoopuser/hive/hive-0.11.0/lib/hbase-0.94.15.jar,/home/hadoopuser/hive/hive-0.11.0/lib/zookeeper-3.4.5.jar-hiveconf hbase.master=localhost:60000

g)       创建hbase识别的表
CREATE TABLE hbase_table_1(key int, value string) STORED BY'org.apache.hadoop.hive.hbase.HBaseStorageHandler' WITH SERDEPROPERTIES("hbase.columns.mapping" = ":key,cf1:val")TBLPROPERTIES ("hbase.table.name" = "xyz");

h)       新建hive的数据表

create table pokes(foo int,bar string)row format delimited fields terminated by ',';

i)       批量导入数据

load data local inpath '/home/hadoopuser/1.txt' overwrite into table pokes;

1.txt文件的内容为
1,hello
2,pear
3,world

j)      使用sql导入hbase_table_1

insert overwrite table hbase_table_1 select * from pokes;

k)       查看数据

hive>select * from hbase_table_1;
OK
1 hello
2 pear
3 world


0 0
原创粉丝点击