阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

搭建企业级高可用HBase

134次阅读
没有评论

共计 18011 个字符,预计需要花费 46 分钟才能阅读完成。

1 HBase 介绍

HBase 是一个分布式的、面向列的开源数据库,就像 Bigtable 利用了 Google 文件系统(File System)所提供的分布式数据存储一样,HBase 在 Hadoop 之上提供了类似于 Bigtable 的能力。HBase 是 Apache 的 Hadoop 项目的子项目。HBase 不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库。另一个不同的是 HBase 基于列的而不是基于行的模式。它是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用 HBase 技术可在廉价 PC Server 上搭建起大规模结构化存储集群。

HBase 的常见使用场景如下:

1、大数据量(100s TB 级数据)且有快速随机访问的需求。例如淘宝的交易历史记录,数据量巨大无容置疑,面向普通用户的请求必然要即时响应。

2、容量的优雅扩展。大数据驱使下的动态扩展系统容量是必须的。

3、业务场景简单,不需要关系数据库中很多特性(例如交叉列、交叉表,事务,连接等等)。

4、合理设计 rowkey。因为 hbase 的查询用 rowkey 是最高效的,也几乎是生产环境下唯一可行的方式。

Hadoop+HBase 搭建云存储总结 PDF http://www.linuxidc.com/Linux/2013-05/83844.htm

Ubuntu Server 14.04 下 Hbase 数据库安装  http://www.linuxidc.com/Linux/2016-05/131499.htm

HBase 结点之间时间不一致造成 regionserver 启动失败 http://www.linuxidc.com/Linux/2013-06/86655.htm

Hadoop+ZooKeeper+HBase 集群配置 http://www.linuxidc.com/Linux/2013-06/86347.htm

Hadoop 集群安装 &HBase 实验环境搭建 http://www.linuxidc.com/Linux/2013-04/83560.htm

基于 Hadoop 集群的 HBase 集群的配置 http://www.linuxidc.com/Linux/2013-03/80815.htm‘

Hadoop 安装部署笔记之 -HBase 完全分布模式安装 http://www.linuxidc.com/Linux/2012-12/76947.htm

单机版搭建 HBase 环境图文教程详解 http://www.linuxidc.com/Linux/2012-10/72959.htm

2 集群规划

在搭建 HBase 高可用集群时,将 HBase 的 RegionServer 部署在 HDFS 的 3 个 DataNode 节点上,HBase 的 HMaster 服务部署在 HDFS 的 2 个 NameNode(Active 和 Standby)节点上,部署 2 个 HMaster 保证集群的高可用性,防止单点问题。这里使用了独立的 ZooKeeper 集群,未使用 HBase 自带的 ZooKeeper。下面给出 HBase 的集群搭建架构图:

搭建企业级高可用 HBase

 

搭建 HBase HA 集群需要首先搭建 Hadoop HA 集群,其方法可参考我的上一篇文章《Hadoop2.0 HA 高可用集群配置详解》。在其基础上加入 HBaseHA,规划整个集群由 5 台主机组成,具体情况如下表所示:

主机名

IP 地址

安装的软件

JPS

hadoop-master1

172.16.20.81

Jdk/hadoop/hbase

Namenode/ZKFC/ResourceManager/

JobHistoryServer/HMaster

hadoop-master2

172.16.20.82

Jdk/hadoop/hbase

Namenode/ZKFC/ResourceManager/

WebProxyServer/HMaster

hadoop-slave1

172.16.20.83

Jkd/hadoop/hbase/zookeepe

Datanode/JournalNode/NodeManager/

quorumPeerMain/HRegionServer

hadoop-slave2

172.16.20.84

Jkd/hadoop/hbase/zookeeper

Datanode/JournalNode/NodeManager/

quorumPeerMain/HRegionServer

hadoop-slave3

172.16.20.85

Jkd/hadoop/hbase/zookeeper

Datanode/JournalNode/NodeManager/

quorumPeerMain/HRegionServer

3 企业级系统参数配置

// 查看 linux 系统最大进程数和最大文件打开数

$ ulimit-a

搭建企业级高可用 HBase

// 设置 linux 系统最大进程数和最大文件打开数(设置完重新登录 shell)

$ suroot

