1、相关环境

centos7 hadoop2.6.5 zookeeper3.4.9 jdk1.8 hbase1.2.4

本篇文章仅涉及hbase集群的搭建,关于hadoop与zookeeper的相关部署参见上篇文章http://www.cnblogs.com/learn21cn/p/6184490.html

目标如下:

master 192.1.68.1.215 HMaster
data1 192.168.1.218 HMaster备用 HRegionServer
data2 192.168.1.219 HRegionServer

2、关于时间同步的问题

安装hbase,需要服务器之间的时间同步,10秒之内是可接受的范围

1> 安装与配置NTP

每个节点都要安装,以master来作为时间服务器

  1. # 安装NTP
  2. yum install ntp -y
  3. # 查看NTP状态
  4. service ntpd status
  5. # 配置文件
  6. vim /etc/ntp.conf

以下是配置文件内容

  1. #禁止所有机器来进行连接
  2. restrict default ignore
  3. #允许内网其他机器同步时间
  4. restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap
  5. #配置时间服务器的地址为本机(注视掉server0~server3)
  6. server 127.127.1.0

之后个节点与master进行同步,并设置NTP开机自动启动

  1. # 终端执行命令同步时间
  2. ntpdate 192.168.1.215
  3. # 设置开机自动启动
  4. systemctl restart ntpd.service
  5. systemctl enable ntpd.service

以上为最初同步

2> 设置定时任务,使服务器定时同步时间

执行以下命令 :

  1. crontab -e
    # 在centos7中,可以直接vim /etc/crontab,效果是一样的,只不过需要指定用户

配置文件写入以下内容:

  1. * * * /usr/sbin/ntpdate 192.168.1.215 >> /data/ntpd.log

保存后执行以下命令查看定时任务,并重启服务

  1. crontab -l
  2. # 重启
  3. systemctl restart  crond.service

3、设置linux系统最大进程数和最大文件打开数

使用root账号

  1. root soft nproc
  2. root hard nproc
  3. root soft nofile
  4. root hard nofile
  5. hadoop soft nproc
  6. hadoop hard nproc
  7. hadoop soft nofile
  8. hadoop hard nofile

设置完重新登录shell,执行以下命令查看结果

  1. ulimit -a

4、调整linux内核参数

打开文件 /etc/sysctl.conf,进行以下设置

  1. net.ipv4.ip_forward=
  2. net.ipv4.conf.default.rp_filter =
  3. net.ipv4.conf.default.accept_source_route =
  4. kernel.core_uses_pid =
  5. net.ipv4.tcp_syncookies =
  6. net.bridge.bridge-nf-call-ip6tables =
  7. net.bridge.bridge-nf-call-iptables =
  8. net.bridge.bridge-nf-call-arptables =
  9. kernel.msgmnb =
  10. kernel.msgmax =
  11. kernel.shmmax =
  12. kernel.shmall =
  13. # 提高系统支持的最大SYN半连接数,表示SYN队列的长度,默认为1024,加大队列长度为,可以容纳最多等待连接的网络连接数
  14. net.ipv4.tcp_max_syn_backlog =
  15. net.core.netdev_max_backlog=
  16. net.core.somaxconn =
  17. fs.file-max =
  18. net.core.wmem_default =
  19. net.core.rmem_default =
  20. net.core.rmem_max =
  21. net.core.wmem_max =
  22. net.ipv4.tcp_timestamps =
  23. # 减少系统SYN连接重试次数(默认是5)
  24. # 为了打开对端的连接,内核需要发送一个SYN并附带一个回应前面一个SYN的ACK,也就是所谓三次握手中的第二次握手。这个设置决定了内核放弃连接之前发送SYN+ACK包的数量。
  25. net.ipv4.tcp_synack_retries =
  26. net.ipv4.tcp_syn_retries =
  27. net.ipv4.tcp_mem =
  28. net.ipv4.tcp_max_orphans =
  29. # 以下两参数可解决生产场景中大量连接的Web(cache)服务器中TIME_WAIT过多问题
  30. # 表示开启重用。允许将TIME-WAIT的sockets重新用于新的TCP连接,默认为0表示关闭
  31. net.ipv4.tcp_tw_reuse =
  32. # 打开TIME-WAIT套接字重用及回收功能,表示开启TCP连接中TIME-WAIT的sockets的快速收回功能,默认为0表示关闭。
  33. net.ipv4.tcp_tw_recycle =
  34. # 当keepalive起用的时候,TCP发送keepalive消息的频度,缺省是2小时,改为1200秒
  35. net.ipv4.tcp_keepalive_time =
  36. net.ipv4.tcp_syncookies=
  37. # 减少处于FIN-WAIT-2连接状态的时间,使系统可以处理更多的连接,缺省值是60秒
  38. net.ipv4.tcp_fin_timeout =
  39. net.ipv4.tcp_keepalive_intvl =
  40. net.ipv4.tcp_keepalive_probes =
  41. # 允许系统打开的端口范围,表示用于向外连接的端口范围
  42. net.ipv4.ip_local_port_range =
  43. # 网卡eno16777736
  44. net.ipv4.conf.eno16777736.send_redirects =
  45. net.ipv4.conf.lo.send_redirects =
  46. net.ipv4.conf.default.send_redirects =
  47. net.ipv4.conf.all.send_redirects =
  48. net.ipv4.icmp_echo_ignore_broadcasts =
  49. # 网卡eno16777736
  50. net.ipv4.conf.eno16777736.accept_source_route =
  51. net.ipv4.conf.lo.accept_source_route =
  52. net.ipv4.conf.default.accept_source_route =
  53. net.ipv4.conf.all.accept_source_route=
  54. net.ipv4.icmp_ignore_bogus_error_responses =
  55. kernel.core_pattern = /tmp/core
  56. vm.overcommit_memory =

