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

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
注册配置 MSE Nacos/ZooKeeper,118元/月
日志服务 SLS,月写入数据量 50GB 1个月
简介:

本节书摘来异步社区《HBase管理指南》一书中的第1章,第1.8节,作者: 蒋燚峰 译者: 苏南,更多章节内容可以访问云栖社区“异步社区”公众号查看。

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章“高级配置和调整”
相关实践学习
lindorm多模间数据无缝流转
展现了Lindorm多模融合能力——用kafka API写入,无缝流转在各引擎内进行数据存储和计算的实验。
云数据库HBase版使用教程
&nbsp; 相关的阿里云产品:云数据库 HBase 版 面向大数据领域的一站式NoSQL服务,100%兼容开源HBase并深度扩展,支持海量数据下的实时存储、高并发吞吐、轻SQL分析、全文检索、时序时空查询等能力,是风控、推荐、广告、物联网、车联网、Feeds流、数据大屏等场景首选数据库,是为淘宝、支付宝、菜鸟等众多阿里核心业务提供关键支撑的数据库。 了解产品详情:&nbsp;https://cn.aliyun.com/product/hbase &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
5天前
|
分布式计算 资源调度 Hadoop
【赵渝强老师】基于ZooKeeper实现Hadoop HA
本文介绍了如何在4个节点(bigdata112、bigdata113、bigdata114和bigdata115)上部署HDFS高可用(HA)架构,并同时部署Yarn的HA。详细步骤包括环境变量设置、配置文件修改、ZooKeeper集群启动、JournalNode启动、HDFS格式化、ZooKeeper格式化以及启动Hadoop集群等。最后通过jps命令检查各节点上的后台进程,确保部署成功。
|
1月前
|
分布式计算 Hadoop Shell
Hadoop-35 HBase 集群配置和启动 3节点云服务器 集群效果测试 Shell测试
Hadoop-35 HBase 集群配置和启动 3节点云服务器 集群效果测试 Shell测试
68 4
|
1月前
|
SQL 分布式计算 Hadoop
Hadoop-34 HBase 安装部署 单节点配置 hbase-env hbase-site 超详细图文 附带配置文件
Hadoop-34 HBase 安装部署 单节点配置 hbase-env hbase-site 超详细图文 附带配置文件
69 2
|
1月前
|
分布式计算 NoSQL Java
Hadoop-32 ZooKeeper 分布式锁问题 分布式锁Java实现 附带案例和实现思路代码
Hadoop-32 ZooKeeper 分布式锁问题 分布式锁Java实现 附带案例和实现思路代码
41 2
|
1月前
|
分布式计算 负载均衡 算法
Hadoop-31 ZooKeeper 内部原理 简述Leader选举 ZAB协议 一致性
Hadoop-31 ZooKeeper 内部原理 简述Leader选举 ZAB协议 一致性
28 1
|
1月前
|
分布式计算 Java Hadoop
Hadoop-30 ZooKeeper集群 JavaAPI 客户端 POM Java操作ZK 监听节点 监听数据变化 创建节点 删除节点
Hadoop-30 ZooKeeper集群 JavaAPI 客户端 POM Java操作ZK 监听节点 监听数据变化 创建节点 删除节点
61 1
|
1月前
|
分布式计算 Kubernetes Hadoop
大数据-82 Spark 集群模式启动、集群架构、集群管理器 Spark的HelloWorld + Hadoop + HDFS
大数据-82 Spark 集群模式启动、集群架构、集群管理器 Spark的HelloWorld + Hadoop + HDFS
143 6
|
1月前
|
分布式计算 资源调度 Hadoop
大数据-80 Spark 简要概述 系统架构 部署模式 与Hadoop MapReduce对比
大数据-80 Spark 简要概述 系统架构 部署模式 与Hadoop MapReduce对比
64 2
|
14天前
|
存储 分布式计算 Hadoop
数据湖技术:Hadoop与Spark在大数据处理中的协同作用
【10月更文挑战第27天】在大数据时代,数据湖技术凭借其灵活性和成本效益成为企业存储和分析大规模异构数据的首选。Hadoop和Spark作为数据湖技术的核心组件,通过HDFS存储数据和Spark进行高效计算,实现了数据处理的优化。本文探讨了Hadoop与Spark的最佳实践,包括数据存储、处理、安全和可视化等方面,展示了它们在实际应用中的协同效应。
53 2
|
14天前
|
存储 分布式计算 Hadoop
数据湖技术:Hadoop与Spark在大数据处理中的协同作用
【10月更文挑战第26天】本文详细探讨了Hadoop与Spark在大数据处理中的协同作用,通过具体案例展示了两者的最佳实践。Hadoop的HDFS和MapReduce负责数据存储和预处理,确保高可靠性和容错性;Spark则凭借其高性能和丰富的API,进行深度分析和机器学习,实现高效的批处理和实时处理。
53 1