本文主要介绍在文件存储 HDFS 版上使用Apache HBase的方法。
前提条件
已开通文件存储 HDFS 版服务并创建文件系统实例和挂载点。具体操作,请参见文件存储HDFS版快速入门。
已为Hadoop集群所有节点安装JDK,且JDK版本不低于1.8。
已部署Apache HBase分布式集群,且版本必须与Hadoop版本兼容。具体操作,请参见Apache HBase Reference Guide。
本文使用Hadoop-2.10.1和HBase-2.3.7测试验证。更多信息,请参见HBase官网Hadoop版本兼容性说明。
如果您使用的是阿里云E-MapReduce中内置的HBase,请参见在文件存储HDFS版上使用E-MapReduce。
步骤一:Hadoop集群挂载文件存储 HDFS 版实例
在Hadoop集群中配置文件存储 HDFS 版实例。具体操作,请参见挂载文件存储 HDFS 版文件系统。
步骤二:配置Apache HBase
将Hadoop中配置的core-site.xml复制到${HBASE_HOME}/conf目录下。
cp ${HADOOP_HOME}/etc/hadoop/core-site.xml ${HBASE_HOME}/conf
配置
${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>
配置${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
执行以下命令,启动HBase。
${HBASE_HOME}/bin/start-hbase.sh
重要启动分布式HBase集群前确保ZooKeeper已经启动。
创建测试文件(例如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'
执行以下命令,在HBase中创建表并写入10000条数据。
${HBASE_HOME}/bin/hbase shell dfs_test.txt
其中,
dfs_test.txt
为刚创建的测试文件,请根据实际情况替换。使用MapReduce计算行数。
重要在YARN上执行MapReduce计数前需要先在Hadoop集群中启动YARN服务。
执行命令
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配置成功。
如果在环境变量中已配置HADOOP_HOME及HADOOP_CLASSPATH也可以执行以下命令进行RowCounter计算。
${HBASE_HOME}/bin/hbase org.apache.hadoop.hbase.mapreduce.RowCounter dfs_test