Eclipe集成环境开发HBase程序过程详解
2014-03-04 14:55
561 查看
Eclipe集成环境开发HBase程序过程详解
当前,为了方便对TB级以上的数据进行分布式存取,开发企业级的应用,很多公司采用HBase作为后台数据组织与管理平台。HBase虽然可以存放近乎无限的数据,也可以实现在TB级以上的数据集塞责快速查、改操作,但是对数据操作的难度又不是一般人所能完成的,对其不能像关系数据库那样使用SQL语言进行操作,甚至也不能像在Hive中那样使用类SQL语言对数据进行查询。HBase提供了统一的接口,专门的命令实现对数据的操作。对于数据库管理员来说,通过Hbase
Shell登录Hbase,使用专门的命令完成对HBase数据库的操作是可以的。HBase提供了专门的Java
API,可以让Java程序进行调用,从而实现对Hbase的操作。Eclipse作为开发Java应用程序的不二之选,使用它开发基于Java语言的Hbase应用程序也成了程序员们的首选。因为资料的缺乏,或者提供相关资料的人员有意无意的疏漏,从集群平台与集成开发环境搭配完毕,到完成第一个Hbase开发,还有很多的事情要做,可能需要花费许多时间才能把路走通。本文将详细介绍Eclipe集成环境开发HBase程序过程的过程,以期给读者提供相关的参考,减少在这一过程花费的时间。
1、Hadoop集群环境如下:
(1)5台服务器,操作系统为CentOS6.4。5台机器的名称分别为H-master-01、H-node-11、H-node-12、H-node-13、H-node-14,IP地址分别为192.168.100.1、192.168.100.11、192.168.100.12、192.168.100.13、192.168.100.14。
(2)Hadoop集群使用的是Intel公司的IDH2.5。在IDH2.5中,Hadoop版本是1.2.1,Hbase的版本是0.94.1。
(3)H-master-01做Namenode、JobTracker、HBase
Master,其他4台做DataNode、TaskTracker、HBase
RegionServer,H-node-11、H-node-12、H-node-13做Zookeeper。
2、客户端开发环境如下:
(1)操作系统:Win7
(2)开发集成环境:Eclipse
4.21
(3)JavaSDK:JRE
6(Build 1.6.0.31)
3、开发准备
(1)确保集群Hadoop与Hbase正常运行
(2)把集群上Hbase安装目录下的hbase-0.94.11.jar、hbase-0.94.11-tests.jar、子目录Lib下的所有文件、子目录Security/src/main/java下的org目录及Hbase-site.xml文件复制到客户端电脑上。
(3)修改客户端Win7的Hosts文件(windows/system32/drivers/etc下),加入集群各服务器与IP地址的对应关系,使其跟CentOS上的Hosts文件中的对应关系一样:
192.168.100.1 h-master-01
192.168.100.11 h-node-11
192.168.100.12 h-node-12
192.168.100.13 h-node-13
192.168.100.14 h-node-14
这是由于Hbase是通过hostname解析IP地址的(DNS),Zookeeper只会返回Hbase的域名,需要客户端通过DNS或本地hosts文件进行服务器域名到IP地址的解析。如果在Hosts文件不指名域名与IP地址的关系,Zookeeper无法解析出作为Zookeeper的IP地址,就会报错:Will
not attempt to authenticate using SASL(无法定位登录配置)。
4、开发过程
(1)启动Eclipse,创建一个普通的Java
Application Project,假设名称为HbaseTest
(2)在HbaseTest项目所在目录下创建Conf目录,然后把Hbase-site.xml文件复制到Conf目录下
(3)把前述Security/src/main/java目录下的org目录复制到HbaseTest项目的Src目录下。该目录下存放的是Hbase开发安全类包,如果不把该类包导入,则会出现错误信息:java.lang.ClassNotFoundException:org.apache.hadoop.hbase.ipc.SecureRpcEngine。
如果在从官网下载的Hbase中,已经把该安全包封装在JAR文件hbase-0.94.1-security中,则不用把文件导入,通过第(6)步导入JARs操作把类库导入也可以。
(4)在Eclipse中,找到HbaseTest项目,右单击,在弹出菜单中选择Refresh,进行刷新操作,就会发现Conf目录已经出现在项目列表下。
(5)HbaseTest项目—右单击—Properties,打开项目Properties窗口:
(5)在如上面所示的窗口点击Add
Class Folder…按钮,在弹出的窗口中选择Conf目录,把Conf中的Hbase-site.xml文件加入到项目中,以保证程序能够读取Hbase配置信息,实现对Hbase的操作。
(6)上面的窗口中,点击Add External JARs…按钮,选择前述从Hbase中复制出的Lib目录下的Jar文件。如果不能确定具体要选哪些文件,选择全部即可。陆嘉恒在《Hadoop实战》(第二版)、风的王子在其CSDN博客中都有关于具体引用Jar的文件的说明。比如风的王子在其博客/article/3614569.html提到:
A、只需要用 java api对 HBase表进行增删改时,必须用的以下 jar包:
commons-configuration-1.6.jar
commons-lang-2.5.jar
commons-logging-1.1.1.jar
hadoop-core-1.2.1.jar
hbase-0.94.10.jar
log4j-1.2.16.jar
protobuf-java-2.4.0a.jar
slf4j-api-1.4.3.jar
slf4j-log4j12-1.4.3.jar
zookeeper-3.4.5.jar
B、运行 HBase MapReduce程序时,需要以下jar包:
commons-configuration-1.6.jar
commons-lang-2.5.jar
commons-logging-1.1.1.jar
guava-11.0.2.jar
hadoop-core-1.2.1.jar
hbase-0.94.10.jar
jackson-core-asl-1.8.8.jar
jackson-mapper-asl-1.8.8.jar
log4j-1.2.16.jar
protobuf-java-2.4.0a.jar
slf4j-api-1.4.3.jar
slf4j-log4j12-1.4.3.jar
zookeeper-3.4.5.jar
(7)经过上述配置后,就可以直接创建Java
Class文件了,把下面的代码复制到所创建的类文件中,如果没有引用错误,在类文件上,右单击,Run As—Java Application,如果客户开发电脑跟运行Hbase的Hadoop集群在网络上是联通的,则可以在Hbase上创建表MyFirstHbaseTable!
importjava.io.IOException;
importjava.util.ArrayList;
importjava.util.List;
importorg.apache.hadoop.conf.Configuration;
importorg.apache.hadoop.hbase.HBaseConfiguration;
importorg.apache.hadoop.hbase.HColumnDescriptor;
importorg.apache.hadoop.hbase.HTableDescriptor;
importorg.apache.hadoop.hbase.KeyValue;
importorg.apache.hadoop.hbase.MasterNotRunningException;
importorg.apache.hadoop.hbase.ZooKeeperConnectionException;
importorg.apache.hadoop.hbase.client.Delete;
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.client.ResultScanner;
importorg.apache.hadoop.hbase.client.Scan;
importorg.apache.hadoop.hbase.filter.Filter;
importorg.apache.hadoop.hbase.filter.FilterList;
importorg.apache.hadoop.hbase.filter.SingleColumnValueFilter;
importorg.apache.hadoop.hbase.filter.CompareFilter.CompareOp;
importorg.apache.hadoop.hbase.util.Bytes;
publicclass TableInHbase {
public static Configuration configuration;
static {
configuration = HBaseConfiguration.create();
}
Private static string tableName=” MyFirstHbaseTable”;
public static void main(String[] args) {
System.out.println("Initing
for HBaseAdmin ......");
try
{
tableName=””;
HBaseAdmin hBaseAdmin =new
HBaseAdmin(configuration);
System.out.println("start
to check tables ......");
if
(hBaseAdmin.tableExists(tableName)) {
hBaseAdmin.disableTable(tableName);
hBaseAdmin.deleteTable(tableName);
System.out.println(tableName
+ " is exist,detele....");
}
System.out.println("start
create table ......");
HTableDescriptor tableDescriptor =newHTableDescriptor(tableName);
tableDescriptor.addFamily(new
HColumnDescriptor("column1"));
tableDescriptor.addFamily(new
HColumnDescriptor("column2"));
tableDescriptor.addFamily(new
HColumnDescriptor("column3"));
hBaseAdmin.createTable(tableDescriptor);
hBaseAdmin.close();
}catch
(MasterNotRunningException e) {
e.printStackTrace();
}catch
(ZooKeeperConnectionException e) {
e.printStackTrace();
}catch(IOException
e) {
e.printStackTrace();
}
System.out.println("end
create table ......");
}
Eclipe集成环境开发HBase程序过程详解
当前,为了方便对TB级以上的数据进行分布式存取,开发企业级的应用,很多公司采用HBase作为后台数据组织与管理平台。HBase虽然可以存放近乎无限的数据,也可以实现在TB级以上的数据集塞责快速查、改操作,但是对数据操作的难度又不是一般人所能完成的,对其不能像关系数据库那样使用SQL语言进行操作,甚至也不能像在Hive中那样使用类SQL语言对数据进行查询。HBase提供了统一的接口,专门的命令实现对数据的操作。对于数据库管理员来说,通过Hbase
Shell登录Hbase,使用专门的命令完成对HBase数据库的操作是可以的。HBase提供了专门的Java
API,可以让Java程序进行调用,从而实现对Hbase的操作。Eclipse作为开发Java应用程序的不二之选,使用它开发基于Java语言的Hbase应用程序也成了程序员们的首选。因为资料的缺乏,或者提供相关资料的人员有意无意的疏漏,从集群平台与集成开发环境搭配完毕,到完成第一个Hbase开发,还有很多的事情要做,可能需要花费许多时间才能把路走通。本文将详细介绍Eclipe集成环境开发HBase程序过程的过程,以期给读者提供相关的参考,减少在这一过程花费的时间。
1、Hadoop集群环境如下:
(1)5台服务器,操作系统为CentOS6.4。5台机器的名称分别为H-master-01、H-node-11、H-node-12、H-node-13、H-node-14,IP地址分别为192.168.100.1、192.168.100.11、192.168.100.12、192.168.100.13、192.168.100.14。
(2)Hadoop集群使用的是Intel公司的IDH2.5。在IDH2.5中,Hadoop版本是1.2.1,Hbase的版本是0.94.1。
(3)H-master-01做Namenode、JobTracker、HBase
Master,其他4台做DataNode、TaskTracker、HBase
RegionServer,H-node-11、H-node-12、H-node-13做Zookeeper。
2、客户端开发环境如下:
(1)操作系统:Win7
(2)开发集成环境:Eclipse
4.21
(3)JavaSDK:JRE
6(Build 1.6.0.31)
3、开发准备
(1)确保集群Hadoop与Hbase正常运行
(2)把集群上Hbase安装目录下的hbase-0.94.11.jar、hbase-0.94.11-tests.jar、子目录Lib下的所有文件、子目录Security/src/main/java下的org目录及Hbase-site.xml文件复制到客户端电脑上。
(3)修改客户端Win7的Hosts文件(windows/system32/drivers/etc下),加入集群各服务器与IP地址的对应关系,使其跟CentOS上的Hosts文件中的对应关系一样:
192.168.100.1 h-master-01
192.168.100.11 h-node-11
192.168.100.12 h-node-12
192.168.100.13 h-node-13
192.168.100.14 h-node-14
这是由于Hbase是通过hostname解析IP地址的(DNS),Zookeeper只会返回Hbase的域名,需要客户端通过DNS或本地hosts文件进行服务器域名到IP地址的解析。如果在Hosts文件不指名域名与IP地址的关系,Zookeeper无法解析出作为Zookeeper的IP地址,就会报错:Will
not attempt to authenticate using SASL(无法定位登录配置)。
4、开发过程
(1)启动Eclipse,创建一个普通的Java
Application Project,假设名称为HbaseTest
(2)在HbaseTest项目所在目录下创建Conf目录,然后把Hbase-site.xml文件复制到Conf目录下
(3)把前述Security/src/main/java目录下的org目录复制到HbaseTest项目的Src目录下。该目录下存放的是Hbase开发安全类包,如果不把该类包导入,则会出现错误信息:java.lang.ClassNotFoundException:org.apache.hadoop.hbase.ipc.SecureRpcEngine。
如果在从官网下载的Hbase中,已经把该安全包封装在JAR文件hbase-0.94.1-security中,则不用把文件导入,通过第(6)步导入JARs操作把类库导入也可以。
(4)在Eclipse中,找到HbaseTest项目,右单击,在弹出菜单中选择Refresh,进行刷新操作,就会发现Conf目录已经出现在项目列表下。
(5)HbaseTest项目—右单击—Properties,打开项目Properties窗口:
(5)在如上面所示的窗口点击Add
Class Folder…按钮,在弹出的窗口中选择Conf目录,把Conf中的Hbase-site.xml文件加入到项目中,以保证程序能够读取Hbase配置信息,实现对Hbase的操作。
(6)上面的窗口中,点击Add External JARs…按钮,选择前述从Hbase中复制出的Lib目录下的Jar文件。如果不能确定具体要选哪些文件,选择全部即可。陆嘉恒在《Hadoop实战》(第二版)、风的王子在其CSDN博客中都有关于具体引用Jar的文件的说明。比如风的王子在其博客/article/3614569.html提到:
A、只需要用 java api对 HBase表进行增删改时,必须用的以下 jar包:
commons-configuration-1.6.jar
commons-lang-2.5.jar
commons-logging-1.1.1.jar
hadoop-core-1.2.1.jar
hbase-0.94.10.jar
log4j-1.2.16.jar
protobuf-java-2.4.0a.jar
slf4j-api-1.4.3.jar
slf4j-log4j12-1.4.3.jar
zookeeper-3.4.5.jar
B、运行 HBase MapReduce程序时,需要以下jar包:
commons-configuration-1.6.jar
commons-lang-2.5.jar
commons-logging-1.1.1.jar
guava-11.0.2.jar
hadoop-core-1.2.1.jar
hbase-0.94.10.jar
jackson-core-asl-1.8.8.jar
jackson-mapper-asl-1.8.8.jar
log4j-1.2.16.jar
protobuf-java-2.4.0a.jar
slf4j-api-1.4.3.jar
slf4j-log4j12-1.4.3.jar
zookeeper-3.4.5.jar
(7)经过上述配置后,就可以直接创建Java
Class文件了,把下面的代码复制到所创建的类文件中,如果没有引用错误,在类文件上,右单击,Run As—Java Application,如果客户开发电脑跟运行Hbase的Hadoop集群在网络上是联通的,则可以在Hbase上创建表MyFirstHbaseTable!
importjava.io.IOException;
importjava.util.ArrayList;
importjava.util.List;
importorg.apache.hadoop.conf.Configuration;
importorg.apache.hadoop.hbase.HBaseConfiguration;
importorg.apache.hadoop.hbase.HColumnDescriptor;
importorg.apache.hadoop.hbase.HTableDescriptor;
importorg.apache.hadoop.hbase.KeyValue;
importorg.apache.hadoop.hbase.MasterNotRunningException;
importorg.apache.hadoop.hbase.ZooKeeperConnectionException;
importorg.apache.hadoop.hbase.client.Delete;
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.client.ResultScanner;
importorg.apache.hadoop.hbase.client.Scan;
importorg.apache.hadoop.hbase.filter.Filter;
importorg.apache.hadoop.hbase.filter.FilterList;
importorg.apache.hadoop.hbase.filter.SingleColumnValueFilter;
importorg.apache.hadoop.hbase.filter.CompareFilter.CompareOp;
importorg.apache.hadoop.hbase.util.Bytes;
publicclass TableInHbase {
public static Configuration configuration;
static {
configuration = HBaseConfiguration.create();
}
Private static string tableName=” MyFirstHbaseTable”;
public static void main(String[] args) {
System.out.println("Initing
for HBaseAdmin ......");
try
{
tableName=””;
HBaseAdmin hBaseAdmin =new
HBaseAdmin(configuration);
System.out.println("start
to check tables ......");
if
(hBaseAdmin.tableExists(tableName)) {
hBaseAdmin.disableTable(tableName);
hBaseAdmin.deleteTable(tableName);
System.out.println(tableName
+ " is exist,detele....");
}
System.out.println("start
create table ......");
HTableDescriptor tableDescriptor =newHTableDescriptor(tableName);
tableDescriptor.addFamily(new
HColumnDescriptor("column1"));
tableDescriptor.addFamily(new
HColumnDescriptor("column2"));
tableDescriptor.addFamily(new
HColumnDescriptor("column3"));
hBaseAdmin.createTable(tableDescriptor);
hBaseAdmin.close();
}catch
(MasterNotRunningException e) {
e.printStackTrace();
}catch
(ZooKeeperConnectionException e) {
e.printStackTrace();
}catch(IOException
e) {
e.printStackTrace();
}
System.out.println("end
create table ......");
}
相关文章推荐
- 基于Hbase数据的Mapreduce程序环境开发
- pycharm+PyQt5+python最新开发环境配置,踩坑过程详解
- 【甘道夫】HBase开发环境搭建过程中可能遇到的异常:No FileSystem for scheme: hdfs
- 集成 CDT 插件至 Eclipse 全过程,并开发你第一个 Eclipse 下的 C/C++ 程序
- 用Visual Studio 2005 集成环境开发QT程序
- 集成 CDT 插件至 Eclipse 全过程,并开发你第一个 Eclipse 下的 C/C++ 程序
- ARM裸机程序开发——ADS集成开发环境配置及调试
- 图解应用集成开发环境设计GUI程序-2
- storm-hbase集成:win7下用eclipse开发ubuntu上的storm-hbase程序
- 基于HBase Hadoop 分布式集群环境下的MapReduce程序开发
- linux下集成开发环境之ECLIPSE--在线调试、编译程序
- Docker 实现在线集成开发环境实例详解
- 【嵌入式linux】(第六步):使用eclipse集成开发环境开发第一个嵌入式Linux程序,并测试LED驱动
- 【甘道夫】HBase开发环境搭建过程中可能遇到的异常:No FileSystem for scheme: hdfs
- Spark定制班第28课:在集成开发环境中详解Spark Streaming的运行日志内幕
- MapReduce程序的3种集群提交运行模式详解---基于Windows与Linux两种开发环境
- 图解应用集成开发环境设计GUI程序-3
- phpwamp开发环境搭建详解,phpwamp绿色集成环境开发环境一键搭建
- ADI DSP开发环境 CCES下的程序加载过程
- Windows平台搭建基于PyQt5.8.2开发Python GUI程序的环境(含打包过程)