hbase1.4.9使用小記

下載安裝

下載

  1. 打開官方下載鏈接:https://www.apache.org/dyn/closer.lua/hbase/癣疟,打開頁(yè)面上推薦的最上面的那個(gè)鏈接撼短。顯示的內(nèi)容如下:
  2. 打開上圖中紅框選中的stable文件夾,下載后綴名為bin.tar.gz的文件

安裝

  1. 將下載好的文件放到對(duì)應(yīng)目錄,linux系統(tǒng)一般將該文件放在/user/local下面
  2. 解壓文件:
tar xzvf hbase-1.4.9-bin.tar.gz
  1. 安裝jdk并且配置JAVA_HOME環(huán)境變量,hbase與jdk的版本對(duì)照表如圖所示:

    本文使用的是1.4.9版本的hbase梁呈,所以對(duì)應(yīng)的java版本最好是jdk7或者jdk8

配置

單機(jī)部署

進(jìn)入解壓后產(chǎn)生的文件目錄

  1. 編輯conf/hbase-site.xml文件,文件內(nèi)容如下:
<configuration>
  <property>
      <name>hbase.rootdir</name>
      <value>file:///data/hbase</value>
  </property>
  <property>
      <name>hbase.zookeeper.property.dataDir</name>
      <value>/data/zookeeper</value>
  </property>
  <property>
      <name>hbase.unsafe.stream.capability.enforce</name>
      <value>false</value>
      <description>
        Controls whether HBase will check for stream capabilities (hflush/hsync).

        Disable this if you intend to run on LocalFileSystem, denoted by a rootdir
        with the 'file://' scheme, but be mindful of the NOTE below.

        WARNING: Setting this to false blinds you to potential data loss and
        inconsistent system state in the event of process and/or node failures. If
        HBase is complaining of an inability to use hsync or hflush it's most
        likely not a false positive.
      </description>
  </property>
</configuration>
  1. 編輯conf/hbase-env.sh文件
# 配置JAVA_HOME
export JAVA_HOME=/usr/local/jdk1.8.0_201
# 推薦配置pid文件目錄蘸秘,若不配置此項(xiàng)官卡,默認(rèn)使用/tmp目錄,文件易丟失
export HBASE_PID_DIR=/var/hadoop/pids
  • 這里hbase.rootdir指向了一個(gè)本地目錄/data/hbase醋虏,測(cè)試環(huán)境這么使用沒有問題寻咒,生產(chǎn)環(huán)境則最好不要這么做。
  • 不需要預(yù)先創(chuàng)建上面配置文件中填寫的目錄(/data/hbase/data/zookeeper)颈嚼,hbase啟動(dòng)之后將自動(dòng)創(chuàng)建這些目錄毛秘。

偽分布式部署

在單機(jī)部署的基礎(chǔ)上

  1. 將hbase設(shè)置為分布式的運(yùn)行模式
<property>
  <name>hbase.cluster.distributed</name>
  <value>true</value>
</property>
  1. hbase.rootdir指向hdfs
<property>
  <name>hbase.rootdir</name>
  <value>hdfs://localhost:9000/hbase</value>
</property>
  1. 移出hbase.unsafe.stream.capability.enforce的配置,或者將它置為true
<property>
  <name>hbase.unsafe.stream.capability.enforce</name>
  <value>true</value>
</property>

完全分布式部署

在偽分布式部署的基礎(chǔ)上

  1. 編輯conf/regionservers阻课,填入所有regionServer的hostname
centos
  1. 編輯conf/hbase-site.xml文件叫挟,填入所有ZooKeeper所在服務(wù)器的hostname
<property>
  <name>hbase.zookeeper.quorum</name>
  <value>centos</value>
</property>

啟動(dòng)

測(cè)試環(huán)境最好關(guān)閉服務(wù)器防火墻之后再使用下面的指令啟動(dòng)hbase,否則可能會(huì)出現(xiàn)各種問題限煞。

bin/start-hbase.sh

假如要停止hbase抹恳,使用下面的指令

bin/stop-hbase.sh

驗(yàn)證

執(zhí)行指令:

jps -lv | grep hbase

控制臺(tái)顯示如下圖所示:



一個(gè)名為HMaster的進(jìn)程正在運(yùn)行,表示安裝成功

初識(shí)hbase

  1. 連接hbase
bin/hbase shell
  1. 創(chuàng)建表
create 'test', 'cf'

