欢迎投稿

今日深度:

Hbase,

Hbase,


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的话就是数据及时更新,这样在一些删除、添加合并操作的场合就不会造成数据混乱。

www.htsjk.Com true http://www.htsjk.com/hbase/37441.html NewsArticle Hbase, Hbase介绍 Hbase采用Master/Slave模式搭建集群,由以下类型节点组成: - HMaster - HRegionServer - Zookeeper 底层数据存储在hdfs中,总体结构如下: 使用案例 普通Java API连接Hbase集群 Configur...
相关文章
    暂无相关文章
评论暂时关闭