1.首先确认开启了 Hadoop服务--->Zookeeper服务--->HBase服务
hadoop@master:~$ jps4066 HMaster3050 SecondaryNameNode2865 DataNode3693 QuorumPeerMain4224 HRegionServer2743 NameNode3278 ResourceManager4876 Jps
2.好的,接下来创建一个Hadoop工程,先简单学习下HBase API的使用,做个大概了解,结果了,结果一堆包的问题出现来了,因为对抱着想学习一个新的东西,创建一个新的工程让其能够正常运行,大概需要哪些包,就手动导入的包,在此,没有使用Maven对包的依赖管理,。。。
通过小小的几句代码,检测Eclipse中能否连接到以上几个服务,让程序正常运行,比如:
测试某张表是否存在,非常简单的测试,以下是源代码:
public class HelloHBase { /** * 操作HBase数据:测试某张表是否存在 * */ public static void main(String[] args) throws MasterNotRunningException, ZooKeeperConnectionException, IOException { //1.建立连接 Configuration conf = HBaseConfiguration.create(); // 获得配置文件对象 conf.set("hbase.zookeeper.quorum", "192.168.226.129"); //conf.set("hbase.zookeeper.property.clientPort", "2181"); //获得连接对象 Connection con = ConnectionFactory.createConnection(conf); Admin admin = con.getAdmin(); System.out.println( " @@@@@@@@ " + admin ); TableName tn = TableName.valueOf("userinfo"); //创建表名对象 //判断数据表是否存在。 boolean isExists = admin.tableExists(tn); System.out.println( isExists ); }}
3.刷刷刷..... 碰到一堆包的问题,最后找了半天的包,哎。。。 最终结果包如下:
4.接下来主要看学习API入门过程中,碰到的主要问题:
4.1.错误: java.lang.NoClassDefFoundError:com/yammer/metrics/core/Gauge。
Caused by:java.io.IOException:com.google.protobuf.ServiceException: java.lang.NoClassDefFoundError: com/yammer/metrics/core/Gauge at org.apache.hadoop.hbase.protobuf.ProtobufUtil.getRemoteException(ProtobufUtil.java:331) at org.apache.hadoop.hbase.client.ScannerCallable.openScanner(ScannerCallable.java:402) at org.apache.hadoop.hbase.client.ScannerCallable.call(ScannerCallable.java:203) at org.apache.hadoop.hbase.client.ScannerCallable.call(ScannerCallable.java:64) at org.apache.hadoop.hbase.client.RpcRetryingCaller.callWithoutRetries(RpcRetryingCaller.java:200) at org.apache.hadoop.hbase.client.ScannerCallableWithReplicas$RetryingRPC.call(ScannerCallableWithReplicas.java:360) at org.apache.hadoop.hbase.client.ScannerCallableWithReplicas$RetryingRPC.call(ScannerCallableWithReplicas.java:334) at org.apache.hadoop.hbase.client.RpcRetryingCaller.callWithRetries(RpcRetryingCaller.java:126) ... 4 more
然后 在(..\07-HBase\hbase-1.2.1\lib)下(这是我的本地目录)并没有找到相似的包,
于是转至此链接地址:
它会提示你下载 ,比如: Download metrics-core-3.0.0.jar,感觉好像是对了。。
可往下看会发现,如图所示:
接下来进入此链接:
又会发现如图所示:
于是,在误导又跑进了apache下,把cassandra给下载了下来,结果发现还是没找到我想要的包。...
下载地址:
继续百度找资料,进入此链接地址:
又会发现:
// 告诉你使用maven搜索,然后下载Downloading the two metrics packages from the maven repository (metrics-core, metrics-annotation) and supplying it on the spark-submit command line worked.
好吧,结果又把Spark给下载回来了,可失望的是还是在Spark中没找到我想要的包。
Spark下载地址: 。
继续在此文章中找答案,哈哈,
跑去把Kafka给下载回来了,终于在其中找到了自己想要的目的包。
下载地址:
导入包,问题完美解决。。。。
4.2 错误问题:Caused by: java.net.UnknownHostException: unknown host: master
Caused by: java.net.UnknownHostException: unknown host: master at org.apache.hadoop.hbase.ipc.RpcClientImpl$Connection.(RpcClientImpl.java:308) at org.apache.hadoop.hbase.ipc.RpcClientImpl.createConnection(RpcClientImpl.java:138) at org.apache.hadoop.hbase.ipc.RpcClientImpl.getConnection(RpcClientImpl.java:1316) at org.apache.hadoop.hbase.ipc.RpcClientImpl.call(RpcClientImpl.java:1224) at org.apache.hadoop.hbase.ipc.AbstractRpcClient.callBlockingMethod(AbstractRpcClient.java:226) at org.apache.hadoop.hbase.ipc.AbstractRpcClient$BlockingRpcChannelImplementation.callBlockingMethod(AbstractRpcClient.java:331) at org.apache.hadoop.hbase.protobuf.generated.ClientProtos$ClientService$BlockingStub.scan(ClientProtos.java:34094)
无法识别master,好吧,进入本地系统 (C:\Windows\System32\drivers\etc)目录,即:
修改hosts文件,末尾添加:
192.168.226.129 master
如图下:
解决上述问题后,代码正常运行结果:
admin: org.apache.hadoop.hbase.client.HBaseAdmin@c8be7disExists: true
.....
接下来使用 Maven。。。。