這里指定了表名為test署驻,列族名為cf奋献。

  1. 查看表信息
list 'test'

控制臺(tái)會(huì)顯示剛才創(chuàng)建的test表,證明表創(chuàng)建成功旺上。

  1. 查看表詳情
describe 'test'
  1. 放入數(shù)據(jù)到表中
put 'test', 'row1', 'cf:a', 'value1'
put 'test', 'row2', 'cf:b', 'value2'
put 'test', 'row3', 'cf:c', 'value3'

這里放入了三條數(shù)據(jù)

  1. 查看表數(shù)據(jù)
scan 'test'

上面是查看表的全部數(shù)據(jù)秽荞,假如只需要獲取一行表數(shù)據(jù)的話,輸入指令

get 'test', 'row1'
  1. 停用/啟用數(shù)據(jù)表
    停用數(shù)據(jù)表
disable 'test'

停用數(shù)據(jù)表之后抚官,可以使用指令刪除表

drop 'test'

若不想刪除表,那么還可以使用指令再次啟用該表

enable 'test'
  1. 退出HBase Shel
exit

數(shù)據(jù)模型

Table

Table由若干row組成

Row

row由row key以及若干column value組成阶捆,一個(gè)table中的若干row按row key的字典序排序凌节。

Column

column由column family和column qualifier兩部分組成,兩部分用 : (冒號(hào))隔開:

  • Column Family
    column family將一系列column和它們的column value物理上聚攏在一起洒试,每一個(gè)column family有它自己的存儲(chǔ)屬性倍奢,包括是否這些column value應(yīng)該緩存到內(nèi)存,該使用什么樣的壓縮手段垒棋,row key該如何編碼卒煞,等等。column family在創(chuàng)建table的時(shí)候就會(huì)確定叼架,同一個(gè)table中的多個(gè)row擁有相同的column family畔裕。
  • Column Qualifier
    column qualifier配合column family用于索引指定的數(shù)據(jù)塊衣撬。column qualifier無需在創(chuàng)建table的時(shí)候確定,同一個(gè)table中的多個(gè)row可以擁有不一樣的column qualifier扮饶。

Cell

通過row key具练,column family,和column qualifier結(jié)合起來甜无,可以唯一的定位到一個(gè)cell扛点。cell由value和timestamp(表示value的版本)組成。

Timestamp

timestamp表示value的版本岂丘,寫入數(shù)據(jù)時(shí)陵究,默認(rèn)會(huì)同時(shí)取RegionServer的當(dāng)前時(shí)間作為timestamp,當(dāng)然在寫入數(shù)據(jù)時(shí)也可以自己指定timestamp奥帘。

表設(shè)計(jì)經(jīng)驗(yàn)法則

  1. region大小為10到50gb
  2. cell大小不超過10 MB铜邮,若超過這個(gè)大小,將數(shù)據(jù)存到HDFS翩概,hbase僅存一個(gè)指向該數(shù)據(jù)的指針牲距。
  3. 每個(gè)表?yè)碛?到3個(gè)column family,可以的話钥庇,盡可能做到一張表只有1個(gè)column family牍鞠。
  4. 一個(gè)擁有1到2個(gè)column family的表最佳region數(shù)量為50-100個(gè),需要注意一個(gè)region實(shí)際上就是一個(gè)column family的連續(xù)段评姨。
  5. column family名需要盡可能的短难述,最好用一個(gè)字母就能表示。
  6. 假如row key是單調(diào)遞增的話吐句,那么可能會(huì)引發(fā)一個(gè)問題胁后,就是所有的數(shù)據(jù)讀寫都集中在某一個(gè)region,而老的region將不會(huì)被充分利用嗦枢,所以row key最好不要是單調(diào)遞增的攀芯。

Java客戶端配置

maven加入hbase-shaded-client依賴

<dependency>
    <groupId>org.apache.hbase</groupId>
    <artifactId>hbase-shaded-client</artifactId>
    <version>1.4.9</version>
</dependency>
  • 客戶端版本最好與服務(wù)端版本一致

代碼示例

  1. 創(chuàng)建表
public class HbaseClient {
    
