这一篇博文是【大数据技术●降龙十八掌】系列文章的其中一篇,点击查看目录:大数据技术●降龙十八掌
系列文章:
:【十八掌●武功篇】第八掌:HBase之基本概念
【十八掌●武功篇】第八掌:HBase之Shell
【十八掌●武功篇】第八掌:HBase之基本操作Java API
【十八掌●武功篇】第八掌:HBase之过滤器总结
【十八掌●武功篇】第八掌:HBase之性能调优
【十八掌●武功篇】第八掌:HBase之安装与集成
1、 版本选择
选择:hbase-0.98.6-cdh5.3.6.tar.gz,CDH版本5.3.6的HBase0.98.6版本
2、 安装要求
(1) 要有Hadoop集群。因为Hbase是运行在Hadoop上的,所以必须已经安装好了Hadoop。
(2) 要有Zookeeper集群。因为HBase是使用Zookeeper来进行协同管理的。
(3) 最好使用JDK1.7,官网上推荐使用JDK1.7,因为虽然可以跑在JDK1.8上,但是没有进行严格的测试。
3、 解压HBase
[hadoop@bigdata-51cdh software]$ tar -zxf /opt/software/hbase-0.98.6-cdh5.3.6.tar.gz -C /opt/modules/
将HBase解压到/opt/modules目录下。
4、 配置HBase
(1) 配置hbase-env.sh
hbase-env.sh文件配置HBase的一些环境变量的设置
● 配置JAVA_HOME
export JAVA_HOME=/opt/modules/jdk1.7.0_67
● 配置HBASE_CLASSPATH
export HBASE_CLASSPATH=/opt/modules/hadoop-2.5.0-cdh5.3.6/etc/hadoop
这个需要配置的是Hadoop的配置文件路径。
● 配置HBASE_MANAGES_ZK
export HBASE_MANAGES_ZK=false
这个是配置是否使用HBase自带的Zookeeper,我们一般不使用自带的而是使用自己的Zookeeper集群,所以这里配置为false。
(2) 配置hbase-site.xml
● hbase.rootdir
hbase.rootdir是指定HBase存储数据所在的HDFS上的路径。
<property>
<name>hbase.rootdirname>
<value>hdfs://bigdata-51cdh.chybinmy.com:8020/hbasevalue>
property>
● hbase.cluster.distributed
hbase.cluster.distributed是配置HBase是否是集群模式运行,false是本地模式,运行在一个JVM进程中,true时HBase是运行在多个JVM进程中。
<property>
<name>hbase.cluster.distributedname>
<value>truevalue>
property>
● hbase.zookeeper.property.datadir
指定HBase使用的Zookeeper上节点的数据路径。
<property>
<name>hbase.zookeeper.property.dataDirname>
<value>/hbasevalue>
property>
● hbase.zookeeper.quorum
指定HBase使用的Zookeeper集群地址
<property>
<name>hbase.zookeeper.quorumname>
<value>bigdata-senior01.chybinmy.com:2181,bigdata-senior02.chybinmy.com:2181,bigdata-senior03.chybinmy.com:2181value>
property>
(3) 配置reginservers
指定HBase数据存储在哪些机器上,就是RegionServers节点的机器名,一行一个。
(4) 配置backup-masters
指定HBase Master节点的备份节点是哪些,就是备份节点的机器名,一行一个。
[hadoop@bigdata-51cdh hbase-0.98.6-cdh5.3.6]$ bin/start-hbase.sh
启动HBase后,有两个进程:
[hadoop@bigdata-51cdh hbase-0.98.6-cdh5.3.6]$ jps
3301 ResourceManager
3151 SecondaryNameNode
3402 NodeManager
3830 RunJar
25338 Jps
25127 HMaster
2969 DataNode
2872 NameNode
25255 HRegionServer
3752 RunJar
HMaster是Master节点进程。
HRegionServer是RegionServer节点进程。
Web界面地址端口号是:60010
列族 | ||
---|---|---|
RowKey | 列标签1 | 列标签2 |
rowkey001 | name | cityid |
(1) 修改hue.ini文件
[hadoop@bigdata-51cdh conf]$ cd /opt/modules/hue-3.7.0-cdh5.3.6/desktop/conf/
[hadoop@bigdata-51cdh conf]$ vim hue.ini
(2) 修改HBase节点的配置
[hbase]
# 配置HUE连接Hbase使用的Thrift服务器
hbase_clusters=(Cluster|bigdata-51cdh.chybinmy.com:9090)
#HBase配置目录,HUE读取这些配置感知HBase
hbase_conf_dir=/opt/modules/hbase-0.98.6-cdh5.3.6/conf
[hadoop@bigdata-51cdh conf] cd/opt/modules/hbase−0.98.6−cdh5.3.6/[hadoop@bigdata−51cdhhbase−0.98.6−cdh5.3.6] bin/hbase-daemon.sh start thrift
启动后可以看到ThriftServer进程。
查看9090端口状态是否监控正常。
[hadoop@bigdata-51cdh hbase-0.98.6-cdh5.3.6]$ netstat -tlnup | grep 9090
nohup /opt/modules/hue-3.7.0-cdh5.3.6/build/env/bin/supervisor > hive_run.log 2>&1 &
访问8888端口的HUE Web页面,转到HBase菜单,可以看到HBase中的表。
(1) 拷贝Hive的依赖包
将Hive lib目录下的hive-hbase-handler-1.0.1.jar文件拷贝到hbase 的lib目录下。
[centos@hadoop1 ~]$ cp /data/sysdir/hive-1.0.0/lib/hive-hbase-handler-1.0.0.jar /data/sysdir/hbase-1.1.2/lib/
(2) 拷贝HBase的依赖包
将hbase的lib目录下的所有.jar包拷贝到hive的lib目录下。
[centos@hadoop1 sysdir]$ cp /data/sysdir/hbase-1.1.2/lib/*.jar /data/sysdir/hive-1.0.0/lib/
(3) Hive中创建外部表
在Hive创建表一个外部表,
create external table news_content(rowkey string,content string)
row format serde "org.apache.hadoop.hive.hbase.HBaseSerDe"
stored by "org.apache.hadoop.hive.hbase.HBaseStorageHandler"
with serdeproperties("hbase.columns.mapping"=":key,cf_content:content") tblproperties("hbase.table.name"="default:TemplateNewsContent");
对应的HBase表结构为:
hbase(main):001:0> desc 'TemplateNewsContent'
Table TemplateNewsContent is ENABLED
TemplateNewsContent
COLUMN FAMILIES DESCRIPTION
{NAME => 'cf_content', DATA_BLOCK_ENCODING => 'NONE', BLOOMFILTER => 'NONE', REPLICATION_SCOPE => '0', VERSIONS => '3', COMPRESSION => 'NONE', MIN_VERSIONS => '0', TTL => '
FOREVER', KEEP_DELETED_CELLS => 'FALSE', BLOCKSIZE => '65536', IN_MEMORY => 'false', BLOCKCACHE => 'false'}
表名为:’TemplateNewsContent’,列族名为cf_content,有一个列标签为content。
(4) 在hive中查询hbase的数据
hive> select rowkey from news_content limit 100;
这样就可以在hive中查询hbase中的数据了,这里要求hbase中的数据可以表示为二维表的形式。