分享

hbase的查询过程和对hive的映射

杨晓伟 发表于 2016-2-23 14:06:05 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 4 9423
下面是超人学院吴超老师讲的hbase的查询过程以及hive和hbase的映射1.  hbase如何查询出某一条记录

假设有一条查询请求

1.1.  zookeeper中找到region server的地址

代码在执行的时候,会通过HTable建立一个到zk server的连接(通过调用ZKUtil.connect(...)方法)。

读取zk目录/hbase/meta-region-server的值,拿到的是meta表的region server地址。

meta是hbase中的一张表。

根据客户端代码中查询条件的表名称和行键名称,就可以在meta表中按照行键定位到一条记录,根据列名称info:server,找到具体的存放wlan表的特定row key的region server的地址。

客户端代码只需要连接一次zk server即可,会把所有的region对应的region server的信息缓存在客户端。

1.2.  再从region server中查找某条记录

    在每个region server中都有很多的region,通过上面的操作可以定位到某个region。根据查询条件中的列族名称定位到某个HStore。

从该HStore的MemStore中查询KeyValue。如果查找到,则返回客户端找到的记录。

如果没有在MemStore中找到KeyValue,那么会从缓存(当region server启动的时候,会加载每个HFile文件中的meta、fileinfo、data index、meta index到内存中)中查找。

首先从meta里面的bloom filter判断。如果有,那么直接到磁盘中去找该HFile的data block。找到后,返回客户端找到的记录。

如果表没有启动bloom filter或者从HFile中没有找到,会从data index的ROOT-LEVEL的索引中查找。如果找到的话,会加载HFile的data block,返回客户端找到的记录。

如果在ROOT-LEVEL中没有找到,从磁盘文件加载intermediate-level和leaf-level的索引,继续查找。找到的话,加载HFile的data block。如果没有找到,返回客户端说没有找到。

1,在hive的lib中执行
hive --auxpath /usr/local/hive-0.14.0/lib/hive-hbase-handler-0.14.0.jar,/usr/local/hive-0.14.0/lib/zookeeper-3.4.5.jar -hiveconf hbase.master=192.168.128:60000  

-hiveconf hbase.zookeeper.quorum=192.168.2.128,192.168.2.129,192.168.2.130

2,建立hive和hbase的映射关系

CREATE EXTERNAL TABLE hbase_table_1(key string, value string)STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,cf:allinfo") TBLPROPERTIES("hbase.table.name" = "tablename");
2.1  hbase到hive;映射成功后可以查询映射表。首先hbase要存在被映射的表

2.2 hive到hbase插入数据

1,首先在hbase中存在被插入的表,

2,如果没有建立映射关系要建立映射,方法如上

3,创建一张中间表t1

4,将数据加载到中间表

      load data local inpath '/root/1.txt' overwrite into table t1;

5,将数据插入映射表中

       insert overwrite table hbase_table select * from t1;
这时候数据从数据文件加载到中间表t1,映射表hbase_table作为hive的表可以从其他表的加载进来数据(t1),
hbase_table表映射加载到hbase中的表了






已有(4)人评论

跳转到指定楼层
Pengjx2015 发表于 2016-2-24 13:43:19
你报了超人学院的大数据培训吗?
回复

使用道具 举报

a530491093 发表于 2016-3-1 10:41:51
你报了超人学院的大数据培训吗?    +1
   希望楼主能回答下,谢谢!
回复

使用道具 举报

杨晓伟 发表于 2016-3-1 10:50:17
是的,我在超人学院培训过
回复

使用道具 举报

杨晓伟 发表于 2016-3-1 10:52:50
a530491093 发表于 2016-3-1 10:41
你报了超人学院的大数据培训吗?    +1
   希望楼主能回答下,谢谢!

是的,培训过
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条