    public static void main(String[] args) throws IOException {
        Connection connection = null;
        Admin admin = null;
        try {
            Configuration config = HBaseConfiguration.create();
            config.set("hbase.zookeeper.quorum", "192.168.41.129");
            connection = ConnectionFactory.createConnection(config);
            admin = connection.getAdmin();
            HTableDescriptor table = new HTableDescriptor(TableName.valueOf("test"));
            table.addFamily(new HColumnDescriptor("cf").setCompressionType(Algorithm.NONE));
            System.out.print("Creating table. ");
            admin.createTable(table);
            System.out.println(" Done.");
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            admin.close();
            connection.close();
        }
    }

}
  1. 放入數(shù)據(jù)到表中
public class HbaseClient {
    
    public static void main(String[] args) throws IOException {
        Connection connection = null;
        Table table = null;
        try {
            Configuration config = HBaseConfiguration.create();
            config.set("hbase.zookeeper.quorum", "192.168.41.129");
            connection = ConnectionFactory.createConnection(config);
            table = connection.getTable(TableName.valueOf("test"));
            Put put = new Put("row1".getBytes());
            put.addColumn("cf".getBytes(), "a".getBytes(), "value1".getBytes());
            table.put(put);
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            table.close();
            connection.close();
        }
    }
    
}
  1. 查看表數(shù)據(jù)
public class HbaseClient {
    
    public static void main(String[] args) throws IOException {
        Connection connection = null;
        Table table = null;
        ResultScanner rs = null;
        try {
            Configuration config = HBaseConfiguration.create();
            config.set("hbase.zookeeper.quorum", "192.168.41.129");
            connection = ConnectionFactory.createConnection(config);
            table = connection.getTable(TableName.valueOf("test"));
            Scan scan = new Scan();
            scan.addColumn("cf".getBytes(), "a".getBytes());
            scan.setRowPrefixFilter(Bytes.toBytes("row"));
            rs = table.getScanner(scan);
            for (Result r = rs.next(); r != null; r = rs.next()) {
                System.out.println("row:" + new String(r.getValue("cf".getBytes(), "a".getBytes())));
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            rs.close();
            table.close();
            connection.close();
        }
    }

}

注意

  • Connection是重量級(jí)對(duì)象,而且是線程安全的文虏,所以整個(gè)應(yīng)用里面有一個(gè)該對(duì)象就足夠了侣诺;TableAdminRegionLocator是輕量級(jí)對(duì)象氧秘,所以最好是用完就關(guān)閉年鸳,在需要的時(shí)候再獲取即可。

知識(shí)點(diǎn)

TTL

alter 'test', NAME => 'cf', TTL=> 100

設(shè)置超時(shí)時(shí)間為100秒丸相,這里是按column family設(shè)置的搔确。

數(shù)據(jù)塊編碼

正確使用數(shù)據(jù)塊編碼可以有效節(jié)省存儲(chǔ)空間,但也會(huì)為隨之帶來的編碼解碼工作所累,而帶來數(shù)據(jù)讀寫效率的下降膳算。hbase提供了四種數(shù)據(jù)塊編碼供選擇座硕,分別是:PrefixDiff畦幢,Fast Diff坎吻,Prefix Tree。具體選用哪一種宇葱,可根據(jù)你的具體需求來決定瘦真。

alter 'test', NAME => 'cf', DATA_BLOCK_ENCODING => 'FAST_DIFF'

這里設(shè)置的數(shù)據(jù)塊編碼為Fast Diff

配置web UI

<property>
  <name>hbase.master.info.port</name>
  <value>16010</value>
</property>

<property>
  <name>hbase.regionserver.info.port</name>
  <value>16030</value>
</property>

注意黍瞧,在單機(jī)模式下部署hbase時(shí)诸尽,這兩個(gè)端口會(huì)由hbase隨機(jī)選擇

問題

