为什么80%的码农都做不了架构师?>>>
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.刷刷刷..... 碰到一堆包的问题,最后找了半天的包,哎。。。 最终结果包如下:
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,感觉好像是对了。。
接下来进入此链接:http://www.programcreek.com/java-api-examples/index.php?source_dir=CassandraQoS-master/cassandra/src/java/org/apache/cassandra/metrics/CommitLogMetrics.java
又会发现如图所示:
于是,在误导又跑进了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.
好吧,结果又把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
导入包,问题完美解决。。。。
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@c8be7d
isExists: true
.....
接下来使用 Maven。。。。