spark操作hbase的问题汇总
1.无法访问hbase的regionservice
自己就在虚拟机里搭建了Hadoop和HBase,在进行API操作连接时,出现以下错误:
Exception in thread "main" org.apache.hadoop.hbase.client.RetriesExhaustedException: Failed after attempts=36, exceptions:
Fri Nov 22 17:56:26 CST 2019, null, java.net.SocketTimeoutException: callTimeout=60000, callDuration=76608: Call to localhost/127.0.0.1:16020 failed on connection exception: java.net.ConnectException: Connection refused: no further information row 'stu,,' on table 'hbase:meta' at region=hbase:meta,,1.1588230740, hostname=localhost,16020,1574415614027, seqNum=0
。。。。。。
原因:你在本机idea上去访问虚拟机的hbase,他能访问到zookeeper中的.meta表,当在访问regionservice的时候,默认是localhost/127.0.0.1:16020
你在虚拟机查看端口:
[root@localhost hbase-2.2.0]# netstat -npl|grep 16020![]()
说明是绑在虚拟机的localhost上的,所以你在外网访问不到
解决:
① 配置Linux的hostname
[root@master ~]# vi /etc/sysconfig/network# Created by anaconda
NETWORKING=yes
HOSTNAME=master
这里配置的hostname要Linux重启才生效,为了不重启就生效, 暂时设置hostname,我们可以执行:
hostname master
②配置Linux的hosts,映射ip的hostname的关系
[root@master ~]# vi /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.43.129 master
配置完Linux的这两项,启动HBase就发现HBase绑定到了我们想暴露的ip上了

③配置访问windows的hosts
路径为:C:\Windows\System32\drivers\etc\hosts

配置完这三项就可以远程访问HBase了,切记最后配置windows的hosts也是必须的
2.Spark Mavem项目在本地测试报错 : Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/spark/SparkConf;或者找不到spark相关的类。。。
原因:pom.xml中spark配置:
<!--运行依赖-->
<dependencies>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_2.11</artifactId>
<version>2.3.0</version>
<scope>provided</scope>
</dependency>
</dependencies>
<scope>provided</scope>导致在编译时忽略了这个依赖! 把这行注释掉即可!如果打包时不需要将这个依赖打进去 , 则需要开启!
解决:将<scope>provided</scope>注释掉
<!--运行依赖-->
<dependencies>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_2.11</artifactId>
<version>2.3.0</version>
<!--<scope>provided</scope>-->
</dependency>
</dependencies>
3.Cannot Resolve symbol TableInputFormat HBase找不到TableInputFormat
原因:这是是因为Maven依赖不对,新版本2.1.X版本的HBASE又双叒叕把mapreduce.TableInputFormat单独抽取出来了!!!
解决:在pom.xml中添加
<dependency>
<groupId>org.apache.hbase</groupId>
<artifactId>hbase-mapreduce</artifactId>
<version>2.1.4</version>
</dependency>
更多推荐
所有评论(0)