# vim/etc/security/limits.conf

root    soft   nproc  50000

root    hard   nproc  50000

root    soft   nofile  25535

root    hard   nofile  25535

hadoop    soft   nproc  50000

hadoop    hard   nproc  50000

hadoop    soft   nofile  25535

hadoop    hard   nofile  25535

// 调整 linux 内核参数

# vim/etc/sysctl.conf

net.ipv4.ip_forward= 0

net.ipv4.conf.default.rp_filter= 1

net.ipv4.conf.default.accept_source_route= 0

kernel.core_users_pid= 1

net.ipv4.tcp_syncookies= 1

net.bridge.bridge-nf-call-ip6tables= 0

net.bridge.bridge-nf-call-iptables= 0

net.bridge.bridge-nf-call-arptables= 0

kernel.mggmnb= 65536

kernel.mggmax= 65536

kernel.shmmax= 68719476736

kernel.shmall= 268435456

net.ipv4.tcp_max_syn_backlog= 65000

net.core.netdev_max_backlog= 32768

net.core.somaxconn= 32768

fs.file-max= 65000

net.core.wmem_default= 8388608

net.core.rmem_default= 8388608

net.core.rmem_max= 16777216

net.core.wmem_max= 16777216

net.ipv4.tcp_timestamps= 1

net.ipv4.tcp_synack_retries= 2

net.ipv4.tcp_syn_retries= 2

net.ipv4.tcp_mem= 94500000 915000000 927000000

net.ipv4.tcp_max_orphans= 3276800

net.ipv4.tcp_tw_reuse= 1

net.ipv4.tcp_tw_recycle= 1

net.ipv4.tcp_keepalive_time= 1200

net.ipv4.tcp_syncookies= 1

net.ipv4.tcp_fin_timeout= 10

net.ipv4.tcp_keepalive_intvl= 15

net.ipv4.tcp_keepalive_probes= 3

net.ipv4.ip_local_port_range= 1024 65535

net.ipv4.conf.eml.send_redirects= 0

net.ipv4.conf.lo.send_redirects= 0

net.ipv4.conf.default.send_redirects= 0

net.ipv4.conf.all.send_redirects= 0

net.ipv4.icmp_echo_ignore_broadcasts= 1

net.ipv4.conf.eml.accept_source_route= 0

net.ipv4.conf.lo.accept_source_route= 0

net.ipv4.conf.default.accept_source_route= 0

net.ipv4.conf.all.accept_source_route= 0

net.ipv4.icmp_ignore_bogus_error_responses= 1

kernel.core_pattern= /tmp/core

vm.overcommit_memory= 1

#sysctl -p

4 HBase HA 配置

// 在 hadoop-master1 节点解压 hadoop 安装包

$ tar-xvf hbase-1.2.0-cdh5.7.1.tar.gz -C /home/hadoop/app/cdh/

 

// 删除安装包

$ rmhbase-1.2.0-cdh5.7.1.tar.gz

 

// 进入 hbase 的 conf 目录

$ cd/home/hadoop/app/cdh/hbase-1.2.0-cdh5.7.1/conf/

 

// 修改 hbase-env.sh

$ vimhbase-env.sh

# 配置 JDK 安装路径

exportJAVA_HOME=/home/hadoop/app/jdk1.7.0_79

# 配置 Hadoop 安装路径

exportHADOOP_HOME=/home/hadoop/app/cdh/hadoop-2.6.0-cdh5.7.1

# 设置 HBase 的日志目录

exportHBASE_LOG_DIR=${HBASE_HOME}/logs

# 设置 HBase 的 pid 目录

exportHBASE_PID_DIR=${HBASE_HOME}/pids

# 使用独立的 ZooKeeper 集群

exportHBASE_MANAGES_ZK=false

# 优化配置项

# 设置 HBase 内存堆的大小

exportHBASE_HEAPSIZE=1024

# 设置 HMaster 最大可用内存

exportHBASE_MASTER_OPTS=”-Xmx512m”

# 设置 HRegionServer 最大可用内存

exportHBASE_REGIONSERVER_OPTS=”-Xmx1024m”

 

// 配置 hbase-site.xml

$ vim hbase-site.xml

