系统:CentOS 7.0。
版本:JDK 1.8.0_91,Hadoop 2.7.3,Zookeeper 3.4.9,Hbase 1.2.5。
参考:https://wenku.baidu.com/view/b2bd94946bd97f192379e941.html
官网: http://hbase.apache.org
下载合适版本的Hbase:
http://apache.mirror.gtcomm.net/hbase
hbase版本需与hadoop版本、jdk版本匹配,参考:
http://hbase.apache.org/book.html#configuration
解压即完成安装,并移动到合适位置。
# vi /etc/profile.d/hbase.sh
export HBASE_HOME=/root/bigdata/hbase-1.2.5
# chmod 755 /etc/profile.d/hbase.sh
# . /etc/profile
参考:http://www.cnblogs.com/nexiyi/p/hbase_config_94.html
https://wenku.baidu.com/view/7110c790be23482fb5da4c97.html?pn=1
snn
dn01
dn02
# export HAVA_HOME=/usr/java/jdk1.8.0_91
export HBASE_MANAGES_ZK=false #禁用hbase管理zk,使用自己安装的zk
hbase.rootdir
hdfs://nn:9000/hbase
hbase.master
hdfs:nn:60000
hbase.cluster.distributed
true
hbase.zookeeper.quorum
nn,dn01,dn02
hbase.zookeeper.property.dataDir
/root/bigdata/zookeeper-3.4.9/dataDir
hbase.zookeeper.property.clientPort
2181
hbase.tmp.dir
/root/bigdata/hbase-1.2.5/tmpDir
hbase.master.info.port
60010
为了增加Hbase集群的可用性,可以为hbase增加多个backup master。当master挂掉后,backup master可以自动接管整个hbase的集群。
配置backup master的方式是在hbase的conf下增加文件:backup-masters,在该文件里面增加backup master的机器列表,每台机器一条记录。
在$HBASE_HOME/bin下,执行:
# ./start-hbase.sh
启动成功后可以访问WEB管理页面,如:
http://192.168.1.210:60010
关闭:
# ./stop-hbase.sh
在$HBASE_HOME/bin下,执行:
# ./hbase shell
在本地hosts文件(如C:\Windows\System32\drivers\etc\hosts)里加上HBase集群上的hosts配置。
导入Hbase安装包下的lib文件夹里的所有jar包到classpath,可做成user library。
package hbase.demo;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.Cell;
import org.apache.hadoop.hbase.CellUtil;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.client.HBaseAdmin;
import org.apache.hadoop.hbase.client.HTable;
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 Demo {
public static void main(String[] args) {
String tableName = "member";
try {
Configuration configuration = HBaseConfiguration.create();
configuration.set("hbase.zookeeper.property.clientPort","2181"); // zookeeper客户端访问端口
configuration.set("hbase.zookeeper.quorum","192.168.1.213"); // HBase集群服务器地址(任一台)
HBaseAdmin admin = newHBaseAdmin(configuration);
System.out.println(admin.tableExists(tableName));
// 读取表数据
HTable table = newHTable(configuration,tableName);
Scan scan = new Scan();
ResultScanner rs =table.getScanner(scan);
for (Result result :rs) {
for (Cell cell : result.listCells()) {
String key = Bytes.toString(CellUtil.cloneQualifier(cell));
String value = Bytes.toString(CellUtil.cloneValue(cell));
System.out.println(key +"=> " + value);
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
运行结果:
true
city => hangzhou
contry => china
province => zhejiang
age => 24
birthday => 1987-06-17
company => alibaba
city => jieyang
contry => china
province => guangdong
town => xianqiao
birthday => 1987-4-17
company => alibaba
favorite => movie
报错:java.io.IOException: Failed to get result within timeout,timeout=60000ms
原因:开发环境本地未配置hosts。
解决:在本地hosts文件(如C:\Windows\System32\drivers\etc\hosts)里加上HBase集群上的hosts配置即可。