3. HBase基础条件

在本节中,我们列出了使用HBase时所需要的服务和一些必需的系统配置。

一. 安装Java

Java是Hadoop和HBase主要先决条件。首先应该使用"java -verion"检查java是否存在在您的系统上。 java -version 命令的语法如下。

$ java -version

如果一切正常,它会得到下面的输出。

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还没有安装在系统中,请你安装Java

二. HBase版本与JDK

在下表中你可以看到HBase版本与其对应支持的JDK版本:

<colgroup><col><col><col></colgroup>

HBase版本 JDK 7 JDK 8
2.0 不支持 支持
1.3 支持 支持
1.2 支持 支持
1.1 支持 使用JDK 8运行将会正常工作,但是没有得到很好的测试。

注意:HBase不会使用Java 6构建或编译,并且,您必须在群集的每个节点上设置JAVA_HOME,hbase-env.sh 提供了一个方便的机制来做到这一点。

三. 操作系统

1. SSH

(必须的)HBase广泛使用安全Shell(ssh)命令和实用程序在集群节点之间进行通信。集群中的每台服务器都必须运行ssh,以便可以管理Hadoop和HBase后台进程。您必须能够使用共享密钥而不是密码,通过SSH(包括本地节点)从主服务器和任何备份主服务器连接到所有节点。您可以在Linux或Unix系统中的“Procedure:Configure Passwordless SSH Access ”(配置无密码SSH访问)中看到这种设置的基本方法。如果群集节点使用OS X,请参阅Hadoop wiki上的,SSH:设置远程桌面和启用自登录

2. DNS

HBase使用本地主机名来自行报告其IP地址。正向和反向DNS解析必须在0.92.0之前的HBase版本中工作。hadoop-dns-checker 工具,可以用来验证DNS在集群上是否正常工作。项目README文件提供了有关使用的详细说明。

3. Loopback IP

在hbase-0.96.0之前,HBase只使用IP地址127.0.0.1来引用localhost,而这是不可配置的。有关更多详细信息,请参阅Loopback IP。

4. NTP

群集节点上的时钟应该同步。少量的变化是可以接受的,但是大量的不同会导致不稳定和意外的行为。如果在群集中看到无法解释的问题,则时间同步是首先要检查的事项之一。建议您在群集上运行网络时间协议(NTP)服务或其他时间同步机制,并且所有节点都查找相同的服务以进行时间同步。请参阅Linux文档项目(TLDP)中的基本NTP配置以设置NTP。

5. 文件和进程数限制(ulimit)

Apache HBase是一个数据库。它需要能够一次打开大量的文件。许多Linux发行版限制了允许单个用户打开的文件数量1024(或者256,在旧版本的OS X上)。当以运行 HBase 的用户身份登录时,您可以通过在服务器上运行ulimit -n命令来检查服务器上的限制。您也可能会注意到以下错误:

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,因为该值通常以1024的倍数表示。每个ColumnFamily至少有一个StoreFile,如果该区域处于加载状态,则可能有多于六个的StoreFile。所需的打开文件的数量取决于ColumnFamilies的数量和区域的数量。以下是计算RegionServer上打开的文件的潜在数量的粗略公式。

6. 计算打开文件的潜在数量

(每个ColumnFamily的StoreFiles)x(每个RegionServer的区域)

例如,假设一个模式的每个区域有3个ColumnFamilies,每个ColumnFamily平均有3个StoreFiles,每个RegionServer有100个区域,则JVM将打开3 * 3 * 100 = 900文件描述符,不包括打开的JAR文件、配置文件等等。打开一个文件不需要很多资源,而且允许用户打开太多文件的风险很小。

7. 允许用户同时运​​行的进程数量

另一个相关设置是允许用户同时运​​行的进程数量。在Linux和Unix中,使用该ulimit -u命令设置进程的数量。这不应与nproc命令混淆,该命令控制给定用户可用的CPU数量。在负载下,ulimit -u太低会导致OutOfMemoryError异常。

为运行HBase进程的用户配置文件描述符和进程的最大数量是操作系统配置,而不是HBase配置。确保为实际运行HBase的用户更改设置也很重要。要查看哪个用户启动了HBase,以及该用户的ulimit配置,请查看该实例的HBase日志的第一行。

示例:ulimit在Ubuntu上的设置

要在Ubuntu上配置ulimit设置,请编辑:/etc/security/limits.conf,它是一个由四列组成的空格分隔的文件。在以下示例中,第一行将用户名为hadoop的操作系统用户的打开文件数(nofile)的软限制和硬限制设置为32768。第二行将同一用户的进程数设置为32000。

hadoop  -  nofile 32768
hadoop  -  nproc 32000

这些设置仅适用于可插入身份验证模块(PAM)环境指示使用它们的情况。要配置PAM以使用这些限制,请确保/etc/pam.d/common-session文件包含以下行:

