本文主要介绍在文件存储HDFS版上使用Apache HBase的方法。

前提条件

说明 如果您使用的是CDH或者阿里云E-MapReduce中内置的HBase,请参见在文件存储HDFS版上使用CDH6在文件存储HDFS版上使用E-MapReduce

步骤一:Hadoop集群挂载文件存储HDFS版实例

在Hadoop集群中配置文件存储HDFS版实例。具体操作,请参见挂载文件系统

步骤二:配置Apache HBase

  1. 将Hadoop中配置的core-site.xml复制到${HBASE_HOME}/conf目录下。
    cp ${HADOOP_HOME}/etc/hadoop/core-site.xml ${HBASE_HOME}/conf
  2. 配置${HBASE_HOME}/conf/hbase-site.xml
    <property>
        <!-- 使用分布式模式运行HBase -->
        <name>hbase.cluster.distributed</name>
        <value>true</value>
    </property>
    <property>
        <!-- 指定HBase存储目录,f-xxxxxxxxxxxxxxx.cn-xxxxxxx.dfs.aliyuncs.com为您的挂载点域名,根据实际情况修改 -->
        <name>hbase.rootdir</name>
        <value>dfs://f-xxxxxxxxxxxxxxx.cn-xxxxxxx.dfs.aliyuncs.com:10290/hbase</value>
    </property>
    <property>
        <!-- 在文件存储HDFS版上使用HBase时该配置必须设置为false -->
        <name>hbase.unsafe.stream.capability.enforce</name>
        <value>false</value>
    </property>
    <property>
        <!-- 依赖的ZooKeeper配置, 请根据实际情况修改 -->
        <name>hbase.zookeeper.quorum</name>
        <value>hostname:2181</value>
    </property>
  3. 配置${HBASE_HOME}/conf/hbase-env.sh。
    ## HBase不使用自己的ZooKeeper
    export HBASE_MANAGES_ZK=false
    
    ## 在HBASE_CLASSPATH中添加文件存储HDFS版Java SDK
    export HBASE_CLASSPATH=/path/to/aliyun-sdk-dfs-x.y.z.jar:${HBASE_CLASSPATH}

步骤三:验证Apache HBase

  1. 执行以下命令,启动HBase。
    ${HBASE_HOME}/bin/start-hbase.sh
    注意 启动分布式HBase集群前确保ZooKeeper已经启动。
  2. 创建测试文件(例如dfs_test.txt)并写入如下内容。
    create 'dfs_test', 'cf'
    for i in Array(0..9999)
     put 'dfs_test', 'row'+i.to_s , 'cf:a', 'value'+i.to_s
    end
    list 'dfs_test'
    scan 'dfs_test', {LIMIT => 10, STARTROW => 'row1'}
    get 'dfs_test', 'row1'
  3. 执行以下命令,在HBase中创建表并写入10000条数据。
    ${HBASE_HOME}/bin/hbase shell dfs_test.txt

    其中,dfs_test.txt为刚创建的测试文件,请根据实际情况替换。

    10000数据
  4. 使用MapReduce计算行数。
    • 执行命令
      HADOOP_CLASSPATH=`${HBASE_HOME}/bin/hbase mapredcp` \
      ${HADOOP_HOME}/bin/hadoop jar ${HBASE_HOME}/lib/hbase-mapreduce-2.3.7.jar \
      rowcounter dfs_test
    • 返回信息
      如果计算行数与写入数据一致,则表示Apache HBase配置成功。10000条数据检测
    如果在环境变量中已配置HADOOP_HOME及HADOOP_CLASSPATH也可以执行以下命令进行RowCounter计算。
    ${HBASE_HOME}/bin/hbase org.apache.hadoop.hbase.mapreduce.RowCounter dfs_test
    注意 在YARN上执行MapReduce计数前需要先在Hadoop集群中启动YARN服务。