之后,一定要执行以下命令进行检查,防止出现错误,例如“没有那个文件或目录”之类

  1. # 从指定的文件加载系统参数,如不指定即从/etc/sysctl.conf中加载
  2. sysctl -p

5、配置文件

1> hbase-env.sh

  1. # 配置JDK安装路径
  2. export JAVA_HOME=/usr/java/jdk
  3. # 配置Hadoop安装路径
  4. export HADOOP_HOME=/usr/Apache/hadoop
  5. # 设置HBase的日志目录
  6. export HBASE_LOG_DIR=${HBASE_HOME}/logs
  7. # 设置HBase的pid目录
  8. export HBASE_PID_DIR=${HBASE_HOME}/pids
  9. # 使用独立的ZooKeeper集群
  10. export HBASE_MANAGES_ZK=false
  11. # 设置HBase内存堆的大小
  12. export HBASE_HEAPSIZE=
  13. # 设置HMaster最大可用内存
  14. export HBASE_MASTER_OPTS="-Xmx512m"
  15. # 设置HRegionServer最大可用内存
  16. export HBASE_REGIONSERVER_OPTS="-Xmx512m"

注意:
企业实际部署时,datanode一般设置16到20G左右,过小与过大都不合适;regionserver一般可以设置32到48,或者以上;hmaster一般4到8G足够了。此外实际部署当中,hmaster与regionserver一般不在同一机器中。

