《HBase管理指南》一1.8 Hadoop/ZooKeeper/HBase基本配置

1.8 Hadoop/ZooKeeper/HBase基本配置

在进行下一步工作之前,我们需要进行一些基本设置的调优。这都是一些非常基本和非常重要的Hadoop(HDFS)、ZooKeeper和HBase设置,你应该在安装好集群后立刻修改这些设置。

有些设置会对数据持久性或集群可用性产生影响,因此必须进行配置,而另外一些设置则是为保证HBase顺畅运行而推荐你进行的设置。

这些配置的设置值取决于你的硬件、数据量和集群的规模。本节将对此进行一种指南式的描述。你可能需要根据自己的具体环境对这些设置值进行一些修改。

每次修改都需要先同步到所有客户端和从节点上,然后再重新启动相应的守护进程,这样才能使修改生效。

1.8.1 操作步骤

集群的配置应该进行如下一些修改。

1.打开HDFS的dfs.support.append属性。dfs.support.append属性决定HDFS是否支持追加(sync)功能。其默认值为false。必须将其设置为true,否则在区域服务器崩溃时,就有可能丢失数据。

hadoop$ vi $HADOOP_HOME/conf/hdfs-site.xml
  <property>
    <name>dfs.support.append</name>
    <value>true</value>
  </property>

2.调高dfs.datanode.max.xcievers属性的值,使DataNode可以让更多数量的线程保持打开,以便可以处理更多的并发请求。

hadoop$ vi $HADOOP_HOME/conf/hdfs-site.xml
  <property>
    <name>dfs.datanode.max.xcievers</name>
    <value>4096</value>
  </property>

3.调高ZooKeeper堆内存的大小,以使该内存不必进行交换。

hadoop$ vi $ZK_HOME/conf/java.env
export JAVA_OPTS="-Xms1000m -Xmx1000m"

4.调高ZooKeeper的最大客户端连接数,以便处理更多的并发请求。

hadoop$ echo "maxClientCnxns=60" >> $ZK_HOME/conf/zoo.cfg
5.调高HBase堆内存的大小,以使HBase可以顺畅运行。

hadoop$ vi $HBASE_HOME/conf/hbase-env.sh
export HBASE_HEAPSIZE=8000

6.调低zookeeper.session.timeout属性的值,以使HBase可以很快发现某台区域服务器已宕机,并且能够在很短时间内对其进行恢复。

hadoop$ vi $HBASE_HOME/conf/hbase-site.xml
  <property>
    <name>zookeeper.session.timeout</name>
    <value>60000</value>
  </property>

7.若要修改Hadoop/ZooKeeper/HBase的日志设置,需要修改Hadoop/ZooKeeper/HBase各自安装目录下的conf目录中的log4j.properties文件和hadoop-env.sh或hbase-env.sh文件。最好能将日志目录改到安装文件夹之外。例如,下面这个例子就将HBase的日志目录指定到了/usr/local/hbase/logs目录上。

hadoop$ vi $HBASE_HOME/conf/hbase-env.sh
export HBASE_LOG_DIR=/usr/local/hbase/logs

1.8.2 运行原理

在第1步中,我们通过打开dfs.support.append属性,因而启用了HDFS的写盘功能。在启用了该功能之后,我们可以通过调用flush函数来让HDFS写进程确保对数据进行了持久化。这样HBase就可以保证:在一台区域服务器发生宕机时,我们可以通过在其他区域服务器上重演故障服务器的预写日志(WAL,Write-Ahead Log)的方式来恢复故障服务器上的数据。

若想确认是否支持HDFS追加功能,可查看HBase启动时的HMaster日志。如果没有启用追加功能,你就会看到类似下面这样的日志。

$ grep -i "HDFS-200" hbase-hadoop-master-master1.log
...syncFs -- HDFS-200 -- not available, dfs.support.append=false

在第2步中,我们对dfs.datanode.max.xcievers属性进行了配置,该属性指定了HDFS的DataNode可同时打开的文件数量的上限。

提示

请注意,该属性的名字是xcievers,这个名字有拼写错误。其默认值是256,这个值太低,无法在HDFS上运行HBase。

第3步和第4步是设置ZooKeeper的属性。ZooKeeper对于内存交换非常敏感,内存交换会使其性能严重降低。ZooKeeper的堆内存大小需要在java.env文件中设置。ZooKeeper可同时打开的连接的数量也有一个上限。其默认值是10,这对于HBase来说太低了,尤其是还要在HBase上运行MapReduce的时候。 我们建议你把它设置为60。

在第5步中,我们配置了HBase堆内存的大小。HBase默认的堆大小为1GB, 对于当前服务器的硬件水平来说,这也太低了。对于大型的机器来说,8GB或更大都是一个比较合理的值,但不要超过16GB。

在第6步中,我们将ZooKeeper的会话超时时间修改为一个较低的值。超时时间更短意味着HBase可以更快地发现有区域服务器发生了宕机,因此,HBase可以在很短的时间内在其他服务器上恢复那些被毁坏的区域。另一方面,如果会话超时时间过短,也会有在集群负载很重时HRegionServer守护进程将自己的进程杀掉的风险,因为它可能还没来得及把心跳信号发给ZooKeeper,时间就已经超时了。

1.8.3 参考章节

  • 第8章“基本性能调整”
  • 第9章“高级配置和调整”
时间: 2024-10-26 02:35:11

