一 目的
本文档主要介绍在文件存储HDFS版上使用 Apache HBase 的方法。如果您使用的是CDH或者阿里云E-MapReduce中内置的 HBase,请参考最佳实践中的《在文件存储HDFS版上使用CDH6》和《在文件存储HDFS版上使用E-MapReduce》。
二 准备工作
- 开通文件存储HDFS版服务并创建文件系统实例和挂载点,详细文档请参见:快速入门。
- 在 Hadoop 集群所有节点上安装JDK。版本不能低于1.8。
- 在集群中配置文件存储HDFS版实例,详细文档请参见:挂载文件系统。
- 部署 Apache HBase 分布式集群,官方文档:Apache HBase Reference Guide。部署时需参考下方第三章节配置。
- 本文档使用 Hadoop-2.10.1 和 HBase-2.3.7 测试验证。更多信息请参考 HBase官网Hadoop版本兼容性说明。
三 配置 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}
四 验证
- 启动 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
- 使用 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 ## 如果在环境变量中已配置 HADOOP_HOME 及 HADOOP_CLASSPATH 也可以执行如下命令进行 RowCounter 计算 ${HBASE_HOME}/bin/hbase org.apache.hadoop.hbase.mapreduce.RowCounter dfs_test
注意:在 YARN 上执行 MapReduce 计数前需要先在 Hadoop 集群中启动 YARN 服务。
了解更多关于文件存储HDFS版的产品信息,欢迎访问https://www.aliyun.com/product/alidfs
如果您对文件存储HDFS版有任何问题,欢迎钉钉扫描以下二维码加入文件存储HDFS版技术交流群。