HBase(四):HBase API判断表是否存在,结果问题爆棚。。

为什么80%的码农都做不了架构师?>>>   hot3.png

1.首先确认开启了 Hadoop服务--->Zookeeper服务--->HBase服务

hadoop@master:~$ jps
4066 HMaster
3050 SecondaryNameNode
2865 DataNode
3693 QuorumPeerMain
4224 HRegionServer
2743 NameNode
3278 ResourceManager
4876 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.刷刷刷..... 碰到一堆包的问题,最后找了半天的包,哎。。。 最终结果包如下:

    HBase(四):HBase API判断表是否存在,结果问题爆棚。。_第1张图片

 

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)下(这是我的本地目录)并没有找到相似的包,

于是转至此链接地址:http://www.java2s.com/Code/Jar/m/Downloadmetricscore300jar.htm

它会提示你下载 ,比如: Download metrics-core-3.0.0.jar,感觉好像是对了。。

可往下看会发现,如图所示: HBase(四):HBase API判断表是否存在,结果问题爆棚。。_第2张图片

接下来进入此链接:http://www.programcreek.com/java-api-examples/index.php?source_dir=CassandraQoS-master/cassandra/src/java/org/apache/cassandra/metrics/CommitLogMetrics.java

又会发现如图所示:

HBase(四):HBase API判断表是否存在,结果问题爆棚。。_第3张图片

于是,在误导又跑进了apache下,把cassandra给下载了下来,结果发现还是没找到我想要的包。...

下载地址:http://cassandra.apache.org/download/

 

继续百度找资料,进入此链接地址:https://issues.apache.org/jira/browse/SPARK-7538           

 又会发现:

// 告诉你使用maven搜索,然后下载
Downloading the two metrics packages from the maven repository (metrics-core, metrics-annotation) and supplying it on the spark-submit command line worked.

HBase(四):HBase API判断表是否存在,结果问题爆棚。。_第4张图片  好吧,结果又把Spark给下载回来了,可失望的是还是在Spark中没找到我想要的包。

Spark下载地址:http://spark.apache.org/downloads.html 。

继续在此文章中找答案,哈哈,

   

跑去把Kafka给下载回来了,终于在其中找到了自己想要的目的包。

下载地址:https://www.apache.org/dyn/closer.cgi?path=/kafka/0.9.0.1/kafka_2.11-0.9.0.1.tgz

HBase(四):HBase API判断表是否存在,结果问题爆棚。。_第5张图片

 

导入包,问题完美解决。。。。

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)目录,即:

HBase(四):HBase API判断表是否存在,结果问题爆棚。。_第6张图片

修改hosts文件,末尾添加:

	192.168.226.129	master

如图下:

HBase(四):HBase API判断表是否存在,结果问题爆棚。。_第7张图片

解决上述问题后,代码正常运行结果:

admin: org.apache.hadoop.hbase.client.HBaseAdmin@c8be7d
isExists: true

.....

接下来使用 Maven。。。。 

 

 

转载于:https://my.oschina.net/gently/blog/674953

你可能感兴趣的:(大数据,java,开发工具)