2> hbase-site.xml参数说明见注释

  1. <configuration>
  2. <!-- 开启分布式模式 -->
  3. <property>
  4. <name>hbase.cluster.distributed</name>
  5. <value>true</value>
  6. </property>
  7.  
  8. <!-- 设置HRegionServers目录 -->
  9. <property>
  10. <name>hbase.rootdir</name>
  11. <value>hdfs://nscluster/hbase</value>
  12. </property>
  13.  
  14. <!-- 设置HMaster的rpc端口 -->
  15. <property>
  16. <name>hbase.master.port</name>
  17. <value>16000</value>
  18. </property>
  19.  
  20. <!-- 设置HMaster的http端口 -->
  21. <property>
  22. <name>hbase.master.info.port</name>
  23. <value>16010</value>
  24. </property>
  25.  
  26. <!-- 指定缓存文件存储的路径 -->
  27. <property>
  28. <name>hbase.tmp.dir</name>
  29. <value>/usr/Apache/hbase/data/tmp</value>
  30. </property>
  31.  
  32. <!-- 指定ZooKeeper集群位置 -->
  33. <property>
  34. <name>hbase.zookeeper.quorum</name>
  35. <value>master,data1,data2</value>
  36. </property>
  37.  
  38. <!-- 指定ZooKeeper集群端口 -->
  39. <property>
  40. <name>hbase.zookeeper.property.clientPort</name>
  41. <value>2181</value>
  42. </property>
  43.  
  44. <!--指定Zookeeper数据目录,需要与ZooKeeper集群上配置相一致 -->
  45. <property>
  46. <name>hbase.zookeeper.property.dataDir</name>
  47. <value>/usr/Apache/zookeeper/data</value>
  48. </property>
  49.  
  50. <!-- ZooKeeper客户端同时访问的并发连接数,需要与ZooKeeper集群上配置相一致,可设置为2000 -->
  51. <property>
  52. <name>hbase.zookeeper.property.maxClientCnxns</name>
  53. <value>60</value>
  54. </property>
  55.  
  56. <!-- 优化配置项 -->
  57. <!-- 关闭分布式日志拆分 -->
  58. <property>
  59. <name>hbase.master.distributed.log.splitting</name>
  60. <value>false</value>
  61. </property>
  62.  
  63. <!-- hbase客户端rpc扫描一次获取的行数,增大参数可以提高扫描次数,但同时会增加内存的使用 -->
  64. <property>
  65. <name>hbase.client.scanner.caching</name>
  66. <value>2000</value>
  67. </property>
  68.  
  69. <!-- HRegion分裂前最大的文件大小(以下数字标识了10G)当HStoreFile 大于这个文件时,就会split 成两个文件 -->
  70. <property>
  71. <name>hbase.hregion.max.filesize</name>
  72. <value>10737418240</value>
  73. </property>
  74.  
  75. <!-- 一个HRegionServer中最大的region数量 -->
  76. <property>
  77. <name>hbase.regionserver.reginoSplitLimit</name>
  78. <value>2000</value>
  79. </property>
  80.  
  81. <!-- 当某一个region的storefile个数达到该值则block写入,等待compact,或者说定义storefile数量达到多少时block住update操作 默认7 -->
  82. <!-- 设置过小会使影响系统吞吐率,但也不应过大,经验值是15到20左右。太大的话会在系统压力很大时使storefile过多,compact一直无法完成,扫库或者数据读取的性能会受到影响。-->
  83. <!--同时,可以适当提高一些hbase.hstore.compactionThreshold,增加compact的处理线程数,加快compact的处理速度而避免block-->
  84. <property>
  85. <name>hbase.hstore.blockingStoreFiles</name>
  86. <value>14</value>
  87. </property>
  88.  
  89. <!-- StoreFile的个数超过这个数就开始合并 默认值为3-->
  90. <property>
  91. <name>hbase.hstore.compactionThreshold</name>
  92. <value>6</value>
  93. </property>
  94.  
  95. <!-- 超过memstore大小的倍数达到该值则block所有写入请求,自我保护 -->
  96. <property>
  97. <name>hbase.hregion.memstore.block.multiplier</name>
  98. <value>20</value>
  99. </property>
  100.  
  101. <!-- service工作的sleep间隔 默认10000-->
  102. <property>
  103. <name>hbase.server.thread.wakefrequency</name>
  104. <value>500</value>
  105. </property>
  106.  
  107. <!-- 以下三项通常联合起来调整 -->
  108. <!-- MemStore flush 顺序是按照大小降序执行的,直到刷新到MemStore使用内存略小于该百分比 -->
  109. <property>
  110. <name>hbase.regionserver.global.memstore.lowerLimit</name>
  111. <value>0.3</value>
  112. </property>
  113.  
  114. <!-- hbase.regionserver.global.memstore.upperLimit与hbase.block.cache.size这两项合起来不能超过0.8,谁大谁小取决于业务偏向于读还是写,如果读多一些就把读缓存设置大一些 -->
  115. <!-- 默认0.4 当MemStore使用内存总量达到该值(总量的百分比)时,block所有更新,将会有多个MemStores flush到文件中-->
  116. <property>
  117. <name>hbase.regionserver.global.memstore.upperLimit</name>
  118. <value>0.39</value>
  119. </property>
  120. <!-- 读缓存占堆的百分比,默认0.25 -->
  121. <property>
  122. <name>hbase.block.cache.size</name>
  123. <value>0.4</value>
  124. </property>
  125.  
  126. <!-- RegionServer处理rpc线程数,默认10 -->
  127. <property>
  128. <name>hbase.reginoserver.handler.count</name>
  129. <value>300</value>
  130. </property>
  131.  
  132. <!-- 客户端最大重试次数,默认10 -->
  133. <property>
  134. <name>hbase.client.retries.number</name>
  135. <value>5</value>
  136. </property>
  137.  
  138. <!-- 客户端重试的休眠时间 -->
  139. <property>
  140. <name>hbase.client.pause</name>
  141. <value>100</value>
  142. </property>
  143. </configuration>

