Hbase
2016-12-13 18:43
169 查看
Hbase介绍
Hbase采用Master/Slave模式搭建集群,由以下类型节点组成:- HMaster
- HRegionServer
- Zookeeper
底层数据存储在hdfs中,总体结构如下:
使用案例
普通Java API连接Hbase集群Configuration configuration = new Configuration(); configuration.set("hbase.zookeeper.quorum", "zookeeper服务器地址,多台机器使用逗号,分隔"); configuration.set("hbase.zookeeper.property.clientPort","端口号,默认2181")); configuration.set("zookeeper.znode.parent", "操作的根目录"); return new HTable(configuration,tableName);//表名称
HTable对象有对应的增加、删除、查询方法,一般都是根据rowkey进行查询。
基于MR写HBase
<action name="mr_writeHbase"> <map-reduce> <job-tracker>${jobTracker}</job-tracker> <name-node>${nameNode}</name-node> <prepare> <delete path=""/> </prepare> <job-xml>${commonPath}/mr-job.xml</job-xml> <configuration> <property> <name>mapred.job.queue.name</name> <value>${queueName}</value> </property> <property> <name>com.jd.ebsdi.mapreduce.workflow.name</name> <value>${wf:name()}</value> </property> <property> <name>com.jd.ebsdi.mapreduce.batchnum</name> <value></value> </property> <property> <name>mapreduce.map.class</name> <value>map class</value> </property> <property> <name>mapreduce.reduce.class</name> <value>reduce class</value> </property> <property> <name>mapred.mapoutput.key.class</name> <value>org.apache.hadoop.io.Text</value> </property> <property> <name>mapred.input.dir</name> <value></value> </property> <property> <name>mapreduce.outputformat.class</name> <value>org.apache.hadoop.hbase.mapreduce.TableOutputFormat</value> </property> <property> <name>hbase.mapred.outputtable</name> <value>${tableName}</value> </property> <property> <name>com.jd.ebsdi.import.data.rows</name> <value></value> </property> </configuration> </map-reduce> <ok to="end"/> <error to="fail"/> </action>
主要是TableOutputFormat,看源代码可知道其里面实现的RecordReader其实就是一个table对象,只需要把集群的连接信息封装到配置信息里,然后在reduce类里直接context.write就可以了,主要需要以下几个参数,开发时要具体看一下参数名是否一致,版本之间有差异。
<property> <name>hbase.zookeeper.quorum</name> <value>panda3,panda4,panda5</value> </property> <property> <name>hbase.zookeeper.property.clientPort</name> <value>2181</value> </property> <property> <name>zookeeper.znode.parent</name> <value>/hbase_lions</value> </property> <property> <name>hbase.client.write.buffer</name> <value>0</value> </property> <property> <name>com.jd.hbase.family.name</name> <value>f</value> </property>
注:参数hbase.client.write.buffer设为0是因为htable对象设置有缓存区,0的话就是数据及时更新,这样在一些删除、添加合并操作的场合就不会造成数据混乱。
相关文章推荐
- Facebook's New Real-time Messaging System: HBase to Store 135+ Billion Messages a Month
- Hadoop生态上几个技术的关系与区别:hive、pig、hbase 关系与区别
- 基于HBase Thrift接口的一些使用问题及相关注意事项的详解
- java 字符串内存分配的分析与总结(推荐)
- 如何解决struts2日期类型转换
- java 保留两位小数的几种方法
- Java IO流 文件传输基础
- Eclipse中查看android工程代码出现"android.jar has no source attachment"的解决方案
- 基于Java实现杨辉三角 LeetCode Pascal's Triangle
- hbase shell基础和常用命令详解
- 手把手教你配置Hbase完全分布式环境
- 实战:在Java Web 项目中使用HBase
- HBase RowKey设计的那些事
- Spark中将对象序列化存储到hdfs
- HBase基本原理
- HBase中的基本概念
- 【原创】基于分布式存储的开源系统在实时数据库海量历史数据存储项目上的预研
- HBase0.96.x开发使用(一)--安装
- 基于外部ZooKeeper的GlusterFS作为分布式文件系统的完全分布式HBase集群安装指南
- 基于solr实现hbase的二级索引