您的位置:首页 > 运维架构

Hadoop学习笔记—15.HBase框架学习(基础实践篇)

2015-04-09 22:41 666 查看

一、HBase的安装配置

1.1 伪分布模式安装

  伪分布模式安装即在一台计算机上部署HBase的各个角色,HMaster、HRegionServer以及ZooKeeper都在一台计算机上来模拟。

  首先,准备好HBase的安装包,我这里使用的是HBase-0.94.7的版本,已经上传至百度网盘之中(URL:http://pan.baidu.com/s/1pJ3HTY7

  (1)通过FTP将hbase的安装包拷贝到虚拟机hadoop-master中,并执行一系列操作:解压缩、重命名、设置环境变量

  ①解压缩:tar -zvxf hbase-0.94.7-security.tar.gz

  ②重命名:mv hbase-94.7-security hbase

  ③设置环境变量:vim /etc/profile,增加内容如下,修改后重新生效:source /etc/profile


export HBASE_HOME=/usr/local/hbase

export PATH=.:$HADOOP_HOME/bin:$HBASE_HOME/bin:$ZOOKEEPER_HOME/bin:$JAVA_HOME/bin:$PATH


  (2)进入hbase/conf目录下,修改hbase-env.sh文件:


export JAVA_HOME=/usr/local/jdk
export HBASE_MANAGES_ZK=true #告诉HBase使用它自己的zookeeper实例,分布式模式下需要设置为false


  (3)在hbase/conf目录下,继续修改hbase-site.xml文件:


<property>
  <name>hbase.rootdir</name>
  <value>hdfs://hadoop-master:9000/hbase</value>
</property>
<property>
  <name>hbase.cluster.distributed</name>
  <value>true</value>
</property>
<property>
  <name>hbase.zookeeper.quorum</name>
  <value>hadoop-master</value>
</property>
<property>
  <name>dfs.replication</name>
  <value>1</value>
</property>


  (4)【可选步凑】修改regionservers文件,将localhost改为主机名:hadoop-master

  (5)启动HBase:start-hbase.sh


PS:由上一篇可知,HBase是建立在Hadoop HDFS之上的,因此在启动HBase之前要确保已经启动了Hadoop,启动Hadoop的命令是:start-all.sh


  (6)验证是否启动HBase:jps

  

package hbase;

import java.io.IOException;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.HColumnDescriptor;
import org.apache.hadoop.hbase.HTableDescriptor;
import org.apache.hadoop.hbase.client.Get;
import org.apache.hadoop.hbase.client.HBaseAdmin;
import org.apache.hadoop.hbase.client.HTable;
import org.apache.hadoop.hbase.client.Put;
import org.apache.hadoop.hbase.client.Result;
import org.apache.hadoop.hbase.client.ResultScanner;
import org.apache.hadoop.hbase.client.Scan;
import org.apache.hadoop.hbase.util.Bytes;

public class MobileLogQueryApp {

private static final String TABLE_NAME = "wlan_log";
private static final String FAMILY_NAME = "cf";

/**
* HBase Java API基本使用示例
*
* @throws Exception
*/
public static void main(String[] args) throws Exception {
scan(TABLE_NAME,"13600217502");
System.out.println();
scanPeriod(TABLE_NAME, "136");
}

/*
* 查询手机13600217502的所有上网记录
*/
public static void scan(String tableName, String mobileNum)
throws IOException {
HTable table = new HTable(getConfiguration(), tableName);
Scan scan = new Scan();
scan.setStartRow(Bytes.toBytes(mobileNum + ":/"));
scan.setStopRow(Bytes.toBytes(mobileNum + "::"));
ResultScanner scanner = table.getScanner(scan);
int i = 0;
for (Result result : scanner) {
System.out.println("Scan: " + i + " " + result);
i++;
}
}

/*
* 查询134号段的所有上网记录
*/
public static void scanPeriod(String tableName, String period)
throws IOException {
HTable table = new HTable(getConfiguration(), tableName);
Scan scan = new Scan();
scan.setStartRow(Bytes.toBytes(period + "/"));
scan.setStopRow(Bytes.toBytes(period + ":"));
scan.setMaxVersions(1);
ResultScanner scanner = table.getScanner(scan);
int i = 0;
for (Result result : scanner) {
System.out.println("Scan: " + i + " " + result);
i++;
}
}

/*
* 获取HBase配置
*/
private static Configuration getConfiguration() {
Configuration conf = HBaseConfiguration.create();
conf.set("hbase.rootdir", "hdfs://hadoop-master:9000/hbase");
// 使用eclipse时必须添加这个,否则无法定位
conf.set("hbase.zookeeper.quorum", "hadoop-master");

return conf;
}

}


View Code
  这里主要进行了两个查询操作:按指定手机号码查询 和 按指定手机号码网段区间查询,执行结果如下所示:



参考资料

  (1)吴超,《Hadoop深入浅出》:http://www.superwu.cn

  (2)新城主力唱好,《HBase Java API》:http://www.cnblogs.com/NicholasLee/archive/2012/09/13/2683432.html

作者:周旭龙

出处:http://www.cnblogs.com/edisonchou/

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: