HBase安装配置以及Java操作hbase
Apache HBase
Apache HBase™是Hadoop数据库,是⼀个分布式,可扩展的⼤数据存储。
当您需要对⼤数据进⾏随机,实时读/写访问时,请使⽤Apache HBase™。该项⽬的⽬标是托管⾮常⼤的表 - 数⼗亿⾏X百万列 - 在商品硬件集上。Apache HBase是⼀个开源的,分布式的,版本化的⾮关系数据库
特征
线性和模块化可扩展性。
严格⼀致的读写操作。
表的⾃动和可配置分⽚
RegionServers之间的⾃动故障转移⽀持。
⽅便的基类,⽤于使⽤Apache HBase表⽀持Hadoop MapReduce作业。
易于使⽤的Java API,⽤于客户端访问。
阻⽌缓存和布隆过滤器以进⾏实时查询。
查询谓词通过服务器端过滤器下推
Thrift⽹关和REST-ful Web服务,⽀持XML,Protobuf和⼆进制数据编码选项
可扩展的基于jruby(JIRB)的外壳
⽀持通过Hadoop指标⼦系统将指标导出到⽂件或Ganglia; 或通过JMX
安装独⽴HBase
HBase要求安装JDK。有关⽀持的JDK版本的信息
从此Apache下载镜像列表中选择⼀个下载站点。单击建议的顶部链接。这将带您进⼊HBase版本的镜像。单击名为stable的⽂件夹,然后将以.结尾的⼆进制⽂件下载到本地⽂件系统。暂时不要下载以结尾的⽂件。
解压缩下载的⽂件,然后切换到新创建的⽬录。
$ tar -xzvf hbase-1.2.6.
为HBase设置Java⽬录,并从conf⽂件夹打开hbase-env.sh⽂件。编辑JAVA_HOME环境变量,改变路径到当前JAVA_HOME变量
#编辑/home/hbase-1.2.6.1/conf/hbase-env.sh
#配置hbase-env.sh⽂件:把29⾏的注释取消,配置虚拟机上⾯的Java地址
export JAVA_HOME=/usr/local/java/jdk1.7.0_79
编辑l,这是主要的HBase配置⽂件
<configuration>
<property>
<!-- 配置hbase存在位置-->
<name&dir</name>
<value>file:///home/pflm/HBase/HFiles</value>
</property>
<property>
<!-- 配置hbase⽂件保存路径-->
<name&keeper.property.dataDir</name>
<value>/home/pflm/HBase/zookeeper</value>
</property>
</configuration>
到此 HBase 的安装配置已成功完成。可以通过使⽤ HBase 的 bin ⽂件夹中提供 start-hbase.sh 脚本启动 HBase
$ ./bin/start-hbase.sh
运⾏HBase启动脚本,它会提⽰⼀条消息:HBase has started
starting master, logging to /usr/local/HBase/bin/../logs/hbase-tpmaster-localhost.localdomain.out
该./start-hbase.sh脚本是作为启动HBase的⼀种便捷⽅式。发出命令,如果⼀切顺利,将在标准输出中记录⼀条消息,显⽰HBase已成功启动。您可以使⽤该jps命令验证是否有⼀个正在运⾏的进程HMaster。在独⽴模式下,HBase运⾏此单个JVM中的所有守护程序,即HMaster,单个HRegionServer和ZooKeeper守护程序。转到http:// localhost:16010以查看HBase Web UI。
HBase Shell
要访问HBase shell,必须导航进⼊到HBase的主⽂件夹。
#进⼊shell
/bin/hbase shell
#列出HBase的所有表。
hbase(main):001:0> list
TABLE
java环境变量自动配置通⽤命令
status: 提供HBase的状态,例如,服务器的数量。
version: 提供正在使⽤HBase版本。
table_help: 表引⽤命令提供帮助
whoami: 提供有关⽤户的信息。
HBase在表中操作的命令。
create: 创建⼀个表。
list: 列出HBase的所有表。
disable: 禁⽤表。
is_disabled: 验证表是否被禁⽤。
enable: 启⽤⼀个表。
is_enabled: 验证表是否已启⽤。
describe: 提供了⼀个表的描述。
alter: 改变⼀个表。
exists: 验证表是否存在。
drop: 从HBase中删除表。
drop_all: 丢弃在命令中给出匹配“regex”的表
数据操纵语⾔
put: 把指定列在指定的⾏中单元格的值在⼀个特定的表。
get: 取⾏或单元格的内容。
delete: 删除表中的单元格值。
deleteall: 删除给定⾏的所有单元格。
scan: 扫描并返回表数据。
count: 计数并返回表中的⾏的数⽬。
truncate: 禁⽤,删除和重新创建⼀个指定的表。
解决Java API不能远程访问HBase的问题
1、配置Linux的hostname
[root@CentOS124 hbase-1.2.6.1]# vie /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=CentOS124 #名字随便
这⾥配置的hostname要Linux重启才⽣效,为了不重启就⽣效,我们可以执⾏:hostname CentOS124命令,暂时设置hostname 2、配置Linux的hosts,映射ip的hostname的关系
#映射ip的hostname的关系
[root@CentOS124 hbase-1.2.6.1]# vim /etc/host
#查看hbase ip绑定是否成功
[root@CentOS124 hbase-1.2.6.1]# netstat -anp|grep 16010
3、配置访问windows的hosts
#hbase
192.168.10.124 CentOS124
Java 操作远程hbase
public class HbaseTest {
public static Connection connection;
public static Configuration configuration;
static{
configuration = ate();
// 设置连接参数:HBase数据库使⽤的端⼝
configuration.set("keeper.property.clientPort","2181");
// 设置连接参数:HBase数据库所在的主机IP
configuration.set("keeper.quorum","192.168.10.124");
// configuration.addResource("l");
try{
/
/ 取得⼀个数据库连接对象
connection = ateConnection(configuration);
}catch(IOException e){
e.printStackTrace();
}
}
public static void main(String[] args)throws Exception {
createTable("gazw","id","name");
// deleteTable("gazw");
}
public static void createTable(String cf1)throws IOException {
Admin admin = Admin();
//HTD需要TableName类型的tableName,创建TableName类型的tableName
TableName tbName = TableName.valueOf(tableName);
//判断表述否已存在,不存在则创建表
if(admin.tableExists(tbName)){
return;
}
//通过HTableDescriptor创建⼀个HTableDescriptor将表的描述传到createTable参数中 HTableDescriptor HTD =new HTableDescriptor(tbName);
//为描述器添加表的详细参数
for(String cf : cf1){
// 创建HColumnDescriptor对象添加表的详细的描述
HColumnDescriptor HCD =new HColumnDescriptor(cf);
HTD.addFamily(HCD);
}
//调⽤createtable⽅法创建表
System.out.println("创建成功");
}
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论