`
085567
  • 浏览: 220192 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

HBase的安装、配置、管理与编程

阅读更多

环境准备
需要环境:
PC-1 Suse Linux 9  10.192.1.1
PC-2 Suse Linux 9  10.192.1.2
PC-3 Suse Linux 9  10.192.1.3
PC-4 Suse Linux 9  10.192.1.4
其中,PC-1做namenode节点,PC-2、PC-3和PC-4做datanode节点。
并且已经安装成功Hadoop-0.20.1及以上版本。
安装包准备
需要安装包:
zookeeper-3.2.1.tar.gz(stable版本)
hbase-0.20.1.tar.gz(stable版本)
安装步骤
安装和配置ZooKeeper
HBase从0.20.0开始,需要首先安装ZooKeeper。从apache上下载zookeeper-3.2.1.tar.gz(Stable版本),解压到/home/hdfs/目录下。
(1)在namenode节点新建zookeeper目录,在该目录下新建myid文件。
(2)在zookeeper-3.2.1/conf目录下,拷贝zoo_sample.cfg为zoo.cfg。在zoo.cfg中将dataDir改为/home/hdfs/zookeeper,在文件末位添加所有的主机:
server.1=10.192.1.1:2888:3888
server.2=10.192.1.2:2888:3888
server.3=10.192.1.3:2888:3888
server.4=10.192.1.4:2888:3888
server.5=10.192.1.5:2888:3888
server.6=10.192.1.62888:3888
(3)用scp命令将namenode节点的的/home/hdfs/ zookeeper-3.2.1和/home/hdfs/ zookeeper拷贝到其余所有主机的/home/hdfs目录下。
(4)参照zoo.cfg中的配置,在各主机myid文件中写入各自的编号。如:10.192.1.1入1,10.192.1.2写入2
(5)在所有节点上执行bin/zkServer.sh start,分别启动。
执行bin/zkCli.sh -server xxx.xxx.xxx.xxx:2181,检查指定服务器是否成功启动。
安装和配置HBase
下载HBase0.20.1版本,解压到namenode节点的/home/hdfs目录下。
配置说明
(1)系统所有配置项的默认设置在hbase-default.xml中查看,如果需要修改配置项的值,在hbase-site.xml中添加配置项。
在分布式模式下安装HBase,需要添加的最基本的配置项如下:
<property>
<name>hbase.rootdir</name>
<value>hdfs://namenode.hdfs:54310/hbase</value>
<description>The directory shared by region servers.</description>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
<description>The mode the cluster will be in. Possible values are
false: standalone and pseudo-distributed setups with managed Zookeeper
true: fully-distributed with unmanaged Zookeeper Quorum (see hbase-env.sh)
</description>
</property>
(2)在conf/hbase-env.sh中修改添加配置项:
export JAVA_HOME=/usr/java/jdk1.6.0_16
export HBASE_MANAGES_ZK=false
export HBASE_CLASSPATH=/home/hdfs/hadoop-0.20.1/conf
并把~/hadoop-0.20.1/conf/hdfs-site.xml拷贝至~/hbase-3.2.1/conf/目录下。
(3)将ZooKeeper的配置文件zoo.cfg添加到HBase所有主机的CLASSPATH中。
(4)在conf/regionservers中添加hadoop-0.20.1/conf/slaves中所有的datanode节点。
启动
Hadoop、ZooKeeper和HBase之间应该按照顺序启动和关闭:启动Hadoop—>启动ZooKeeper集群—>启动HBase—>停止HBase—>停止ZooKeeper集群—>停止Hadoop。
在namenode节点执行bin/hbase-daemon.sh,启动master。执行bin/start-hbase.sh和bin/stop-hbase.sh 脚本启动和停止HBase服务。
接口说明
HBase按列存储结构化数据,支持建表、插入记录、查询记录、删除记录和索引操作等等,不支持连接和更新操作。
开发步骤
引入JAR包
在Windows客户端编写JAVA程序操作HBase,需要引入一些JAR包。需要引入的JAR如下:hadoop-0.20.1- core.jar,commons-logging-1.0.4.jar,commons-logging-api- 1.0.4.jar,zookeeper-3.2.1.jar,hbase-0.20.1.jar,log4j-1.2.15.jar。
开发模式
在分布式模式下开发,在程序中配置与HDFS和ZooKeeper的连接,即可对数据进行操作。
view plaincopy to clipboardprint?
import java.util.Date;
import java.text.SimpleDateFormat;
import java.io.IOException;
import java.awt.List;
import java.util.Map;
import java.util.NavigableMap;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.HTableDescriptor;
import org.apache.hadoop.hbase.HColumnDescriptor;
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.Get;
import org.apache.hadoop.hbase.client.Scan;
import org.apache.hadoop.hbase.client.ResultScanner;
import org.apache.hadoop.hbase.client.Delete;
import org.apache.hadoop.hbase.client.Result;
import org.apache.hadoop.hbase.util.Bytes;
public class HBaseManager {
public static void main(String[] args) throws Exception{
HBaseManager manager = new HBaseManager();
manager.testGet();
}
public void testQueryRS()throws Exception{
HBaseConfiguration config = new HBaseConfiguration();
config.set("hbase.master", "10.192.1.1:60000");
config.set("hbase.zookeeper.quorum", "10.192.1.1");
HTable table = new HTable(config, "commodity");
System.out.println("Get Spin's commodity info");
Scan scanner = new Scan();
scanner.addColumn(Bytes.toBytes("description"));
scanner.setMaxVersions();
ResultScanner rsScanner = table.getScanner(scanner);
System.out.println(rsScanner.toString());
Result rs = rsScanner.next();
while(null != rs){
System.out.println(rs.size());
NavigableMap<byte[],NavigableMap<byte[],NavigableMap<Long,byte[]>>> nMap = rs.getMap();
NavigableMap<byte[],NavigableMap<Long,byte[]>> columnMap = nMap.get(Bytes.toBytes("description"));
NavigableMap<Long,byte[]> qualMap = columnMap.get(new byte[]{});
if(qualMap.entrySet().size() > 0){
System.out.println("---------------------------");
for(Map.Entry<Long, byte[]> m :qualMap.entrySet())
{   
System.out.println("Value:"+ new String(m.getValue()));
}
}
rs = rsScanner.next();
}
}
public void testQueryCommodity()throws Exception{
HBaseConfiguration config = new HBaseConfiguration();
config.set("hbase.master", "10.192.1.1:60000");
config.set("hbase.zookeeper.quorum", "10.192.1.1.203");
HTable table = new HTable(config, "commodity");
System.out.println("Get Spin's commodity info");
Get mathGet = new Get(new String("Spin").getBytes());
mathGet.addColumn(Bytes.toBytes("widgetname"));
mathGet.setMaxVersions();
Result rs = table.get(mathGet);
NavigableMap<byte[],NavigableMap<byte[],NavigableMap<Long,byte[]>>> nMap = rs.getMap();
NavigableMap<byte[],NavigableMap<Long,byte[]>> columnMap = nMap.get(Bytes.toBytes("widgetname"));
NavigableMap<Long,byte[]> qualMap = columnMap.get(new byte[]{});
if(qualMap.entrySet().size() > 0){
for(Map.Entry<Long, byte[]> m :qualMap.entrySet())
{   
System.out.println("Value:"+ new String(m.getValue()));
break;
}
}
}
public void test()throws Exception{
HBaseConfiguration config = new HBaseConfiguration();
config.set("hbase.master", "10.192.1.1:60000");
config.set("hbase.zookeeper.quorum", "10.192.1.1");
HBaseAdmin admin = new HBaseAdmin(config);
HTable table = new HTable(config, "scores");
if (admin.tableExists("scores")){
System.out.println("drop table");
admin.disableTable("scores");
admin.deleteTable("scores");
}
System.out.println("create table");
HTableDescriptor tableDescripter = new HTableDescriptor("scores".getBytes());
tableDescripter.addFamily(new HColumnDescriptor("grade"));
tableDescripter.addFamily(new HColumnDescriptor("course"));
admin.createTable(tableDescripter);
System.out.println("add Tom's data");
Put tomPut = new Put(new String("Tom").getBytes());
tomPut.add(new String("grade").getBytes(), new byte[]{}, new String("1").getBytes());
tomPut.add(new String("grade").getBytes(), new String("math").getBytes(), new String("87").getBytes());
tomPut.add(new String("course").getBytes(), new String("math").getBytes(), new String("97").getBytes());
table.put(tomPut);
System.out.println("add Jerry's data");
Put jerryPut = new Put(new String("Jerry").getBytes());
jerryPut.add(new String("grade").getBytes(), new byte[]{}, new String("2").getBytes());
jerryPut.add(new String("grade").getBytes(), new String("math").getBytes(), new String("77").getBytes());
jerryPut.add(new String("course").getBytes(), new String("math").getBytes(), new String("92").getBytes());
table.put(jerryPut);
System.out.println("Get Tom's data");
Get tomGet = new Get(new String("Tom").getBytes());
Result tomResult = table.get(tomGet);
System.out.println(tomResult.toString());
System.out.println("Get Tom's Math grade");
Get mathGet = new Get(new String("Tom").getBytes());
mathGet.addColumn(Bytes.toBytes("grade"));
mathGet.setMaxVersions();
Result rs = table.get(mathGet);
NavigableMap<byte[],NavigableMap<byte[],NavigableMap<Long,byte[]>>> nMap = rs.getMap();
NavigableMap<byte[],NavigableMap<Long,byte[]>> columnMap = nMap.get(Bytes.toBytes("grade"));
NavigableMap<Long,byte[]> qualMap = columnMap.get(Bytes.toBytes("math"));
for(Map.Entry<Long, byte[]> m :qualMap.entrySet())
{
System.out.println("TimeStamp:"+m.getKey());
System.out.println("Value:"+ new String(m.getValue()));
}
System.out.println("Delete a column");
Delete deleteArt = new Delete(Bytes.toBytes("Tom"));
deleteArt.deleteColumn(Bytes.toBytes("grade"), Bytes.toBytes("math"));
table.delete(deleteArt);
}
public void testScanner() throws IOException{
HBaseConfiguration config = new HBaseConfiguration();
config.set("hbase.master", "10.192.1.1:60000");
config.set("hbase.zookeeper.quorum", "10.192.1.1");
HTable table = new HTable(config, "commodity");
System.out.println("Scan commodity info");
Scan scanner = new Scan();
scanner.addColumn(Bytes.toBytes("widgetname"));
scanner.addColumn(Bytes.toBytes("filename"));
scanner.addColumn(Bytes.toBytes("description"));
scanner.addColumn(Bytes.toBytes("createtime"));
//scanner.setMaxVersions();
//scanner.setMaxVersions(4);
ResultScanner rsScanner = table.getScanner(scanner);
Result rs = rsScanner.next();
for(;null != rs; rs = rsScanner.next()){
System.out.println("rs.getRow()[" + new String(rs.getRow()) + "]");
System.out.println("[" + new String(rs.getValue(Bytes.toBytes("widgetname"))) + "]");
System.out.println("[" + new String(rs.getValue(Bytes.toBytes("filename"))) + "]");
System.out.println("[" + new String(rs.getValue(Bytes.toBytes("description"))) + "]");
String timeStr = new String(rs.getValue(Bytes.toBytes("createtime")));
System.out.println("[" + timeStr + "]");
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
try{
Date after = dateFormat.parse(timeStr);
System.out.println(after);
}
catch(Exception exp){
exp.printStackTrace();
}
}
}
public void testGet()throws IOException{
HBaseConfiguration config = new HBaseConfiguration();
config.set("hbase.master", "10.192.1.1:60000");
config.set("hbase.zookeeper.quorum", "10.192.1.1");
HTable table = new HTable(config, "commodity");
Get get = new Get(new String("xxxx.wgt").getBytes());
get.addColumn(Bytes.toBytes("widgetname"));
get.addColumn(Bytes.toBytes("filename"));
get.addColumn(Bytes.toBytes("description"));
get.addColumn(Bytes.toBytes("createtime"));
get.setMaxVersions(2);
System.out.println("00000000000000");
Result dbResult = table.get(get);
System.out.println("11111111111111");
System.out.println(dbResult.size());
System.out.println("2222222222222222");
System.out.println(new String(dbResult.value()));
System.out.println("3333333333333333");
System.out.println(dbResult.containsColumn(Bytes.toBytes("description"), new byte[]{}));
System.out.println("44444444444444444");
System.out.println(dbResult.isEmpty());
System.out.println("55555555555555555");
System.out.println(dbResult.list());
System.out.println("66666666666666666");
System.out.println(dbResult.raw());
System.out.println("77777777777777777");
System.out.println(dbResult.toString());
System.out.println("88888888888888888");
System.out.println(dbResult.raw().clone());
System.out.println("99999999999999999");
}
}
本文转载自:http://hi.baidu.com/surendaxiao/blog/item/c8724b17021c0314972b433e.html

分享到:
评论

相关推荐

    大数据技术基础实验报告-HBase安装配置和应用实践.doc

    2. **HBase配置** - HBase有三种运行模式:单机模式、伪分布式模式和分布式模式。实验中主要讨论前两种。 - 在配置之前,确保已安装JDK、Hadoop(对于单机模式可选),并且配置了SSH。 - 对于单机模式配置: - ...

    分布式数据库HBase安装配置与实践.doc

    2. **HBase配置** HBase有三种运行模式:单机模式、伪分布式模式和完全分布式模式。对于学习和初步实践,我们关注单机模式和伪分布式模式。 - **伪分布式模式配置** 在这个模式下,HBase和Hadoop运行在同一台...

    HBase安装与应用编程.docx

    【HBase 安装】 ...总之,HBase 的安装与编程涉及系统环境配置、服务启动、Shell 操作以及 Java API 的使用。在实践中,了解每个步骤的细节并解决可能出现的问题,对于掌握 HBase 的应用至关重要。

    大数据实验Hbase安装部署和使用javaapi调用.pdf

    【大数据实验Hbase安装部署和使用javaapi调用】 在这个实验中,我们将深入理解HBase在Hadoop...完成实验后,不仅能够熟练配置和管理HBase,还能编写程序与HBase进行数据交互,为后续的大数据处理项目打下坚实基础。

    HBase安装与配置资源下载:hbase-1.2.6

    HBase是一款基于Google Bigtable设计思想的开源分布式数据库,它属于Apache Hadoop生态系统...学习HBase,还需理解Region划分策略、Compaction压缩机制、Coprocessor协处理器等高级概念,以更好地优化和管理HBase集群。

    大数据实验三-HBase编程实践

    通过本次实验,我对HBase的安装配置有了深入的理解,并掌握了如何使用Shell命令和Java API来进行表的操作。HBase的强大之处在于它能够处理大规模的数据,并且提供了高效的数据读写能力。在未来的工作中,我会更加...

    HBase 编程指南

    《HBase编程指南》是深入理解与掌握HBase这一分布式数据库系统的关键资源,尤其对于那些在云计算领域寻求专业技能提升的IT专业人士来说,它提供了一套全面而细致的学习材料。以下是从该指南中提炼出的核心知识点,...

    hbase2.2安装文件

    6. **监控与管理**:通过HBase的Web UI(默认端口16010)监控HBase集群的状态,包括Region分布、Master状态、RegionServer状态等。 7. **安全配置**:在生产环境中,可能需要配置HBase以支持安全性,如Kerberos认证...

    HBase1.4.13安装步骤

    本文将详细解析HBase 1.4.13的安装步骤,以及如何进行单机模式和伪分布式模式的配置,同时也会涉及使用HBase Java API进行编程实践。 首先,安装HBase 1.4.13的过程从获取安装包开始,通常推荐从可靠的镜像源下载,...

    HBASE 完整教程.docx

    接着,我们需要配置HBase的环境变量,如`JAVA_HOME`,并修改`hbase-env.cmd`和`hbase-site.xml`文件,设定HBase的根目录、临时目录、Zookeeper的群集地址和数据目录,以及是否由HBase自身管理Zookeeper等参数。...

    hadoop+hbase系列配置文档

    #### 四、Hadoop与HBase配置要点 配置Hadoop与HBase时需要注意以下几点: - **Hadoop配置**:确保所有节点的时间同步;正确设置`core-site.xml`、`hdfs-site.xml`、`mapred-site.xml`等配置文件。 - **HBase配置**...

    windows中安装Hadoop与Hbase

    8. JavaAPIHbase:这部分内容在文档中被略过,但一般来说,还应当包括如何使用Java API来与Hbase进行编程交互,如连接数据库、增删改查等操作。 具体配置Hadoop中的几个核心配置文件的知识点如下: - core-site....

    hbase从入门到编程 - 文档.pdf

    ### HBase从入门到编程——核心知识点解析 #### 一、HBase简介 **HBase** 是一个构建在 **Hadoop** 分布式文件系统 (HDFS) 之上的分布式、可扩展、高性能的列族数据库。它为海量数据提供了灵活的存储方式,并支持...

    Hbase实验报告.pdf

    在开始实验之前,确保已经正确安装并配置了Hadoop和HBase环境。 ### 2. 创建表 实验要求创建一个名为`student`的表,字段包括`Row Key`、`address`、`score`、`province`、`city`、`street`、`Java`、`Hadoop`和`...

    HBase编程实践

    总之,HBase编程实践涵盖了从基础概念到高级应用的全过程,涉及表的创建与管理、数据的增删改查、数据模型设计、分布式计算的整合等多个方面。通过深入理解和实践,开发者能够更好地利用HBase处理大规模的实时数据。

    Linux环境Hadoop2.6+Hbase1.2集群安装部署

    该教程涵盖了从环境准备、Hadoop与HBase的安装配置到集群的测试等全过程。通过以下步骤,读者可以了解到不同运行模式下的具体操作方法,并能够成功搭建起一个高效稳定的大数据处理平台。 #### 二、环境准备 ##### ...

    hadoop+zookeeper+hbase集群搭建配置说明

    2. Zookeeper:Zookeeper是Apache的一个高性能的分布式协调服务,它为分布式应用程序提供一致性服务,如命名服务、配置管理、组服务、分布式同步等。在Hadoop集群中,Zookeeper通常用于管理NameNode的元数据、HBase...

    大数据平台及编程实践--HBase

    1. HBase安装与配置:遵循指导步骤,完成HBase的伪分布式部署,确保所有服务正常运行,可以通过Web UI(localhost:16010)查看状态。 2. HBase操作实践:创建名为“person”的表,然后执行一系列操作,如列出所有表...

    安装HBase,并启动运行

    在本教程中,我们将深入探讨如何在Linux环境中安装和配置HBase,以及如何启动和停止HBase服务。HBase是一个分布式的、版本化的、可扩展的NoSQL数据库,它构建在Hadoop之上,用于处理大规模的数据存储。 首先,我们...

Global site tag (gtag.js) - Google Analytics