3> 配置regionservers文件

目录:$HBASE_HOME/conf/,添加以下节点

  1. data1
  2. data2

4> 配置backup-masters文件

目录:$HBASE_HOME/conf/,添加以下节点

  1. data1

表示data1是一个备用的HMaster节点

6、创建配置文件中出现的文件夹

  1. cd /usr/Apache/hbase
  2. # 创建hbase的缓存文件目录
  3. mkdir data/tmp
  4. # 创建hbase的日志文件目录
  5. mkdir logs
  6. # 创建hbase的pid文件目录
  7. mkdir pids

将hbase以及相关软件分发到其他机器。

7、环境变量设置所有的节点都要配置,~/.bashrc 或 ~/.bash_profile

  1. export HADOOP_HOME=/usr/Apache/hadoop
  2. export ZOOKEEPER_HOME=/usr/Apache/zookeeper
  3. export HBASE_HOME=/usr/Apache/hbase
  4. export HADOOP_COMMON_HOME=$HADOOP_HOME
  5. export HADOOP_HDFS_HOME=$HADOOP_HOME
  6. export HADOOP_MAPRED_HOME=$HADOOP_HOME
  7. export HADOOP_YARN_HOME=$HADOOP_HOME
  8. export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
  9. export CLASSPATH=.:$HADOOP_HOME/lib:$CLASSPATH
  10. export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$ZOOKEEPER_HOME/bin:$HBASE_HOME/bin

8、启动与关闭

  1. start-hbase.sh
  2. stop-hbase.sh

master节点

访问:192.168.1.215:16010/

data1节点会作为一个备用节点,如果master节点关闭,data1节点会成为主节点,这就是设置了backup-masters文件的作用,当然前提hbase使用了zookeeper集群。

访问:192.168.1.218:16010/

