Hbase配置及客户端远程访问Hbase设置.docx
- 文档编号:5426976
- 上传时间:2022-12-16
- 格式:DOCX
- 页数:11
- 大小:19.18KB
Hbase配置及客户端远程访问Hbase设置.docx
《Hbase配置及客户端远程访问Hbase设置.docx》由会员分享,可在线阅读,更多相关《Hbase配置及客户端远程访问Hbase设置.docx(11页珍藏版)》请在冰豆网上搜索。
Hbase配置及客户端远程访问Hbase设置
Hbase(单机)配置及客户端运行设置
一、安装Hbase
本节详细描述Hbase伪分布模式的配置方法。
1、安装Java
(1)、下载JDK软件包,bin格式
(2)、将软件包拷到系统目录中,加上可执行权限,执行bin文件,解压java文件
(3)、把生成的文件夹复制到/usr/java/
mkdir/usr/java
cp–rjdk1.6.0_xx/usr/java
(4)、修改/root/.bashrc文件,在文件中添加如下代码:
exportJAVA_HOME=/usr/lib/java/jdk1.6.0_31
exportCLASSPATH=.:
$JAVA_HOME/lib/dt.jar:
$JAVA_HOME/lib/tools.jar
exportPATH=$JAVA_HOME/bin:
$PATH
exportJAVA_HOMECLASSPATHPATH
(5)、source/root/.bashrc
2、配置Hbase
(1)、下载最新的Hbase程序包,解压到/usr/Apache目录下
(2)、修改Hbase_Home下conf/hbase-site.xml文件,单机配置如下:
xmlversion="1.0"?
>
xml-stylesheettype="text/xsl"href="configuration.xsl"?
>
///
数据文件存放位置,可以是本地文件系统,也可以是HDFS文件系统
ZooKeeper服务器设置,在分布式配置中,value中可以有多个IP地址,每个都是ZooKeeper的节点。
Hbase必须搭建在ZooKeeper集群环境下,通过Zookeeper获取Hbase各节点的IP地址,协调通信。
设置是否为分布式配置,默认为true。
作为伪分布实验,可以设为true
(3)、配置regionservers
在HBASE_HOME/conf目录中,修改regionservers文件。
该文件用于记录Hbase中regionserver的域名(IP地址)。
在单机环境中为本机IP地址,实验中为222.204.248.111。
(4)、配置hostname以及hosts
●在/etc/hostname文件中设置主机名
●在/etc/hosts中设置主机名与其IP地址的对应关系。
Hbase的Master节点必须配置所有Slave节点的主机名-IP地址对应关系;Slave节点只需要直到Master节点的主机名-IP地址对应关系。
(5)、启动Hbase实例
●若hbase-env.sh文件中exportHBASE_MANAGES_ZK=true时,表示由Hbase托管Zookeeper集群,通过hbase-site.xml来配置Zookeeper参数;若为false,则由用户自己管理Zookeeper集群,需要下载Zookeeper程序,自己启动。
●为方便启动Hbase,可以再环境变量中在Path变量中添加HBASE_HOME/bin路径。
●若环境变量设置后,直接运行start-hbase.sh,启动hbase环境;否则进入HBASE_HOME/bin目录,执行./start-hbase.sh,启动hbase环境。
●之后,执行hbaseshell进入hbase的shell模式,可以输入命令创建、查询、删除hbase表。
●在web浏览器中输入http:
//222.204.248.111:
60010可以查看Hbase中Master节点的信息;输入http:
//222.204.248.111:
60030可以查看Hbase中RegionServer节点的信息。
至此Hbase单机伪分布配置完成
二、客户端Java程序设置
本节详细描述在任意客户端上(为安装Hbase环境)中如何通过Java远程调访问Hbase服务器(单机伪分布)。
实验中Java程序通过eclispe编译运行,以下方法只说明在eclipse中的配制方法
1、准备必要jar包
编译运行Hbase客户端程序需要以下几个jar包:
hadoop-core-1.0.0.jar、commons-loggings-version.jar、commons-cli-vesion.jar、commons-lang-vesion.jar、commons-configration-version.jar、hbase-0.92.1.jar、zookeeper-3.4.3.jar、slf4j-api-1.5.8.jar、slf4j-log4j12-1.5.8.jar、log4j-1.2.16.jar。
这些包都在HBASE_HOME/lib目录中可以找到,本版号以lib目录下为准。
将以上jar包添加到eclipse中的buildpath中
2、写客户端测试代码
我写了两个Java程序,分为HBaseHelper.java及PutExample.java。
其中HBaseHelper.java封装了基本操作函数,如同DataAccessObject类;PutExample.java进行了简单的创建表及插入2条记录的任务。
●HBaseHelper.java
packagecom.yhq.ch03;
importjava.io.IOException;
importjava.util.ArrayList;
importjava.util.List;
importjava.util.Random;
importorg.apache.hadoop.conf.Configuration;
importorg.apache.hadoop.hbase.HColumnDescriptor;
importorg.apache.hadoop.hbase.HTableDescriptor;
importorg.apache.hadoop.hbase.KeyValue;
importorg.apache.hadoop.hbase.client.Get;
importorg.apache.hadoop.hbase.client.HBaseAdmin;
importorg.apache.hadoop.hbase.client.HTable;
importorg.apache.hadoop.hbase.client.Put;
importorg.apache.hadoop.hbase.client.Result;
importorg.apache.hadoop.hbase.util.Bytes;
publicclassHBaseHelper{
privateConfigurationconf=null;
privateHBaseAdminadmin=null;
protectedHBaseHelper(Configurationconf)throwsIOException{
this.conf=conf;
this.admin=newHBaseAdmin(conf);
}
publicstaticHBaseHelpergetHelper(Configurationconf)throwsIOException{
returnnewHBaseHelper(conf);
}
publicbooleanexistsTable(Stringtable)throwsIOException{
returnadmin.tableExists(table);
}
publicvoidcreateTable(Stringtable,String...colfams)throwsIOException{
createTable(table,null,colfams);
}
publicvoidcreateTable(Stringtable,byte[][]splitKeys,String...colfams)throwsIOException{
HTableDescriptordesc=newHTableDescriptor(table);
for(Stringcf:
colfams){
HColumnDescriptorcoldef=newHColumnDescriptor(cf);
desc.addFamily(coldef);
}
if(splitKeys!
=null){
admin.createTable(desc,splitKeys);
}else{
admin.createTable(desc);
}
}
publicvoiddisableTable(Stringtable)throwsIOException{
admin.disableTable(table);
}
publicvoiddropTable(Stringtable)throwsIOException{
if(existsTable(table)){
disableTable(table);
admin.deleteTable(table);
}
}
publicvoidfillTable(Stringtable,intstartRow,intendRow,intnumCols,String...colfams)
throwsIOException{
fillTable(table,startRow,endRow,numCols,-1,false,colfams);
}
publicvoidfillTable(Stringtable,intstartRow,intendRow,intnumCols,booleansetTimestamp,String...colfams)
throwsIOException{
fillTable(table,startRow,endRow,numCols,-1,setTimestamp,colfams);
}
publicvoidfillTable(Stringtable,intstartRow,intendRow,intnumCols,intpad,booleansetTimestamp,String...colfams)
throwsIOException{
fillTable(table,startRow,endRow,numCols,pad,setTimestamp,false,colfams);
}
//根据其实行,结束行等参数向表中添加参数
publicvoidfillTable(Stringtable,intstartRow,intendRow,intnumCols,intpad,booleansetTimestamp,booleanrandom,String...colfams)
throwsIOException{
HTabletbl=newHTable(conf,table);
Randomrnd=newRandom();
for(introw=startRow;row<=endRow;row++){
for(intcol=0;col Putput=newPut(Bytes.toBytes("row-"+padNum(row,pad))); for(Stringcf: colfams){ StringcolName="col-"+padNum(col,pad); Stringval="val-"+(random? Integer.toString(rnd.nextInt(numCols)): padNum(row,pad)+"."+padNum(col,pad)); if(setTimestamp){ put.add(Bytes.toBytes(cf),Bytes.toBytes(colName), col,Bytes.toBytes(val)); }else{ put.add(Bytes.toBytes(cf),Bytes.toBytes(colName), Bytes.toBytes(val)); } } tbl.put(put); } } tbl.close(); } //用以下算法形成数字值,pad为位数,高位用0补齐 publicStringpadNum(intnum,intpad){ Stringres=Integer.toString(num); if(pad>0){ while(res.length() res="0"+res; } } returnres; } publicvoidput(Stringtable,Stringrow,Stringfam,Stringqual,Stringval)throwsIOException{ HTabletbl=newHTable(conf,table); Putput=newPut(Bytes.toBytes(row)); put.add(Bytes.toBytes(fam),Bytes.toBytes(qual),Bytes.toBytes(val)); tbl.put(put); tbl.close(); } publicvoidput(Stringtable,Stringrow,Stringfam,Stringqual,longts,Stringval)throwsIOException{ HTabletbl=newHTable(conf,table); Putput=newPut(Bytes.toBytes(row)); put.add(Bytes.toBytes(fam),Bytes.toBytes(qual),ts,Bytes.toBytes(val)); tbl.put(put); tbl.close(); } publicvoidput(Stringtable,String[]rows,String[]fams,String[]quals,long[]ts,String[]vals)throwsIOException{ HTabletbl=newHTable(conf,table); for(Stringrow: rows){ Putput=newPut(Bytes.toBytes(row)); for(Stringfam: fams){ intv=0; for(Stringqual: quals){ Stringval=vals[v v: vals.length-1]; longt=ts[v v: ts.length-1]; put.add(Bytes.toBytes(fam),Bytes.toBytes(qual),t,Bytes.toBytes(val)); v++; } } tbl.put(put); } tbl.close(); } publicvoiddump(Stringtable,String[]rows,String[]fams,String[]quals)throwsIOException{ HTabletbl=newHTable(conf,table); List for(Stringrow: rows){ Getget=newGet(Bytes.toBytes(row)); get.setMaxVersions(); if(fams! =null){ for(Stringfam: fams){ for(Stringqual: quals){ get.addColumn(Bytes.toBytes(fam),Bytes.toBytes(qual)); } } } gets.add(get); } Result[]results=tbl.get(gets); for(Resultresult: results){ for(KeyValuekv: result.raw()){ System.out.println("KV: "+kv+",Value: "+Bytes.toString(kv.getValue())); } } } } ●PutExample.java packagecom.yhq.ch03; importjava.io.IOException; importorg.apache.hadoop.conf.Configuration; importorg.apache.hadoop.hbase.HBaseConfiguration; importorg.apache.hadoop.hbase.client.HTable; importorg.apache.hadoop.hbase.client.Put; importorg.apache.hadoop.hbase.util.Bytes; publicclassPutExample{ publicstaticvoidmain(String[]args)throwsIOException{ Configurationconf=HBaseConfiguration.create();//coPutExample-1-CreateConfCreatetherequiredconfiguration. //^^PutExample HBaseHelperhelper=HBaseHelper.getHelper(conf); helper.dropTable("testtable"); helper.createTable("testtable","colfam1"); //vvPutExample HTabletable=newHTable(conf,"testtable");//coPutExample-2-NewTableInstantiateanewclient. Putput=newPut(Bytes.toBytes("row1"));//coPutExample-3-NewPutCreateputwithspecificrow. put.add(Bytes.toBytes("colfam1"),Bytes.toBytes("qual1"), Bytes.toBytes("val1"));//coPutExample-4-AddCol1Addacolumn,whosenameis"colfam1: qual1",totheput. put.add(Bytes.toBytes("colfam1"),Bytes.toBytes("qual2"), Bytes.toBytes("val2"));//coPutExample-4-AddCol2Addanothercolumn,whosenameis"colfam1: qual2",totheput. table.put(put);//coPutExample-5-DoPutStorerowwithcolumnintotheHBasetable. } } 3、配置客户端的hbase-site.xml 客户端仍要配置hbase-site.xml,用于设置Zookeeper集群的IP地址,程序会读取该配置文件,连接Zookeeper集群,由Zookeeper集群协调Hbase各节点。 hbase-site.xml简单的设置如下: xmlversion="1.0"? > xml-stylesheettype="text/xsl"href="configuration.xsl"? > CommaseparatedlistofserversintheZooKeeperQuorum.For example, ",,". Bydefaultthisissettolocalhostforlo
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Hbase 配置 客户端 远程 访问 设置