<configuration>
  <!-- 设置 HRegionServers 共享目录 -->
  <property>
    <name>hbase.rootdir</name>
    <value>hdfs://mycluster/hbase</value>
  </property>
  
  <!-- 设置 HMaster 的 rpc 端口 -->
  <property>
    <name>hbase.master.port</name>
    <value>16000</value>
  </property>
  
  <!-- 设置 HMaster 的 http 端口 -->
  <property>
    <name>hbase.master.info.port</name>
    <value>16010</value>
  </property>
  
  <!-- 指定缓存文件存储的路径 -->
  <property>
    <name>hbase.tmp.dir</name>
    <value>/home/hadoop/app/cdh/hbase-1.2.0-cdh5.7.1/tmp</value>
  </property>

  <!-- 开启分布式模式 -->
  <property>
    <name>hbase.cluster.distributed</name>
    <value>true</value>
  </property>
  
  <!-- 指定 ZooKeeper 集群位置 -->
  <property>
    <name>hbase.zookeeper.quorum</name>
    <value>hadoop-slave1,hadoop-slave2,hadoop-slave3</value>
  </property>
  
  <!-- 指定 ZooKeeper 集群端口 -->
  <property>
    <name>hbase.zookeeper.property.clientPort</name>
    <value>2181</value>
  </property>
  
  <!-- 指定 Zookeeper 数据目录,需要与 ZooKeeper 集群上配置相一致 -->
  <property>
    <name>hbase.zookeeper.property.dataDir</name>
    <value>/home/hadoop/app/cdh/zookeeper-3.4.5-cdh5.7.1/data</value>
  </property>
  
  <!-- \\\\\\\\\\ 以下为优化配置项 \\\\\\\\\\ -->
  <!-- 关闭分布式日志拆分 -->
  <property>
    <name>hbase.master.distributed.log.splitting</name>
    <value>false</value>
  </property>
  
  <!-- hbase 客户端 rpc 扫描一次获取的行数 -->
  <property>
    <name>hbase.client.scanner.caching</name>
    <value>2000</value>
  </property>
  
  <!-- HRegion 分裂前最大的文件大小(10G)-->
  <property>
    <name>hbase.hregion.max.filesize</name>
    <value>10737418240</value>
  </property>
  
  <!-- HRegionServer 中最大的 region 数量 -->
  <property>
    <name>hbase.regionserver.reginoSplitLimit</name>
    <value>2000</value>
  </property>
  
  <!-- StoreFile 的个数超过这个数就开始合并 -->
  <property>
    <name>hbase.hstore.compactionThreshold</name>
    <value>6</value>
  </property>
  
  <!-- 当某一个 region 的 storefile 个数达到该值则 block 写入,等待 compact -->
  <property>
    <name>hbase.hstore.blockingStoreFiles</name>
    <value>14</value>
  </property>
  
  <!-- 超过 memstore 大小的倍数达到该值则 block 所有写入请求,自我保护 -->
  <property>
    <name>hbase.hregion.memstore.block.multiplier</name>
    <value>20</value>
  </property>
  
  <!-- service 工作的 sleep 间隔 -->
  <property>
    <name>hbase.server.thread.wakefrequency</name>
    <value>500</value>
  </property>
  
  <!-- ZooKeeper 客户端同时访问的并发连接数 -->
  <property>
    <name>hbase.zookeeper.property.maxClientCnxns</name>
    <value>2000</value>
  </property>
  
  <!-- 根据业务情况进行配置 -->
  <property>
    <name>hbase.regionserver.global.memstore.lowerLimit</name>
    <value>0.3</value>
  </property>
  <property>
    <name>hbase.regionserver.global.memstore.upperLimit</name>
    <value>0.39</value>
  </property>
  <property>
    <name>hbase.block.cache.size</name>
    <value>0.4</value>
  </property>
  
  <!-- RegionServer 的请求处理 IO 线程数 -->
  <property>
    <name>hbase.reginoserver.handler.count</name>
    <value>300</value>
  </property>
  
  <!-- 客户端最大重试次数 -->
  <property>
    <name>hbase.client.retries.number</name>
    <value>5</value>
  </property>
  
  <!-- 客户端重试的休眠时间 -->
  <property>
    <name>hbase.client.pause</name>
    <value>100</value>
  </property>
