W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
在本節(jié)中,我們列出了使用HBase時(shí)所需要的服務(wù)和一些必需的系統(tǒng)配置。
Java是Hadoop和HBase主要先決條件。首先應(yīng)該使用"java -verion"檢查java是否存在在您的系統(tǒng)上。 java -version 命令的語法如下。
$ java -version
如果一切正常,它會(huì)得到下面的輸出。
java version "1.7.0_71"
Java(TM) SE Runtime Environment (build 1.7.0_71-b13)
Java HotSpot(TM) Client VM (build 25.0-b02, mixed mode)
如果Java還沒有安裝在系統(tǒng)中,請(qǐng)你安裝Java!
在下表中你可以看到HBase版本與其對(duì)應(yīng)支持的JDK版本:
HBase版本 | JDK 7 | JDK 8 |
---|---|---|
2.0 |
支持
|
|
1.3 |
支持 |
支持
|
1.2 |
支持 |
支持
|
1.1 |
支持
|
使用JDK 8運(yùn)行將會(huì)正常工作,但是沒有得到很好的測(cè)試。 |
注意:HBase不會(huì)使用Java 6構(gòu)建或編譯,并且,您必須在群集的每個(gè)節(jié)點(diǎn)上設(shè)置JAVA_HOME
,hbase-env.sh 提供了一個(gè)方便的機(jī)制來做到這一點(diǎn)。
(必須的)HBase廣泛使用安全Shell(ssh)命令和實(shí)用程序在集群節(jié)點(diǎn)之間進(jìn)行通信。集群中的每臺(tái)服務(wù)器都必須運(yùn)行ssh
,以便可以管理Hadoop和HBase后臺(tái)進(jìn)程。您必須能夠使用共享密鑰而不是密碼,通過SSH(包括本地節(jié)點(diǎn))從主服務(wù)器和任何備份主服務(wù)器連接到所有節(jié)點(diǎn)。您可以在Linux或Unix系統(tǒng)中的“Procedure:Configure Passwordless SSH Access ”(配置無密碼SSH訪問)中看到這種設(shè)置的基本方法。如果群集節(jié)點(diǎn)使用OS
X,請(qǐng)參閱Hadoop wiki上的,SSH:設(shè)置遠(yuǎn)程桌面和啟用自登錄。
HBase使用本地主機(jī)名來自行報(bào)告其IP地址。正向和反向DNS解析必須在0.92.0之前的HBase版本中工作。hadoop-dns-checker 工具,可以用來驗(yàn)證DNS在集群上是否正常工作。項(xiàng)目README
文件提供了有關(guān)使用的詳細(xì)說明。
在hbase-0.96.0之前,HBase只使用IP地址127.0.0.1
來引用localhost
,而這是不可配置的。有關(guān)更多詳細(xì)信息,請(qǐng)參閱Loopback IP。
群集節(jié)點(diǎn)上的時(shí)鐘應(yīng)該同步。少量的變化是可以接受的,但是大量的不同會(huì)導(dǎo)致不穩(wěn)定和意外的行為。如果在群集中看到無法解釋的問題,則時(shí)間同步是首先要檢查的事項(xiàng)之一。建議您在群集上運(yùn)行網(wǎng)絡(luò)時(shí)間協(xié)議(NTP)服務(wù)或其他時(shí)間同步機(jī)制,并且所有節(jié)點(diǎn)都查找相同的服務(wù)以進(jìn)行時(shí)間同步。請(qǐng)參閱Linux文檔項(xiàng)目(TLDP)中的基本NTP配置以設(shè)置NTP。
Apache HBase是一個(gè)數(shù)據(jù)庫。它需要能夠一次打開大量的文件。許多Linux發(fā)行版限制了允許單個(gè)用戶打開的文件數(shù)量1024
(或者256
,在舊版本的OS X上)。當(dāng)以運(yùn)行 HBase 的用戶身份登錄時(shí),您可以通過在服務(wù)器上運(yùn)行ulimit -n
命令來檢查服務(wù)器上的限制。您也可能會(huì)注意到以下錯(cuò)誤:
2010-04-06 03:04:37,542信息org.apache.hadoop.hdfs.DFSClient:異常increateBlockOutputStream java.io.EOFException
2010-04-06 03:04:37,542 INFO org.apache.hadoop.hdfs.DFSClient:放棄塊blk_-6935524980745310745_1391901
建議將ulimit提高到至少10,000,但更可能是10,240,因?yàn)樵撝低ǔR?024的倍數(shù)表示。每個(gè)ColumnFamily至少有一個(gè)StoreFile,如果該區(qū)域處于加載狀態(tài),則可能有多于六個(gè)的StoreFile。所需的打開文件的數(shù)量取決于ColumnFamilies的數(shù)量和區(qū)域的數(shù)量。以下是計(jì)算RegionServer上打開的文件的潛在數(shù)量的粗略公式。
(每個(gè)ColumnFamily的StoreFiles)x(每個(gè)RegionServer的區(qū)域)
例如,假設(shè)一個(gè)模式的每個(gè)區(qū)域有3個(gè)ColumnFamilies,每個(gè)ColumnFamily平均有3個(gè)StoreFiles,每個(gè)RegionServer有100個(gè)區(qū)域,則JVM將打開3 * 3 * 100 = 900
文件描述符,不包括打開的JAR文件、配置文件等等。打開一個(gè)文件不需要很多資源,而且允許用戶打開太多文件的風(fēng)險(xiǎn)很小。
另一個(gè)相關(guān)設(shè)置是允許用戶同時(shí)運(yùn)??行的進(jìn)程數(shù)量。在Linux和Unix中,使用該ulimit -u
命令設(shè)置進(jìn)程的數(shù)量。這不應(yīng)與nproc
命令混淆,該命令控制給定用戶可用的CPU數(shù)量。在負(fù)載下,ulimit -u
太低會(huì)導(dǎo)致OutOfMemoryError異常。
為運(yùn)行HBase進(jìn)程的用戶配置文件描述符和進(jìn)程的最大數(shù)量是操作系統(tǒng)配置,而不是HBase配置。確保為實(shí)際運(yùn)行HBase的用戶更改設(shè)置也很重要。要查看哪個(gè)用戶啟動(dòng)了HBase,以及該用戶的ulimit配置,請(qǐng)查看該實(shí)例的HBase日志的第一行。
示例:ulimit
在Ubuntu上的設(shè)置
要在Ubuntu上配置ulimit設(shè)置,請(qǐng)編輯:/etc/security/limits.conf,它是一個(gè)由四列組成的空格分隔的文件。在以下示例中,第一行將用戶名為hadoop的操作系統(tǒng)用戶的打開文件數(shù)(nofile)的軟限制和硬限制設(shè)置為32768。第二行將同一用戶的進(jìn)程數(shù)設(shè)置為32000。
hadoop - nofile 32768
hadoop - nproc 32000
這些設(shè)置僅適用于可插入身份驗(yàn)證模塊(PAM)環(huán)境指示使用它們的情況。要配置PAM以使用這些限制,請(qǐng)確保/etc/pam.d/common-session文件包含以下行:
session required pam_limits.so
所有HBase附帶的shell腳本都依賴于 GNU Bash shell。
在HBase 0.96之前,在Microsoft Windows上運(yùn)行HBase僅限于測(cè)試目的。不建議在Windows計(jì)算機(jī)上運(yùn)行生產(chǎn)系統(tǒng)。
下表總結(jié)了每個(gè)HBase版本支持的Hadoop版本?;贖Base的版本,您應(yīng)該選擇最合適的Hadoop版本。參考更多關(guān)于Hadoop環(huán)境配置的內(nèi)容!
建議使用 Hadoop 2.x:Hadoop 2.x 速度更快,包括短路讀取功能,這將有助于提高您的 HBase 隨機(jī)讀取配置文件;Hadoop 2.x 還包括重要的 bug 修復(fù),可以改善您的整體 HBase 體驗(yàn);HBase 不支持使用早期版本的 Hadoop 運(yùn)行;有關(guān)特定于不同 HBase 版本的要求,請(qǐng)參見下表;Hadoop 3.x 仍處于早期訪問版本中,尚未被 HBase 社區(qū)對(duì)生產(chǎn)用例進(jìn)行充分測(cè)試。
使用以下的注解來解釋下面的這個(gè)表格:
Hadoop版本支持矩陣:
HBase的-1.1.x中 | HBase的-1.2.x的 | HBase的-1.3.x的 | HBase的-2.0.x版本 | |
---|---|---|---|---|
Hadoop-2.0.x-alpha
|
X |
X |
X |
X |
Hadoop-2.1.0-beta
|
X |
X |
X |
X |
Hadoop-2.2.0
|
NT |
X |
X |
X |
Hadoop-2.3.x
|
NT |
X |
X |
X |
Hadoop-2.4.x
|
S |
S |
S |
X |
Hadoop-2.5.x
|
S |
S |
S |
X |
Hadoop-2.6.0
|
X |
X |
X |
X |
Hadoop-2.6.1+
|
NT |
S |
S |
S |
Hadoop-2.7.0
|
X |
X |
X |
X |
Hadoop-2.7.1+
|
NT |
S |
S |
S |
Hadoop-2.8.0
|
X |
X |
X |
X |
Hadoop-2.8.1 |
X |
X |
X |
X |
Hadoop-3.0.0 |
NT |
NT |
NT |
NT |
在 Kerberos 環(huán)境中使用 pre-2.6.1 Hadoop 版本和 JDK 1.8 時(shí),HBase 服務(wù)器可能因 Kerberos keytab relogin 錯(cuò)誤而失敗并中止。JDK 1.7 (1.7. 0_80) 的后期版本也有問題。在這種情況下考慮升級(jí)到Hadoop 2.6.1+。
如果您計(jì)劃在 HDFS 加密區(qū)域的頂部運(yùn)行 HBase,則基于 2.6.x 行的 Hadoop 發(fā)行版必須具有 HADOOP-11710 應(yīng)用。如果不這樣做,將導(dǎo)致群集故障和數(shù)據(jù)丟失。此修補(bǔ)程序存在于Apache Hadoop 2.6.1+版本中。
Hadoop 2.7.0版本未經(jīng)測(cè)試或不受支持,因?yàn)镠adoop PMC明確將該版本標(biāo)記為不穩(wěn)定。
Hadoop 2.8.0和2.8.1版本未經(jīng)測(cè)試或不受支持,因?yàn)镠adoop PMC明確標(biāo)記版本不穩(wěn)定。
因?yàn)?nbsp;HBase 依賴于Hadoop,它將Hadoop jar的一個(gè)實(shí)例捆綁在其 lib 目錄下。捆綁的 jar 僅用于在獨(dú)立模式下使用。在分布式模式下,群集上的 Hadoop 版本與 HBase 下的內(nèi)容相匹配是至關(guān)重要的。將在 HBase lib 目錄中找到的 hadoop jar 替換為您在群集上運(yùn)行的 hadoop jar,以避免版本不匹配問題。確保在整個(gè)集群中替換 HBase 中的 jar。
HDFS DataNode在任何時(shí)候都會(huì)有一個(gè)文件數(shù)上限。在進(jìn)行任何加載之前,請(qǐng)確保您已經(jīng)配置了Hadoop的conf / hdfs-site.xml,并將該dfs.datanode.max.transfer.threads值設(shè)置為至少如下的值:
<property>
<name>dfs.datanode.max.transfer.threads</name>
<value>4096</value>
</property>
進(jìn)行上述配置后,務(wù)必重新啟動(dòng)HDFS。
沒有這個(gè)配置就會(huì)造成奇怪的故障。其中一種表現(xiàn)是對(duì)缺失區(qū)塊的投訴。例如:
10/12/08 20:10:31 INFO hdfs.DFSClient: Could not obtain block
blk_XXXXXXXXXXXXXXXXXXXXXX_YYYYYYYY from any node: java.io.IOException: No live nodes
contain current block. Will get new block locations from namenode and retry...
動(dòng)物園管理員3.4.x 是必需的。HBase 使用的多功能, 只可從動(dòng)物園管理員3.4.0。hbase.zookeeper.useMulti 配置屬性默認(rèn)為 true。參考 HBASE-12241 (在采用deadserver的復(fù)制隊(duì)列時(shí)會(huì)中斷復(fù)制的regionServer的崩潰) 和 HBASE-6775 (在可用于HBASE-6710 0.92 / 0.94兼容性修補(bǔ)程序時(shí)使用ZK.multi)。該屬性被棄用,并且在 HBase 2.0 中始終啟用 useMulti。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: