Welcome 微信登录

首页 / 数据库 / MySQL / 搭建企业级高可用HBase

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.htmUbuntu Server 14.04 下 Hbase数据库安装  http://www.linuxidc.com/Linux/2016-05/131499.htmHBase 结点之间时间不一致造成regionserver启动失败 http://www.linuxidc.com/Linux/2013-06/86655.htmHadoop+ZooKeeper+HBase集群配置 http://www.linuxidc.com/Linux/2013-06/86347.htmHadoop集群安装&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 HA集群需要首先搭建Hadoop HA集群,其方法可参考我的上一篇文章《Hadoop2.0 HA高可用集群配置详解》。在其基础上加入HBaseHA,规划整个集群由5台主机组成,具体情况如下表所示:
主机名IP地址安装的软件JPS
hadoop-master1172.16.20.81Jdk/hadoop/hbaseNamenode/ZKFC/ResourceManager/JobHistoryServer/HMaster
hadoop-master2172.16.20.82Jdk/hadoop/hbaseNamenode/ZKFC/ResourceManager/WebProxyServer/HMaster
hadoop-slave1172.16.20.83Jkd/hadoop/hbase/zookeepeDatanode/JournalNode/NodeManager/quorumPeerMain/HRegionServer
hadoop-slave2172.16.20.84Jkd/hadoop/hbase/zookeeperDatanode/JournalNode/NodeManager/quorumPeerMain/HRegionServer
hadoop-slave3172.16.20.85Jkd/hadoop/hbase/zookeeperDatanode/JournalNode/NodeManager/quorumPeerMain/HRegionServer

3 企业级系统参数配置

// 查看linux系统最大进程数和最大文件打开数$ ulimit-a// 设置linux系统最大进程数和最大文件打开数(设置完重新登录shell)$ suroot# vim/etc/security/limits.confroot    soft   nproc  50000root    hard   nproc  50000root    soft   nofile  25535root    hard   nofile  25535hadoop    soft   nproc  50000hadoop    hard   nproc  50000hadoop    soft   nofile  25535hadoop    hard   nofile  25535// 调整linux内核参数# vim/etc/sysctl.confnet.ipv4.ip_forward= 0net.ipv4.conf.default.rp_filter= 1net.ipv4.conf.default.accept_source_route= 0kernel.core_users_pid= 1net.ipv4.tcp_syncookies= 1net.bridge.bridge-nf-call-ip6tables= 0net.bridge.bridge-nf-call-iptables= 0net.bridge.bridge-nf-call-arptables= 0kernel.mggmnb= 65536kernel.mggmax= 65536kernel.shmmax= 68719476736kernel.shmall= 268435456net.ipv4.tcp_max_syn_backlog= 65000net.core.netdev_max_backlog= 32768net.core.somaxconn= 32768fs.file-max= 65000net.core.wmem_default= 8388608net.core.rmem_default= 8388608net.core.rmem_max= 16777216net.core.wmem_max= 16777216net.ipv4.tcp_timestamps= 1net.ipv4.tcp_synack_retries= 2net.ipv4.tcp_syn_retries= 2net.ipv4.tcp_mem= 94500000 915000000 927000000net.ipv4.tcp_max_orphans= 3276800net.ipv4.tcp_tw_reuse= 1net.ipv4.tcp_tw_recycle= 1net.ipv4.tcp_keepalive_time= 1200net.ipv4.tcp_syncookies= 1net.ipv4.tcp_fin_timeout= 10net.ipv4.tcp_keepalive_intvl= 15net.ipv4.tcp_keepalive_probes= 3net.ipv4.ip_local_port_range= 1024 65535net.ipv4.conf.eml.send_redirects= 0net.ipv4.conf.lo.send_redirects= 0net.ipv4.conf.default.send_redirects= 0net.ipv4.conf.all.send_redirects= 0net.ipv4.icmp_echo_ignore_broadcasts= 1net.ipv4.conf.eml.accept_source_route= 0net.ipv4.conf.lo.accept_source_route= 0net.ipv4.conf.default.accept_source_route= 0net.ipv4.conf.all.accept_source_route= 0net.ipv4.icmp_ignore_bogus_error_responses= 1kernel.core_pattern= /tmp/corevm.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$ vimregionservershadoop-slave1hadoop-slave2hadoop-slave3 // 新建backup-masters文件并配置$ vimbackup-mastershadoop-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_profileexport HBASE_HOME=/home/hadoop/app/cdh/hbase-1.2.0-cdh5.7.1export 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
  • 1
  • 2
  • 下一页
HBase伪分布式集群安装及代码测试HBase工作原理学习相关资讯      高可用HBase  本文评论 查看全部评论 (0)
表情: 姓名: 字数