</configuration>

 

// 配置 regionservers

$ vimregionservers

hadoop-slave1

hadoop-slave2

hadoop-slave3

 

// 新建 backup-masters 文件并配置

$ vimbackup-masters

hadoop-master2

 

// 创建 hbase 的缓存文件目录

$ cd/home/hadoop/app/cdh/hbase-1.2.0-cdh5.7.1/

$ mkdirtmp

 

// 创建 hbase 的日志文件目录

$ mkdirlogs

 

// 创建 hbase 的 pid 文件目录

$ mkdirpids

 

// 将 hbase 工作目录同步到集群其它节点

$ scp-r /home/hadoop/app/cdh/hbase-1.2.0-cdh5.7.1/hadoop-master2:/home/hadoop/app/cdh/

$ scp-r /home/hadoop/app/cdh/hbase-1.2.0-cdh5.7.1/ hadoop-slave1:/home/hadoop/app/cdh/

$ scp-r /home/hadoop/app/cdh/hbase-1.2.0-cdh5.7.1/ hadoop-slave2:/home/hadoop/app/cdh/

$ scp-r /home/hadoop/app/cdh/hbase-1.2.0-cdh5.7.1/ hadoop-slave3:/home/hadoop/app/cdh/

 

// 在集群各节点上修改用户环境变量

$ vim .bash_profile

export HBASE_HOME=/home/hadoop/app/cdh/hbase-1.2.0-cdh5.7.1

export PATH=$PATH:$HBASE_HOME/bin

$ source.bash_profile

 

// 删除 hbase 的 slf4j-log4j12-1.7.5.jar,解决 hbase 和 hadoop 的 LSF4J 包冲突

$ cd /home/hadoop/app/cdh/hbase-1.2.0-cdh5.7.1/lib

$ mvslf4j-log4j12-1.7.5.jar slf4j-log4j12-1.7.5.jar.bk

更多详情见请继续阅读下一页的精彩内容 :http://www.linuxidc.com/Linux/2016-08/134183p2.htm

5 集群启动

// 启动 zookeeper 集群(分别在 slave1、slave2 和 slave3 上执行)

$ zkServer.shstart

备注:此命令分别在 slave1/slave2/slave3 节点启动了 QuorumPeerMain。

// 启动 HDFS(在 master1 执行)

$ start-dfs.sh

备注:此命令分别在 master1/master2 节点启动了 NameNode 和 ZKFC,分别在 slave1/slave2/slave3 节点启动了 DataNode 和 JournalNode。

// 启动 YARN(在 master2 执行)

$ start-yarn.sh

备注:此命令在 master2 节点启动了 ResourceManager,分别在 slave1/slave2/slave3 节点启动了 NodeManager。

// 启动 YARN 的另一个 ResourceManager(在 master1 执行,用于容灾)

$ yarn-daemon.sh start resourcemanager

备注:此命令在 master1 节点启动了 ResourceManager。

// 启动 HBase(在 master1 执行)

$ start-hbase.sh

备注:此命令分别在 master1/master2 节点启动了 HMaster,分别在 slave1/slave2/slave3 节点启动了 HRegionServer。

6 功能测试

6.1 Web UI

下图为 http://Hadoop-master1:16010,可看到主 Master 状态:

搭建企业级高可用 HBase

 

下图为 http://hadoop-master2:50070,可看到备份 Master 状态:

搭建企业级高可用 HBase

 

6.2 Shell 操作

// 连接 hbase 客户端

$ hbase shell

 

// 创建表,表名为 employee,列族为 info

> create ’employee’,’info’

 

// 显示 hbase 已创建的表,验证表 employee 是否创建成功

> list

 

// 在表 employee 中插入测试数据

> put’employee’,’rowkey01′,’info:id’,’1001′

> put’employee’,’rowkey01′,’info:name’,’Henry’

> put ’employee’,’rowkey01′,’info:address’,’Bangalore’

> put’employee’,’rowkey02′,’info:id’,’1002′

> put’employee’,’rowkey02′,’info:name’,’Messi’

 

// 检索表 employee 中的所有记录

> scan ’employee’

 