hbase集群安装与部署的更多相关文章

  1. HBase集群安装部署

    0x01 软件环境 OS: CentOS6.5 x64 java: jdk1.8.0_111 hadoop: hadoop-2.5.2 hbase: hbase-0.98.24 0x02 集群概况 I ...

  2. hbase单机环境的搭建和完全分布式Hbase集群安装配置

    HBase 是一个开源的非关系(NoSQL)的可伸缩性分布式数据库.它是面向列的,并适合于存储超大型松散数据.HBase适合于实时,随机对Big数据进行读写操作的业务环境. @hbase单机环境的搭建 ...

  3. CentOS6安装各种大数据软件 第十章:Spark集群安装和部署

    相关文章链接 CentOS6安装各种大数据软件 第一章:各个软件版本介绍 CentOS6安装各种大数据软件 第二章:Linux各个软件启动命令 CentOS6安装各种大数据软件 第三章:Linux基础 ...

  4. Hbase集群安装Version1.1.5

    Hbase集群安装,基于版本1.1.5, 使用hbase-1.1.5.tar.gz安装包. 1.安装说明 使用外部Zookeeper集群而非Hbase自带zookeeper, 使用Hadoop文件系统 ...

  5. Hbase 集群安装(Hadoop 2.6.0 hbase0.99.2)

    一:说明 该安装是在hadoop集群安装后进行,详情可见上一篇博客虚拟机centos7系统下安装hadoop ha和yarn ha(详细) .其中涉及五台机器,两台master(机器名:master, ...

  6. HBase学习之路 (二)HBase集群安装

    前提 1.HBase 依赖于 HDFS 做底层的数据存储 2.HBase 依赖于 MapReduce 做数据计算 3.HBase 依赖于 ZooKeeper 做服务协调 4.HBase源码是java编 ...

  7. Apache HBase 集群安装文档

    简介: Apache HBase 是一个分布式的.面向列的开源 NoSQL 数据库.具有高性能.高可靠性.可伸缩.面向列.分布式存储的特性. HBase 的数据文件最终落地在 HDFS 之上,所以在 ...

  8. hbase集群安装和shell操作

    1.上传hbase安装包 2.解压 3.配置hbase集群,要修改3个文件(首先zk集群已经安装好了) 注意:要把hadoop的hdfs-site.xml和core-site.xml 放到hbase/ ...

  9. 1.Hbase集群安装配置(一主三从)

     1.HBase安装配置,使用独立zookeeper,shell测试 安装步骤:首先在Master(shizhan2)上安装:前提必须保证hadoop集群和zookeeper集群是可用的 1.上传:用 ...

随机推荐

  1. Android Studio配置 AndroidAnnotations——Hi_博客 Android App 开发笔记

    以前用Eclicps 用习惯了现在 想学学 用Android Studio 两天的钻研终于 在我电脑上装了一个Android Studio 并完成了AndroidAnnotations 的配置. An ...

  2. 【原创分享·支付宝支付】HBuilder打包APP调用支付宝客户端支付

    前言 最近有点空余时间,所以,就研究了一下APP支付.前面很早就搞完APP的微信支付了,但是由于时间上和应用上的情况,支付宝一直没空去研究.然后等我空了的时候,发现支付宝居然升级了支付逻辑,虽然目前还 ...

  3. 分享一个SQLSERVER脚本(计算数据库中各个表的数据量和每行记录所占用空间)

    分享一个SQLSERVER脚本(计算数据库中各个表的数据量和每行记录所占用空间) 很多时候我们都需要计算数据库中各个表的数据量和每行记录所占用空间 这里共享一个脚本 CREATE TABLE #tab ...

  4. IE6/7下空div占用空间的问题

    最近注意力没在前端上面,工作碰到这样一个问题,下意识的写了句 font-size:0;line-height:0;哪知道引发了更大的bug.后来插入数据进去的时候都不显示了..再后来百度一番找到,原来 ...

  5. 【开源】简单4步搞定QQ登录,无需什么代码功底【无语言界限】

    说17号发超简单的教程就17号,qq核审通过后就封装了这个,现在放出来~~ 这个是我封装的一个开源项目:https://github.com/dunitian/LoTQQLogin ————————— ...

  6. 第一个shell脚本

    打开文本编辑器,新建一个文件,扩展名为sh(sh代表shell),扩展名并不影响脚本执行,见名知意就好. #!/bin/bash echo "Hello World !" &quo ...

  7. 《你不知道的JavaScript》整理(四)——原型

    一.[[Prototype]] JavaScript中的对象有一个特殊的[[Prototype]]内置属性,其实就是对于其他对象的引用. var myObject = { a: 2 }; myObje ...

  8. IT持续集成之质量管理

    研发工具生态 质量相关工作 一次编译产出测试包与上线包 !从源头保证版本的⼀一致性!代码质量控制! 全⽅方位的⾃自动化测试体系保证! 提测冒烟效率! 全⾃自动上线流程杜绝⼈人⼯工犯错! 生产环境应⽤用 ...

  9. UML图中经常用到几种的关系图例

    学习这个东西挺奇怪的,时间一长就容易忘记,或者记不清楚.今天看到一些UML图的关系,发现有些出入了,索性就写下来,以后再忘记的时候过来看看. 在UML的类图中,常见的有以下几种关系: 继承(Gener ...

  10. [转载]SQL Server 2008 R2安装时选择的是windows身份验证,未选择混合身份验证的解决办法

    安装过程中,SQL Server 数据库引擎设置为 Windows 身份验证模式或 SQL Server 和 Windows 身份验证模式.本文介绍如何在安装后更改安全模式. 如果在安装过程中选择&q ...