session required  pam_limits.so

8. Linux Shell

所有HBase附带的shell脚本都依赖于 GNU Bash shell。

9. Windows

在HBase 0.96之前,在Microsoft Windows上运行HBase仅限于测试目的。不建议在Windows计算机上运行生产系统。

四. Hadoop

下表总结了每个HBase版本支持的Hadoop版本。基于HBase的版本,您应该选择最合适的Hadoop版本。参考更多关于Hadoop环境配置的内容!

1. 建议使用 Hadoop 2.x

Hadoop 2.x 速度更快,包括短路读取功能,这将有助于提高您的 HBase 随机读取配置文件;Hadoop 2.x 还包括重要的 bug 修复,可以改善您的整体 HBase 体验;HBase 不支持使用早期版本的 Hadoop 运行;有关特定于不同 HBase 版本的要求,请参见下表;Hadoop 3.x 仍处于早期访问版本中,尚未被 HBase 社区对生产用例进行充分测试。

使用以下的注解来解释下面的这个表格:

Hadoop版本支持矩阵:

  • “S”=支持
  • “X”=不支持
  • “NT”=未测试
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

2. Hadoop Pre-2.6.1 和 JDK 1.8 Kerberos

在 Kerberos 环境中使用 pre-2.6.1 Hadoop 版本和 JDK 1.8 时,HBase 服务器可能因 Kerberos keytab relogin 错误而失败并中止。JDK 1.7 (1.7. 0_80) 的后期版本也有问题。在这种情况下考虑升级到Hadoop 2.6.1+。

3. Hadoop 2.6.x

如果您计划在 HDFS 加密区域的顶部运行 HBase,则基于 2.6.x 行的 Hadoop 发行版必须具有 HADOOP-11710 应用。如果不这样做,将导致群集故障和数据丢失。此修补程序存在于Apache Hadoop 2.6.1+版本中。

4. Hadoop 2.7.x

Hadoop 2.7.0版本未经测试或不受支持,因为Hadoop PMC明确将该版本标记为不稳定。

5. Hadoop 2.8.x

Hadoop 2.8.0和2.8.1版本未经测试或不受支持,因为Hadoop PMC明确标记版本不稳定。

6.更换与 HBase 捆绑的 Hadoop

因为 HBase 依赖于Hadoop,它将Hadoop jar的一个实例捆绑在其 lib 目录下。捆绑的 jar 仅用于在独立模式下使用。在分布式模式下,群集上的 Hadoop 版本与 HBase 下的内容相匹配是至关重要的。将在 HBase lib 目录中找到的 hadoop jar 替换为您在群集上运行的 hadoop jar,以避免版本不匹配问题。确保在整个集群中替换 HBase 中的 jar。

7. dfs.datanode.max.transfer.threads

HDFS DataNode在任何时候都会有一个文件数上限。在进行任何加载之前,请确保您已经配置了Hadoop的conf / hdfs-site.xml,并将该dfs.datanode.max.transfer.threads值设置为至少如下的值:

<property>
  <name>dfs.datanode.max.transfer.threads</name>
  <value>4096</value>
</property>

进行上述配置后,务必重新启动HDFS。

没有这个配置就会造成奇怪的故障。其中一种表现是对缺失区块的投诉。例如:

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...

五. ZooKeeper 要求

ZooKeeper 3.4.x 是必需的。HBase 使用的多功能, 只可从ZooKeeper 3.4.0。hbase.zookeeper.useMulti 配置属性默认为 true。参考 HBASE-12241 (在采用deadserver的复制队列时会中断复制的regionServer的崩溃) 和 HBASE-6775 (在可用于HBASE-6710 0.92 / 0.94兼容性修补程序时使用ZK.multi)。该属性被弃用,并且在 HBase 2.0 中始终启用 useMulti。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,458评论 4 363
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,454评论 1 294
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,171评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,062评论 0 207
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,440评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,661评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,906评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,609评论 0 200
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,379评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,600评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,085评论 1 261
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,409评论 2 254
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,072评论 3 237
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,088评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,860评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,704评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,608评论 2 270

推荐阅读更多精彩内容

  • 入门指南 1. 简介 Quickstart会让你启动和运行一个单节点单机HBase。 2. 快速启动 – 单点HB...
    和心数据阅读 4,323评论 1 41
  • 前言 在本节中,你将首先学习单节点、独立的HBase的设置,并且学会运行单节点、独立的HBase实例! 在一个独立...
    步闲阅读 1,808评论 1 3
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,100评论 18 139
  • 关于Mongodb的全面总结 MongoDB的内部构造《MongoDB The Definitive Guide》...
    中v中阅读 31,790评论 2 89
  • 一、开发工程师的具体职责(开发过程的输入、输出) 输入1、需求说明书建立一个智能大棚,拥有综合环境控制系统,利用该...
    最亲的某某阅读 358评论 1 0