// 检索表 employee 中行键为 rowkey01 的记录

> get ’employee’,’rowkey01′

 

// 禁用表 employee 并删除

> disable ’employee’

> drop ’employee’

 搭建企业级高可用 HBase

 

7 动态替换节点

7.1 Hadoop 动态添加节点

(一)设置新节点与集群 NameNode 的 SSH 无密码登录

(二)在 hosts 文件中添加主机名和 IP 地址,并将该文件同步到集群其它节点

(三)修改 hadoop 配置文件 slaves,加入新节点的主机名

(四)在新节点通过命令 hadoop-daemon.shstart datanode 和 yarn-daemon.sh start nodemanager 启动 datanode 和 nodemanager 进程

(五)在新节点中通过命令 start-balancer.sh 均衡当前的 HDFS 块,在执行前可通过命令 Hdfs dfsadmin -setBalancerBandwidth 字节数 设置带宽

7.2 Hadoop 动态删除节点

(一)在 hadoop 配置文件 hdfs-site.xml 中配置如下:

<property>

<name>dfs.hosts.exclude</name>

<value>/home/hadoop/app/cdh/hadoop-2.6.0-cdh5.7.1/etc/hadoop/exclude</value>

</property>

(二)在配置文件 exclude 中添加需要删除的节点主机名

(三)通过命令 hdfsafsadmin -refreshNodes 执行节点刷新操作

(四)通过命令 hdfsafsadmin -report 可查看该节点状况

7.3 HBase 动态添加节点

(一)在 HBase 的配置文件 regionserver 中添加新节点的主机名

(二)在新节点通过命令 hbase-daemon.shstart regionserver 启动 HRegionServer

(三)进入 hbaseshell,通过命令 balance_switch true 进行 region 平衡

7.4 HBase 动态删除节点

(一)通过命令 graceful_stop.sh 主机名 停止需要删除的节点

(二)在 HBase 的配置文件 regionserver 中移除删除节点的主机名

HBase 的详细介绍 :请点这里
HBase 的下载地址 :请点这里

本文永久更新链接地址 :http://www.linuxidc.com/Linux/2016-08/134183.htm

1 HBase 介绍

HBase 是一个分布式的、面向列的开源数据库,就像 Bigtable 利用了 Google 文件系统(File System)所提供的分布式数据存储一样,HBase 在 Hadoop 之上提供了类似于 Bigtable 的能力。HBase 是 Apache 的 Hadoop 项目的子项目。HBase 不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库。另一个不同的是 HBase 基于列的而不是基于行的模式。它是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用 HBase 技术可在廉价 PC Server 上搭建起大规模结构化存储集群。

HBase 的常见使用场景如下:

1、大数据量(100s TB 级数据)且有快速随机访问的需求。例如淘宝的交易历史记录,数据量巨大无容置疑,面向普通用户的请求必然要即时响应。

2、容量的优雅扩展。大数据驱使下的动态扩展系统容量是必须的。

3、业务场景简单,不需要关系数据库中很多特性(例如交叉列、交叉表,事务,连接等等)。

4、合理设计 rowkey。因为 hbase 的查询用 rowkey 是最高效的,也几乎是生产环境下唯一可行的方式。

Hadoop+HBase 搭建云存储总结 PDF http://www.linuxidc.com/Linux/2013-05/83844.htm

Ubuntu Server 14.04 下 Hbase 数据库安装  http://www.linuxidc.com/Linux/2016-05/131499.htm

HBase 结点之间时间不一致造成 regionserver 启动失败 http://www.linuxidc.com/Linux/2013-06/86655.htm

Hadoop+ZooKeeper+HBase 集群配置 http://www.linuxidc.com/Linux/2013-06/86347.htm

Hadoop 集群安装 &HBase 实验环境搭建 http://www.linuxidc.com/Linux/2013-04/83560.htm

基于 Hadoop 集群的 HBase 集群的配置 http://www.linuxidc.com/Linux/2013-03/80815.htm‘

Hadoop 安装部署笔记之 -HBase 完全分布模式安装 http://www.linuxidc.com/Linux/2012-12/76947.htm

单机版搭建 HBase 环境图文教程详解 http://www.linuxidc.com/Linux/2012-10/72959.htm