  • Directory is not empty
2019-04-23 11:34:26,632 WARN  [ProcedureExecutor-1] master.SplitLogManager: Returning success without actually splitting and deleting all the log files in path hdfs://localhost:9000/hbase/WALs/centos,54477,1555989722027-splitting: [FileStatus{path=hdfs://localhost:9000/hbase/WALs/centos,54477,1555989722027-splitting/centos%2C54477%2C1555989722027.meta.1555989759561.meta; isDirectory=false; length=1084; replication=3; blocksize=134217728; modification_time=1555989769891; access_time=1555989759573; owner=root; group=supergroup; permission=rw-r--r--; isSymlink=false}, FileStatus{path=hdfs://localhost:9000/hbase/WALs/centos,54477,1555989722027-splitting/centos%2C54477%2C1555989722027.meta.1555989860335.meta; isDirectory=false; length=91; replication=3; blocksize=134217728; modification_time=1555989922609; access_time=1555989860342; owner=root; group=supergroup; permission=rw-r--r--; isSymlink=false}]
org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.fs.PathIsNotEmptyDirectoryException): `/hbase/WALs/centos,54477,1555989722027-splitting is non empty': Directory is not empty
    at org.apache.hadoop.hdfs.server.namenode.FSDirDeleteOp.delete(FSDirDeleteOp.java:84)
    at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.delete(FSNamesystem.java:3690)
    at org.apache.hadoop.hdfs.server.namenode.NameNodeRpcServer.delete(NameNodeRpcServer.java:953)
    at org.apache.hadoop.hdfs.protocolPB.ClientNamenodeProtocolServerSideTranslatorPB.delete(ClientNamenodeProtocolServerSideTranslatorPB.java:623)
    at org.apache.hadoop.hdfs.protocol.proto.ClientNamenodeProtocolProtos$ClientNamenodeProtocol$2.callBlockingMethod(ClientNamenodeProtocolProtos.java)
    at org.apache.hadoop.ipc.ProtobufRpcEngine$Server$ProtoBufRpcInvoker.call(ProtobufRpcEngine.java:616)
    at org.apache.hadoop.ipc.RPC$Server.call(RPC.java:982)
    at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:2217)
    at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:2213)
    at java.security.AccessController.doPrivileged(Native Method)
    at javax.security.auth.Subject.doAs(Subject.java:422)
    at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1762)
    at org.apache.hadoop.ipc.Server$Handler.run(Server.java:2211)

    at org.apache.hadoop.ipc.Client.call(Client.java:1476)
    at org.apache.hadoop.ipc.Client.call(Client.java:1413)
    at org.apache.hadoop.ipc.ProtobufRpcEngine$Invoker.invoke(ProtobufRpcEngine.java:229)
    at com.sun.proxy.$Proxy16.delete(Unknown Source)
    at org.apache.hadoop.hdfs.protocolPB.ClientNamenodeProtocolTranslatorPB.delete(ClientNamenodeProtocolTranslatorPB.java:545)
    at sun.reflect.GeneratedMethodAccessor9.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.apache.hadoop.io.retry.RetryInvocationHandler.invokeMethod(RetryInvocationHandler.java:191)
    at org.apache.hadoop.io.retry.RetryInvocationHandler.invoke(RetryInvocationHandler.java:102)
    at com.sun.proxy.$Proxy17.delete(Unknown Source)
    at sun.reflect.GeneratedMethodAccessor9.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.apache.hadoop.hbase.fs.HFileSystem$1.invoke(HFileSystem.java:307)
    at com.sun.proxy.$Proxy18.delete(Unknown Source)
    at sun.reflect.GeneratedMethodAccessor9.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.apache.hadoop.hbase.fs.HFileSystem$1.invoke(HFileSystem.java:307)
    at com.sun.proxy.$Proxy18.delete(Unknown Source)
    at org.apache.hadoop.hdfs.DFSClient.delete(DFSClient.java:2044)
    at org.apache.hadoop.hdfs.DistributedFileSystem$14.doCall(DistributedFileSystem.java:707)
    at org.apache.hadoop.hdfs.DistributedFileSystem$14.doCall(DistributedFileSystem.java:703)
    at org.apache.hadoop.fs.FileSystemLinkResolver.resolve(FileSystemLinkResolver.java:81)
    at org.apache.hadoop.hdfs.DistributedFileSystem.delete(DistributedFileSystem.java:714)
    at org.apache.hadoop.hbase.master.SplitLogManager.splitLogDistributed(SplitLogManager.java:296)
    at org.apache.hadoop.hbase.master.MasterFileSystem.splitLog(MasterFileSystem.java:433)
    at org.apache.hadoop.hbase.master.MasterFileSystem.splitLog(MasterFileSystem.java:406)
    at org.apache.hadoop.hbase.master.MasterFileSystem.splitLog(MasterFileSystem.java:323)
    at org.apache.hadoop.hbase.master.procedure.ServerCrashProcedure.splitLogs(ServerCrashProcedure.java:440)
    at org.apache.hadoop.hbase.master.procedure.ServerCrashProcedure.executeFromState(ServerCrashProcedure.java:253)
    at org.apache.hadoop.hbase.master.procedure.ServerCrashProcedure.executeFromState(ServerCrashProcedure.java:75)
    at org.apache.hadoop.hbase.procedure2.StateMachineProcedure.execute(StateMachineProcedure.java:139)
    at org.apache.hadoop.hbase.procedure2.Procedure.doExecute(Procedure.java:506)
    at org.apache.hadoop.hbase.procedure2.ProcedureExecutor.execProcedure(ProcedureExecutor.java:1167)
    at org.apache.hadoop.hbase.procedure2.ProcedureExecutor.execLoop(ProcedureExecutor.java:955)
    at org.apache.hadoop.hbase.procedure2.ProcedureExecutor.execLoop(ProcedureExecutor.java:908)
    at org.apache.hadoop.hbase.procedure2.ProcedureExecutor.access$400(ProcedureExecutor.java:77)
    at org.apache.hadoop.hbase.procedure2.ProcedureExecutor$2.run(ProcedureExecutor.java:482)

解決辦法是:進(jìn)入hadoop文件系統(tǒng),刪除掉報(bào)錯(cuò)的目錄或整個(gè)WALs印颤。

bin/hadoop fs -ls /hbase/WALs
bin/hadoop fs -rm -r /hbase/WALs

  • java客戶端遠(yuǎn)程連接hbase時(shí)您机,有可能會(huì)出現(xiàn)下面的問題:
org.apache.hadoop.hbase.client.RetriesExhaustedException: Failed after attempts=36, exceptions:
Wed Mar 27 17:31:57 CST 2019, null, java.net.SocketTimeoutException: callTimeout=60000, callDuration=76610: Call to localhost/127.0.0.1:38364 failed on connection exception: java.net.ConnectException: Connection refused: no further information row 'test,row,99999999999999' on table 'hbase:meta' at region=hbase:meta,,1.1588230740, hostname=localhost,38364,1553670561949, seqNum=0

    at org.apache.hadoop.hbase.client.RpcRetryingCallerWithReadReplicas.throwEnrichedException(RpcRetryingCallerWithReadReplicas.java:329)
    at org.apache.hadoop.hbase.client.ScannerCallableWithReplicas.call(ScannerCallableWithReplicas.java:242)
    at org.apache.hadoop.hbase.client.ScannerCallableWithReplicas.call(ScannerCallableWithReplicas.java:58)
    at org.apache.hadoop.hbase.client.RpcRetryingCaller.callWithoutRetries(RpcRetryingCaller.java:219)
    at org.apache.hadoop.hbase.client.ClientScanner.call(ClientScanner.java:275)
    at org.apache.hadoop.hbase.client.ClientScanner.loadCache(ClientScanner.java:436)
    at org.apache.hadoop.hbase.client.ClientScanner.next(ClientScanner.java:310)
    at org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation.locateRegionInMeta(ConnectionManager.java:1341)
    at org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation.locateRegion(ConnectionManager.java:1230)
    at org.apache.hadoop.hbase.client.RpcRetryingCallerWithReadReplicas.getRegionLocations(RpcRetryingCallerWithReadReplicas.java:356)
    at org.apache.hadoop.hbase.client.ScannerCallableWithReplicas.call(ScannerCallableWithReplicas.java:153)
    at org.apache.hadoop.hbase.client.ScannerCallableWithReplicas.call(ScannerCallableWithReplicas.java:58)
    at org.apache.hadoop.hbase.client.RpcRetryingCaller.callWithoutRetries(RpcRetryingCaller.java:219)
    at org.apache.hadoop.hbase.client.ClientScanner.call(ClientScanner.java:275)
    at org.apache.hadoop.hbase.client.ClientScanner.loadCache(ClientScanner.java:436)
    at org.apache.hadoop.hbase.client.ClientScanner.next(ClientScanner.java:310)
    at com.hychong.coreutil.HbaseClient.main(HbaseClient.java:51)
Caused by: java.net.SocketTimeoutException: callTimeout=60000, callDuration=76610: Call to localhost/127.0.0.1:38364 failed on connection exception: java.net.ConnectException: Connection refused: no further information row 'test,row,99999999999999' on table 'hbase:meta' at region=hbase:meta,,1.1588230740, hostname=localhost,38364,1553670561949, seqNum=0
    at org.apache.hadoop.hbase.client.RpcRetryingCaller.callWithRetries(RpcRetryingCaller.java:178)
    at org.apache.hadoop.hbase.client.ResultBoundedCompletionService$QueueingFuture.run(ResultBoundedCompletionService.java:80)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
Caused by: java.net.ConnectException: Call to localhost/127.0.0.1:38364 failed on connection exception: java.net.ConnectException: Connection refused: no further information
    at org.apache.hadoop.hbase.ipc.IPCUtil.wrapException(IPCUtil.java:165)
    at org.apache.hadoop.hbase.ipc.AbstractRpcClient.onCallFinished(AbstractRpcClient.java:389)
    at org.apache.hadoop.hbase.ipc.AbstractRpcClient.access$100(AbstractRpcClient.java:94)
    at org.apache.hadoop.hbase.ipc.AbstractRpcClient$3.run(AbstractRpcClient.java:409)
    at org.apache.hadoop.hbase.ipc.AbstractRpcClient$3.run(AbstractRpcClient.java:405)
    at org.apache.hadoop.hbase.ipc.Call.callComplete(Call.java:103)
    at org.apache.hadoop.hbase.ipc.Call.setException(Call.java:118)
    at org.apache.hadoop.hbase.ipc.AbstractRpcClient.callMethod(AbstractRpcClient.java:422)
    at org.apache.hadoop.hbase.ipc.AbstractRpcClient.callBlockingMethod(AbstractRpcClient.java:327)
    at org.apache.hadoop.hbase.ipc.AbstractRpcClient.access$200(AbstractRpcClient.java:94)
    at org.apache.hadoop.hbase.ipc.AbstractRpcClient$BlockingRpcChannelImplementation.callBlockingMethod(AbstractRpcClient.java:571)
    at org.apache.hadoop.hbase.protobuf.generated.ClientProtos$ClientService$BlockingStub.scan(ClientProtos.java:37059)
    at org.apache.hadoop.hbase.client.ScannerCallable.openScanner(ScannerCallable.java:405)
    at org.apache.hadoop.hbase.client.ScannerCallable.call(ScannerCallable.java:274)
    at org.apache.hadoop.hbase.client.ScannerCallable.call(ScannerCallable.java:62)
    at org.apache.hadoop.hbase.client.RpcRetryingCaller.callWithoutRetries(RpcRetryingCaller.java:219)
    at org.apache.hadoop.hbase.client.ScannerCallableWithReplicas$RetryingRPC.call(ScannerCallableWithReplicas.java:388)
    at org.apache.hadoop.hbase.client.ScannerCallableWithReplicas$RetryingRPC.call(ScannerCallableWithReplicas.java:362)
    at org.apache.hadoop.hbase.client.RpcRetryingCaller.callWithRetries(RpcRetryingCaller.java:142)
    ... 4 more
Caused by: java.net.ConnectException: Connection refused: no further information
    at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)
    at sun.nio.ch.SocketChannelImpl.finishConnect(Unknown Source)
    at org.apache.hadoop.net.SocketIOWithTimeout.connect(SocketIOWithTimeout.java:206)
    at org.apache.hadoop.net.NetUtils.connect(NetUtils.java:531)
    at org.apache.hadoop.net.NetUtils.connect(NetUtils.java:495)
    at org.apache.hadoop.hbase.ipc.BlockingRpcConnection.setupConnection(BlockingRpcConnection.java:256)
    at org.apache.hadoop.hbase.ipc.BlockingRpcConnection.setupIOstreams(BlockingRpcConnection.java:437)
    at org.apache.hadoop.hbase.ipc.BlockingRpcConnection.writeRequest(BlockingRpcConnection.java:540)
    at org.apache.hadoop.hbase.ipc.BlockingRpcConnection.tracedWriteRequest(BlockingRpcConnection.java:520)
    at org.apache.hadoop.hbase.ipc.BlockingRpcConnection.access$200(BlockingRpcConnection.java:85)
    at org.apache.hadoop.hbase.ipc.BlockingRpcConnection$4.run(BlockingRpcConnection.java:724)
    at org.apache.hadoop.hbase.ipc.HBaseRpcControllerImpl.notifyOnCancel(HBaseRpcControllerImpl.java:240)
    at org.apache.hadoop.hbase.ipc.BlockingRpcConnection.sendRequest(BlockingRpcConnection.java:699)
    at org.apache.hadoop.hbase.ipc.AbstractRpcClient.callMethod(AbstractRpcClient.java:420)
    ... 15 more

解決問題的辦法:hbase客戶端和hbase服務(wù)端所在主機(jī)的hosts文件中,都添加

192.168.41.129  centos
  • 左邊是hbase所在服務(wù)器的ip年局,右邊是主機(jī)名
  • 服務(wù)端修改hosts文件之后际看,需要清除掉相關(guān)數(shù)據(jù)文件之后(按本文的配置,需清除/data/hbase/data/zookeeper兩個(gè)文件夾)矢否,重新啟動(dòng)hbase仲闽。

參考資料

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市僵朗,隨后出現(xiàn)的幾起案子赖欣,更是在濱河造成了極大的恐慌,老刑警劉巖验庙,帶你破解...
    沈念sama閱讀 219,427評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件顶吮,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡粪薛,警方通過查閱死者的電腦和手機(jī)悴了,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,551評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來违寿,“玉大人让禀,你說我怎么就攤上這事≡山纾” “怎么了?”我有些...
    開封第一講書人閱讀 165,747評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵痛阻,是天一觀的道長(zhǎng)菌瘪。 經(jīng)常有香客問我,道長(zhǎng),這世上最難降的妖魔是什么俏扩? 我笑而不...
    開封第一講書人閱讀 58,939評(píng)論 1 295
  • 正文 為了忘掉前任糜工,我火速辦了婚禮,結(jié)果婚禮上录淡,老公的妹妹穿的比我還像新娘捌木。我一直安慰自己,他們只是感情好嫉戚,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,955評(píng)論 6 392
  • 文/花漫 我一把揭開白布刨裆。 她就那樣靜靜地躺著,像睡著了一般彬檀。 火紅的嫁衣襯著肌膚如雪帆啃。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,737評(píng)論 1 305
  • 那天窍帝,我揣著相機(jī)與錄音努潘,去河邊找鬼。 笑死坤学,一個(gè)胖子當(dāng)著我的面吹牛疯坤,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播深浮,決...
    沈念sama閱讀 40,448評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼压怠,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了略号?” 一聲冷哼從身側(cè)響起刑峡,我...
    開封第一講書人閱讀 39,352評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎玄柠,沒想到半個(gè)月后突梦,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,834評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡羽利,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,992評(píng)論 3 338
  • 正文 我和宋清朗相戀三年宫患,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片这弧。...
    茶點(diǎn)故事閱讀 40,133評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡娃闲,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出匾浪,到底是詐尸還是另有隱情皇帮,我是刑警寧澤,帶...
    沈念sama閱讀 35,815評(píng)論 5 346
  • 正文 年R本政府宣布蛋辈,位于F島的核電站属拾,受9級(jí)特大地震影響将谊,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜渐白,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,477評(píng)論 3 331
  • 文/蒙蒙 一尊浓、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧纯衍,春花似錦栋齿、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,022評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至励堡,卻和暖如春谷丸,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背应结。 一陣腳步聲響...
    開封第一講書人閱讀 33,147評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工刨疼, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人鹅龄。 一個(gè)月前我還...
    沈念sama閱讀 48,398評(píng)論 3 373
  • 正文 我出身青樓揩慕,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親扮休。 傳聞我的和親對(duì)象是個(gè)殘疾皇子迎卤,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,077評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 一、簡(jiǎn)介 Hbase:全名Hadoop DataBase玷坠,是一種開源的蜗搔,可伸縮的,嚴(yán)格一致性(并非最終一致性)的分...
    菜鳥小玄閱讀 2,388評(píng)論 0 12
  • 本文首先簡(jiǎn)單介紹了HBase,然后重點(diǎn)講述了HBase的高并發(fā)和實(shí)時(shí)處理數(shù)據(jù) 八堡、HBase數(shù)據(jù)模型樟凄、HBase物理...
    達(dá)微閱讀 2,735評(píng)論 1 13
  • Hive操作命令: 創(chuàng)建表: 創(chuàng)建一個(gè)新表,結(jié)構(gòu)與其他一樣
    行走在朝圣路上閱讀 1,846評(píng)論 0 1
  • pyspark.sql模塊 模塊上下文 Spark SQL和DataFrames的重要類: pyspark.sql...
    mpro閱讀 9,457評(píng)論 0 13
  • Hbase架構(gòu)與原理 HBase是一個(gè)分布式的兄渺、面向列的開源數(shù)據(jù)庫(kù)缝龄,該技術(shù)來源于 Fay Chang所撰寫的Goo...
    全能程序猿閱讀 86,296評(píng)論 2 37