70
5
SCM
”,单击“
Next
”。此选项只会检查是否正确安装
M2E
插件,如果你
Eclipse
本自带的插件已经安装。
如图
5-1
所示,在
SCM URL
项的下拉菜单中选择“
git
”选项,进入
Git
资料库
URL
的文本连接区:
https://github.com/architectingHBase/examples
。如果“
git
”选项不
可用,请确保你已正确安装连接器。可以在同一窗口使用“
m2e Marketplace
”链
接来安装连接器。当所有这些都完成后,只需单击“
Finish
”按钮,来导入
project
项目。这时窗口也将关闭,下载所有已定义的依赖关系到项目中,并在一个名为
architecting-HBase-applications-examples
应用实例中,导入源代码到你的
Eclipse
作区。此操作可能需要几分钟,所以现在是一个很好的时间去抢一杯咖啡或去散
步,你回来时,该项目应该已在你的工作区了。
5
-
1
Eclipse MVN导入窗口
我们可在
Eclipse
中使用
Maven
去构建我们的应用程序。这样的话,首先右键单击刚
刚导入的项目,选择“
Run As
”选项,然后“
Maven Build...
”。此时会打开一个窗
口来配置编译这个项目。只需要你修改的部分是“
Goals
”文本字段,在那里你需
要输入“
package
”。一旦你完成了这些步骤,只需单击“
Apply
”按钮,然后单击
Run
”按钮。在控制台的信息输出界面,你会看到
Maven
正在构建并打包你的例
子。输出信息应该与本章前面的“命令行构建”相同。
为了简化所有的命令行,创建一个符号链接到你的主目录中的项目文件夹:
环境设置
71
ln -s
~
/workspace/architecting-HBase-applications-examples
~
/ahae
测试实例
既然你已在
HBase
单机服务器中运行过实例,也已下载了所有实例,并且在你的系
统中构建过本地应用,接下来我们将尝试运行一个简单的测试,以确保一切都正确
配置。
HBase
的配置信息存储在
conf
文件夹下的
HBase-site.xml
文件中。在单机模式运行
时,这个文件可以是空的,所以你设置或者不设置这个文件的
classpath
都可以。然
而,如果你修改这个文件,你需要确保它在
classpath
中可以被访问以便进行修改并
被使用。你使用命令行还是
Eclipse
来运行你的例子将直接决定你是否需要将配置文
件添加到
classpath
中。
命令行方式
当使用命令行运行实例时,你需要确保所有的
HBase
的二进制文件和配置文件都已
经在
classpath
中。当你执行
HBase
classpath
命令时,
HBase
将显示
classpath
的相关
信息。另外例子中打包了二进制文件,正是通过这些路径,
Java
才能够正确运行这
些实例。
下面的命令将从
com.architecting.ch05
中运行
TestInstallation
实例。
#:
~
/ahae$ java -classpath
~
/ahae/target/ahae.jar:`HBase classpath`\
com.architecting.ch05.TestInstallation
TestInstallation
是一个简单的
Java
代码片段,试图调用
HBase
以检测其是否正在运
行(参见例
5-1
)。
5-1
:使用
TestInstallation
检查
HBase
是否正在运行(
java
public class TestInstallation {
private static final Log LOG = LogFactory.getLog(TestInstallation.class);
public static void main(String[] args) {
Configuration conf = HBaseConfiguration.create();
try {
LOG.info("Testing HBase connection...");
HBaseAdmin.checkHBaseAvailable(conf);
LOG.info("HBase is running correctly...");
} catch (MasterNotRunningException e) {
LOG.error("Unable to find a running HBase instance", e);
} catch (ZooKeeperConnectionException e) {
LOG.error("Unable to connect to ZooKeeper", e);
} catch (ServiceException e) {
LOG.error("HBase service unavailable", e);
72
5
} catch (IOException e) {
LOG.error("Error when trying to get HBase status", e);
}
}
}
这个命令调用
HBase classpath
命令获取当前的
HBase classpath
,然后追加实例
JAR
,并运行了
JAR
中的一个程序。这个命令会在不同的
HBase
类产生大量输出结
果。你需要看的是从例子本身输出的信息,它应该看起来像下面的代码片段(注
意,为了简洁起见,有些行已被删除或缩短;而同时,你可以在你的运行环境
exprot calsspath
变量,来避免需要对它的每个
Java
进程都指定变量):
export CLASSPATH=
~
/ahae/target/ahae.jar:`HBase classpath`
2014-09-14 INFO [main] ch05.TestInstallation: Testing HBase connection...
2014-09-14 WARN [main] util.NativeCodeLoader: Unable to load native-hadoop\
library for your platform... using builtin-java classes where applicable
2014-09-14 INFO [main] zk.RecoverableZooKeeper: Process identifier=hconnection-\
0x783c342b connecting to ZooKeeper ensemble=localhost:2181
2014-09-14 INFO [main] zk.ZooKeeper: Client environment:zookeeper.\
version=3.4.6-1565, built on 02/20/2014 09:09 GMT
2014-09-14 INFO [main] zk.ZooKeeper: Client environment:host.name=t430s
2014-09-14 INFO [main] zk.ZooKeeper: Client environment:java.version=1.7.0_60
2014-09-14 INFO [main] zk.ZooKeeper: Client environment:java.io.tmpdir=/tmp
2014-09-14 INFO [main] zk.ZooKeeper: Client environment:java.compiler=<NA>
2014-09-14 INFO [main] zk.ZooKeeper: Client environment:os.name=Linux
2014-09-14 INFO [main] zk.ZooKeeper: Initiating client connection,\
connectString=localhost:2181 sessionTimeout=90000 watcher=hconnection-\
0x783c342b, quorum=localhost:2181, baseZNode=/HBase
2014-09-14 INFO [main-SendThread(localhost:2181)] zookeeper.ClientCnxn: Socket\
connection established to localhost/0:0:0:0:0:0:0:1:2181, initiating session
2014-09-14 INFO [main] client.HConnectionManager$HConnectionImplementation:\
Closing master protocol: MasterService
2014-09-14 INFO [main] client.HConnectionManager$HConnectionImplementation:\
Closing zookeeper sessionid=0x1487467e621000a
2014-09-14 INFO [main] zk.ZooKeeper: Session: 0x1487467e621000a closed
2014-09-14 INFO [main-EventThread] zookeeper.ClientCnxn: EventThread shut down
2014-09-14 INFO [main] ch05.TestInstallation: HBase is running correctly...
是例子打印出来的两行结果。
如果你没有看到“
HBase is running correctly...
”这一行,你需要确保你的
HBase
务器是否运行正常以及例子是否按照预期编译成功。
使用
Eclipse
为了运行
eclipse
中的一个例子,你只需要右键单击它,选择“
Run As
”,然后单击
Java Application
”。
Eclipse
运行
TestInstallation
的同一例子的输出结果应该更
短,应该包括
HBase
输出日志。应该看到在控制台上打印以下几行:

Get HBase应用架构 now with O’Reilly online learning.

O’Reilly members experience live online training, plus books, videos, and digital content from 200+ publishers.