2 集群规划

在搭建 HBase 高可用集群时,将 HBase 的 RegionServer 部署在 HDFS 的 3 个 DataNode 节点上,HBase 的 HMaster 服务部署在 HDFS 的 2 个 NameNode(Active 和 Standby)节点上,部署 2 个 HMaster 保证集群的高可用性,防止单点问题。这里使用了独立的 ZooKeeper 集群,未使用 HBase 自带的 ZooKeeper。下面给出 HBase 的集群搭建架构图:

搭建企业级高可用 HBase

 

搭建 HBase HA 集群需要首先搭建 Hadoop HA 集群,其方法可参考我的上一篇文章《Hadoop2.0 HA 高可用集群配置详解》。在其基础上加入 HBaseHA,规划整个集群由 5 台主机组成,具体情况如下表所示:

主机名

IP 地址

安装的软件

JPS

hadoop-master1

172.16.20.81

Jdk/hadoop/hbase

Namenode/ZKFC/ResourceManager/

JobHistoryServer/HMaster

hadoop-master2

172.16.20.82

Jdk/hadoop/hbase

Namenode/ZKFC/ResourceManager/

WebProxyServer/HMaster

hadoop-slave1

172.16.20.83

Jkd/hadoop/hbase/zookeepe

Datanode/JournalNode/NodeManager/

quorumPeerMain/HRegionServer

hadoop-slave2

172.16.20.84

Jkd/hadoop/hbase/zookeeper

Datanode/JournalNode/NodeManager/

quorumPeerMain/HRegionServer

hadoop-slave3

172.16.20.85

Jkd/hadoop/hbase/zookeeper

Datanode/JournalNode/NodeManager/

quorumPeerMain/HRegionServer

3 企业级系统参数配置

// 查看 linux 系统最大进程数和最大文件打开数

$ ulimit-a

搭建企业级高可用 HBase

// 设置 linux 系统最大进程数和最大文件打开数(设置完重新登录 shell)

$ suroot

# vim/etc/security/limits.conf

root    soft   nproc  50000

root    hard   nproc  50000

root    soft   nofile  25535

root    hard   nofile  25535

hadoop    soft   nproc  50000

hadoop    hard   nproc  50000

hadoop    soft   nofile  25535

hadoop    hard   nofile  25535

// 调整 linux 内核参数

# vim/etc/sysctl.conf

net.ipv4.ip_forward= 0

net.ipv4.conf.default.rp_filter= 1

net.ipv4.conf.default.accept_source_route= 0

kernel.core_users_pid= 1

net.ipv4.tcp_syncookies= 1

net.bridge.bridge-nf-call-ip6tables= 0

net.bridge.bridge-nf-call-iptables= 0

net.bridge.bridge-nf-call-arptables= 0

kernel.mggmnb= 65536

kernel.mggmax= 65536

kernel.shmmax= 68719476736

kernel.shmall= 268435456

net.ipv4.tcp_max_syn_backlog= 65000

net.core.netdev_max_backlog= 32768

net.core.somaxconn= 32768

fs.file-max= 65000

net.core.wmem_default= 8388608

net.core.rmem_default= 8388608

net.core.rmem_max= 16777216

net.core.wmem_max= 16777216

net.ipv4.tcp_timestamps= 1

net.ipv4.tcp_synack_retries= 2

net.ipv4.tcp_syn_retries= 2

net.ipv4.tcp_mem= 94500000 915000000 927000000

net.ipv4.tcp_max_orphans= 3276800

net.ipv4.tcp_tw_reuse= 1

net.ipv4.tcp_tw_recycle= 1

net.ipv4.tcp_keepalive_time= 1200

net.ipv4.tcp_syncookies= 1

net.ipv4.tcp_fin_timeout= 10

net.ipv4.tcp_keepalive_intvl= 15

net.ipv4.tcp_keepalive_probes= 3

net.ipv4.ip_local_port_range= 1024 65535

net.ipv4.conf.eml.send_redirects= 0

net.ipv4.conf.lo.send_redirects= 0

net.ipv4.conf.default.send_redirects= 0

net.ipv4.conf.all.send_redirects= 0

net.ipv4.icmp_echo_ignore_broadcasts= 1

