我爱编程

HBase Configuration

2018-05-24  本文已影响0人  金刚_30bf

版本: 2.0.0
HBase的配置文件在conf/目录下。

主要配置文件描述:

在分布式模式下, 当修改类hbase的配置文件后, 需要同步到集群中的其他节点上。HBase不会自动同步。 可以使用 rsync 、scp 等工具进行同步。 对于大部分配置,需要重启使之生效。 动态参数例外。

基本依赖

  1. Java , 建议jdk8 。 需要配置JAVA_HOME环境变量。
  2. ssh : 集群中的节点需要支持ssh连接。 需要支持无密码ssh 连接。
  3. DNS: The hadoop-dns-checker tool can be used to verify DNS is working correctly on the cluster. The project README file provides detailed instructions on usage.
  4. Loopback IP : hbase使用127.0.0.1 表示localhost ,不用配置。
  5. NTP: 集群中的节点时间应该同步。 小时差是可以忍受的, 但是大的时差可能会引发不确定的结果。 推荐运行NTP服务 或其他时钟同步机制。
  6. ulimit: hbase需要能打开大量的文件, 大多数linux系统会限制打开文件的数量为1024. 可以使用ulimit -n 检查之。 建议将此值设置为10240 。
    每个列族至少有一个StoreFile ,有可能多达6个。需要打开的文件数量依赖于列族数和region数。下面是个公式用来计算一个RegionServers上可能打开的文件数量:
(StoreFiles per ColumnFamily) x (regions per RegionServer)

例如: 一个schema 每个region 有3个列族, 平均每个列族有3个StoreFile , 一个RegionServers 有100个regions , JVM将打开 33100 = 900 个文件描述符, 这不包括打开的JAR文件、配置文件和其他文件。 打开一个文件不会消耗很多资源,风险在于可打开的文件数量。

另外一个相关的设置是允许一个用户一次运行的进程数量。 linux系统的进程数量使用ulimit -u 设置。 这与nproc命令不同, nproc控制可以分配给一个用户的cpus数量。在有负载的情况下, ulimit -u 设置太低会导致OutOfMemoryError 异常。 See Jack Levin’s major HDFS issues thread on the hbase-users mailing list, from 2011.

hadoop 版本

支持的版本情况如下:


图片.png

替换Hadoop 依赖jar包

Hbase 依赖hadoop, 它依赖lib目录下的hadoop jar包。 在分布式模式下, hbase依赖的jar包与hadoop集群使用的jar包保持一致非常重要。 为避免版本错误,请使用hadoop集群的jar替换hbase下的hadoop jar 。 确保整个hbase集群上的jar都被替换。 hadoop 版本不匹配会引发各种问题,大部分看起来像程序挂起了。

配置 dfs.datanode.max.transfer.threads

DataNode 有个文件上限, 需要配置hdfs-site.xml 的该属性如下:

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

或其他错误,参见, See also casestudies.max.transfer.threads and note that this property was previously known as dfs.datanode.max.xcievers (e.g. Hadoop HDFS: Deceived by Xciever).

Zookeeper 要求

ZooKeeper 3.4.x 版本及以上。 Hbase使用 multi 功能, 该功能从zk的3.4.0版本开始提供。
hbase.zookeeper.useMulti 属性默认为true 。
参见: HBASE-12241 (The crash of regionServer when taking deadserver’s replication queue breaks replication) and HBASE-6775 (Use ZK.multi when available for HBASE-6710 0.92/0.94 compatibility fix) for background.

对于2.0版本, 该属性已经废弃, 并且useMulti 总是开启的。

上一篇下一篇

猜你喜欢

热点阅读