《HBase管理指南》一1.8 Hadoop/ZooKeeper/HBase基本配置的相关文章

《HBase管理指南》一1.7 HBase安装

1.7 HBase安装 完全分布式运行的HBase实例要在HDFS上运行一个或多个主节点(HMaster)和多个从节点(RegionServer).它使用一个可靠的ZooKeeper仲裁团来协调HBase集群中的所有组件,包括主节点.从节点和客户端. HMaster并非必须与HDFS NameNode运行在同一服务器上,但对小集群来说,为了便于管理通常会让它们运行在同一台服务器上.RegionServers通常被配置在HDFS的DataNode服务器上运行.在Datanode服务器上运行Regi

《HBase管理指南》一导读

前 言 HBase管理指南作为一个开源.分布式的大数据存储系统,HBase可以处理记录数达几十亿条.字段数达数百万个的大数据,并且只需依靠一些由商品化硬件而构成的集群就可以运行.如果你正在寻找一种能够实时存储和访问海量数据的方法,那么你就必须研究一下HBase. <HBase管理指南>一书提供了一些实用的例子和一些简单详尽的操作步骤,使你可以轻松地管理HBase.本书的章节涵盖了在云计算环境中管理一个完全分布式的高可用HBase集群所需的各种过程.处理如此海量的数据意味着建立起一套有组织.可管

《HBase管理指南》一第1章 HBase集群安装

第1章 HBase集群安装 HBase管理指南本章内容: 快速入门 Amazon EC2的安装及准备 Hadoop安装 ZooKeeper安装 内核参数设置修改 HBase安装 Hadoop/ZooKeeper/HBase基本配置 多个高可靠性(HA)主节点的安装

《HBase权威指南》一1.5 HBase:Hadoop数据库

1.5 HBase:Hadoop数据库 看过BigTable的架构之后,我们可能会简单地认为HBase完全是Google的BigTable的开源实现.但是这个说法可能过于简单,因为两者之间还有些差异(大多是细微的)值得一提. 1.5.1 历史 HBase是Powerset㉑在2007年创建的,最初是Hadoop的一部分.之后,它逐步成为Apache软件基金会旗下的顶级项目,具备Apache软件许可证,版本为2.0. HBase项目的主页是http://hbase.apache.org/,通过这个

《HBase管理指南》一1.2 快速入门

1.2 快速入门 HBase有两种运行模式:单机运行(Standalone)模式和分布式运行(Distributed)模式.单机运行模式是HBase的默认模式.在单机模式中,HBase会使用一个本地文件系统来代替HDFS,并且在同一个JVM上运行所有的HBase守护进程和HBase管理的ZooKeeper实例. 本节将介绍单机HBase的安装.内容包括:安装HBase.以单机模式启动HBase.在HBase Shell中创建一张表.插入记录.清除记录以及关闭单机模式HBase实例. 1.2.1

《HBase管理指南》一1.9 安装多个高可用性(HA)的主节点

1.9 安装多个高可用性(HA)的主节点 Hadoop和HBase的设计目标是能够在各从节点之间自动进行故障转移. 因为在大型集群中可能有很多节点,服务器硬件故障或从节点宕机被视为是集群中的正常现象. 对于主节点来说,HBase本身并没有SPOF.HBase使用ZooKeeper作为它的中央协调服务.ZooKeeper仲裁团通常是一个由3台以上服务器所组成的集群.只要集群中有一半以上的服务器还处于在线状态,ZooKeeper就可以正常提供服务. HBase将其活跃主节点.根域服务器的位置以及其他

《HBase管理指南》一1.4 安装Hadoop

1.4 安装Hadoop 完全分布式的HBase要运行在HDFS之上.对于完全分布式的HBase集群来说,其主守护进程(HMaster)通常要运行在HDFS主节点所在的服务器(NameNode)上,而其从守护进程(HRegionServer)要运行在HDFS从节点所在的服务器(我们称之为DataNode)上. HBase并不必须使用Hadoop MapReduce,所以我们也不需要启动MapReduce的守护进程.本节也会对MapReduce的安装进行介绍,因为你毕竟有可能要在HBase上运行M

《HBase管理指南》一1.5 ZooKeeper安装

1.5 ZooKeeper安装 分布式的HBase需要运行一个ZooKeeper集群.HBase集群的所有节点和客户端都必须能够访问该ZooKeeper仲裁团. 此节将描述如何建立一个ZooKeeper集群.我们将仅为我们的HBase集群建立一个单机运行的ZooKeeper节点,但是如果是在生产环境中,就应该建立一个至少含有三个节点ZooKeeper仲裁团.此外,还要确保运行节点的个数是奇数. 我们将在本节的"1.5.4 补充说明"一节中讨论集群式ZooKeeper的安装. 1.5.1

《HBase管理指南》一1.1 简介

1.1 简介 本章将介绍HBase集群的安装方法,首先将介绍基本的单机运行模式的HBase实例的安装方法,然后介绍如何在Amazon EC2上安装完全分布式运行的高可靠性HBase集群. 根据Apache HBase主页上的定义: HBase是Hadoop上的数据库.它适合在需要对大数据进行随机且实时读写的情况下使用.其目标是在基于商品化硬件构建的集群之上存储那些非常大的表--比如那些有数百万个字段和数十亿条记录的大表. HBase可以在任何文件系统上运行.比如说,无论是在EXT4本地文件系统.