net.ipv4.conf.eml.accept_source_route= 0

net.ipv4.conf.lo.accept_source_route= 0

net.ipv4.conf.default.accept_source_route= 0

net.ipv4.conf.all.accept_source_route= 0

net.ipv4.icmp_ignore_bogus_error_responses= 1

kernel.core_pattern= /tmp/core

vm.overcommit_memory= 1

#sysctl -p

4 HBase HA 配置

// 在 hadoop-master1 节点解压 hadoop 安装包

$ tar-xvf hbase-1.2.0-cdh5.7.1.tar.gz -C /home/hadoop/app/cdh/

 

// 删除安装包

$ rmhbase-1.2.0-cdh5.7.1.tar.gz

 

// 进入 hbase 的 conf 目录

$ cd/home/hadoop/app/cdh/hbase-1.2.0-cdh5.7.1/conf/

 

// 修改 hbase-env.sh

$ vimhbase-env.sh

# 配置 JDK 安装路径

exportJAVA_HOME=/home/hadoop/app/jdk1.7.0_79

# 配置 Hadoop 安装路径

exportHADOOP_HOME=/home/hadoop/app/cdh/hadoop-2.6.0-cdh5.7.1

# 设置 HBase 的日志目录

exportHBASE_LOG_DIR=${HBASE_HOME}/logs

# 设置 HBase 的 pid 目录

exportHBASE_PID_DIR=${HBASE_HOME}/pids

# 使用独立的 ZooKeeper 集群

exportHBASE_MANAGES_ZK=false

# 优化配置项

# 设置 HBase 内存堆的大小

exportHBASE_HEAPSIZE=1024

# 设置 HMaster 最大可用内存

exportHBASE_MASTER_OPTS=”-Xmx512m”

# 设置 HRegionServer 最大可用内存

exportHBASE_REGIONSERVER_OPTS=”-Xmx1024m”

 

// 配置 hbase-site.xml

$ vim hbase-site.xml

<configuration>
  <!-- 设置 HRegionServers 共享目录 -->
  <property>
    <name>hbase.rootdir</name>
    <value>hdfs://mycluster/hbase</value>
  </property>
  
  <!-- 设置 HMaster 的 rpc 端口 -->
  <property>
    <name>hbase.master.port</name>
    <value>16000</value>
  </property>
  
  <!-- 设置 HMaster 的 http 端口 -->
  <property>
    <name>hbase.master.info.port</name>
    <value>16010</value>
  </property>
  
  <!-- 指定缓存文件存储的路径 -->
  <property>
    <name>hbase.tmp.dir</name>
    <value>/home/hadoop/app/cdh/hbase-1.2.0-cdh5.7.1/tmp</value>
  </property>

  <!-- 开启分布式模式 -->
  <property>
    <name>hbase.cluster.distributed</name>
    <value>true</value>
  </property>
  
  <!-- 指定 ZooKeeper 集群位置 -->
  <property>
    <name>hbase.zookeeper.quorum</name>
    <value>hadoop-slave1,hadoop-slave2,hadoop-slave3</value>
  </property>
  
  <!-- 指定 ZooKeeper 集群端口 -->
  <property>
    <name>hbase.zookeeper.property.clientPort</name>
    <value>2181</value>
  </property>
  
  <!-- 指定 Zookeeper 数据目录,需要与 ZooKeeper 集群上配置相一致 -->
  <property>
    <name>hbase.zookeeper.property.dataDir</name>
    <value>/home/hadoop/app/cdh/zookeeper-3.4.5-cdh5.7.1/data</value>
  </property>
  
  <!-- \\\\\\\\\\ 以下为优化配置项 \\\\\\\\\\ -->
  <!-- 关闭分布式日志拆分 -->
  <property>
    <name>hbase.master.distributed.log.splitting</name>
    <value>false</value>
  </property>
  
  <!-- hbase 客户端 rpc 扫描一次获取的行数 -->
  <property>
    <name>hbase.client.scanner.caching</name>
    <value>2000</value>
  </property>
  
  <!-- HRegion 分裂前最大的文件大小(10G)-->
  <property>
    <name>hbase.hregion.max.filesize</name>
    <value>10737418240</value>
  </property>
  
  <!-- HRegionServer 中最大的 region 数量 -->
  <property>
    <name>hbase.regionserver.reginoSplitLimit</name>
    <value>2000</value>
  </property>
  
  <!-- StoreFile 的个数超过这个数就开始合并 -->
  <property>
    <name>hbase.hstore.compactionThreshold</name>
    <value>6</value>
  </property>
  
  <!-- 当某一个 region 的 storefile 个数达到该值则 block 写入,等待 compact -->
  <property>
    <name>hbase.hstore.blockingStoreFiles</name>
    <value>14</value>
  </property>
  
  <!-- 超过 memstore 大小的倍数达到该值则 block 所有写入请求,自我保护 -->
  <property>
    <name>hbase.hregion.memstore.block.multiplier</name>
    <value>20</value>
  </property>
  
  <!-- service 工作的 sleep 间隔 -->
  <property>
    <name>hbase.server.thread.wakefrequency</name>
    <value>500</value>
  </property>
  
  <!-- ZooKeeper 客户端同时访问的并发连接数 -->
  <property>
    <name>hbase.zookeeper.property.maxClientCnxns</name>
    <value>2000</value>
  </property>
  
  <!-- 根据业务情况进行配置 -->
  <property>
    <name>hbase.regionserver.global.memstore.lowerLimit</name>
    <value>0.3</value>
  </property>
  <property>
    <name>hbase.regionserver.global.memstore.upperLimit</name>
    <value>0.39</value>
  </property>
  <property>
    <name>hbase.block.cache.size</name>
    <value>0.4</value>
  </property>
  
  <!-- RegionServer 的请求处理 IO 线程数 -->
  <property>
    <name>hbase.reginoserver.handler.count</name>
    <value>300</value>
  </property>
  
  <!-- 客户端最大重试次数 -->
  <property>
    <name>hbase.client.retries.number</name>
    <value>5</value>
  </property>
  
  <!-- 客户端重试的休眠时间 -->
  <property>
    <name>hbase.client.pause</name>
    <value>100</value>
  </property>
</configuration>

 

// 配置 regionservers

$ vimregionservers

hadoop-slave1

hadoop-slave2

hadoop-slave3

 

// 新建 backup-masters 文件并配置

$ vimbackup-masters

hadoop-master2

 

// 创建 hbase 的缓存文件目录

$ cd/home/hadoop/app/cdh/hbase-1.2.0-cdh5.7.1/

$ mkdirtmp

 

// 创建 hbase 的日志文件目录

$ mkdirlogs

 

// 创建 hbase 的 pid 文件目录

$ mkdirpids

 

// 将 hbase 工作目录同步到集群其它节点

$ scp-r /home/hadoop/app/cdh/hbase-1.2.0-cdh5.7.1/hadoop-master2:/home/hadoop/app/cdh/

$ scp-r /home/hadoop/app/cdh/hbase-1.2.0-cdh5.7.1/ hadoop-slave1:/home/hadoop/app/cdh/

$ scp-r /home/hadoop/app/cdh/hbase-1.2.0-cdh5.7.1/ hadoop-slave2:/home/hadoop/app/cdh/

$ scp-r /home/hadoop/app/cdh/hbase-1.2.0-cdh5.7.1/ hadoop-slave3:/home/hadoop/app/cdh/

 

// 在集群各节点上修改用户环境变量

$ vim .bash_profile

export HBASE_HOME=/home/hadoop/app/cdh/hbase-1.2.0-cdh5.7.1

export PATH=$PATH:$HBASE_HOME/bin

$ source.bash_profile

 

// 删除 hbase 的 slf4j-log4j12-1.7.5.jar,解决 hbase 和 hadoop 的 LSF4J 包冲突

$ cd /home/hadoop/app/cdh/hbase-1.2.0-cdh5.7.1/lib

$ mvslf4j-log4j12-1.7.5.jar slf4j-log4j12-1.7.5.jar.bk

更多详情见请继续阅读下一页的精彩内容 :http://www.linuxidc.com/Linux/2016-08/134183p2.htm

正文完
星哥说事-微信公众号
post-qrcode
 
星锅
版权声明:本站原创文章,由 星锅 2022-01-22发表,共计18011字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中