HBase部署

大数据 Quarterback 21℃ 0评论

本文主要讨论这几个问题:

  1. HBase有哪些部署方式
  2. Standalone(单机部署)
  3. Pseudo-Distributed(伪分布式)
  4. Fully-Distributed(分布式)
    1. 手动部署
    2. 通过HDP(ambari)和CDH(cloudrea manager)等大数据平台进行部署
    3. 云HBase

1. HBase有哪些部署方式

  • 主要有以下几种部署方式:
    • 单机部署(Standalone)
    • 伪分布式集群部署(Pseudo-Distributed)
    • 分布式集群部署(Fully-Distributed)

2.Standalone(单机部署)

  • 在 HBase 的 Standalone 模式中,所有的服务都运行在同一 JVM 中:只有一个HMaster进程,regionserver和 zookeeper服务实例也包含在该进程中,并且监听了对应服务的端口。
  • HBase的standalone部署模式使用Hadoop的local filesystem抽象接口,其不保证持久化的可靠性,因此有可能丢数据,所以该部署模式主要用于便于本地开发调试。
  • 部署步骤:
    • 1)下载二进制安装包:hbase-2.2.1-bin.tar.gz
    • 2)解压:tar -xvzf hbase-2.2.1-bin.tar.gz
    • 3)配置JAVA_HOME环境变量:
      • 方式 1:修改/etc/profile文件,添加如下语句,然后source /etc/profile生效:
export JAVA_HOME=/usr/java/jdk1.8.0_144
export JRE_HOME=/usr/java/jdk1.8.0_144/jre
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH
export PATH=$PATH:$JAVA_HOME/bin
      • 方式2:修改  hbase安装目录/conf/hbase-env.sh,将export JAVA_HOME的注释打开,并修改为正确的java安装路径
    • 4)修改conf/hbase-site.xml
      • 指定HBase和Zookeeper的数据存储目录,如果是本地文件系统,不指定默认是存放在/tmp目录下,重启后可能会丢失
  <property>
    <name>hbase.rootdir</name>
    <value>file:///home/testuser/hbase</value>
  </property>
  <property>
    <name>hbase.zookeeper.property.dataDir</name>
    <value>/home/testuser/zookeeper</value>
  </property>
    • 5)启动HBase:
      • bin/start-hbase.sh:
        • hbase master端口,默认是16000(hbase.master.port)
        • master web ui端口,默认是16010hbase.master.info.port
        • hbase region server端口,默认监听16020(hbase.regionserver.port)
        • region server web ui端口,默认是16030(hbase.regionserver.info.port)
        • zookeeper默认监听2181端口(hbase.zookeeper.property.clientPort)
    • 6)启动Thrift Server:
      • /bin/hbase-daemon.sh start thrift2
        • sh hbase-daemons.sh –config $HBASE_HOME/conf start thrift2 –infoport 9096 -p 9097
        • thrift server默认监听9090端口(hbase.regionserver.thrift.port)
        • thrift server的web ui默认监听9095端口(hbase.thrift.info.port)。
 

2.Pseudo-Distributed(伪分布式部署)

  • 伪分布模式意味着 HBase 仍然在单个主机上完全运行,但是每个 HBase 守护进程(HMaster,HRegionServer 和 ZooKeeper)作为一个单独的进程运行
  • 部署步骤:
    • 1)修改conf/hbase-site.xml
      • 首先,添加以下指示 HBase 以分布式模式运行的属性,这样会使得每个守护进程(Master, RegionServer, Zookeeper)有一个 JVM 实例
<property>
  <name>hbase.cluster.distributed</name>
  <value>true</value>
</property>
      • 接下来,将 hbase.rootdir 从本地文件系统更改为您的 HDFS 实例的地址,hbase会自动创建这个目录
<property>
  <name>hbase.rootdir</name>
  <value>hdfs://node32:8020/user/hbase-jz7d</value>
</property>
      • 配置zookeeper,使用hbase自己管理的zookeeper,将conf/hbase-env.sh中如下配置注释放开:
export HBASE_MANAGES_ZK=true
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/home/hadoop/hbase-2.2.1/zkdata</value>
</property>
    • 2)启动HBase:
      • bin/start-hbase.sh
    • 3)启动和停止备份 HBase 主(HMaster)服务器:
      • 主要用于在一台机器上部署伪分布集群,启动多个HMaster:
        • local-master-backup.sh  start  2  3  5,脚本后第一个参数为操作命令,例如start, stop,之后的参数表示在默认端口数字上增加多少作为新启动端口号,可以跟多个数字,会循环创建
    • 4)启动和停止其他 RegionServers:
      • 同上,使用local-regionservers.sh脚本

3.Fully-Distributed(分布式集群部署)

  • 手动部署(node-a, node-b, node-c三个节点,主机名为node-*.example.com):
    • 1)确保节点间网络互通,无防火墙规则阻止
    • 2)配置无密码SSH访问(node-a需要能够登录node-b和node-c(包含自己)才能启动守护进程。实现这一点的最简单的方法是在所有主机上使用相同的用户名,并配置node-a到其他的无密码的 SSH 登录):
      • a) 在node-a,生成一个密钥对。以运行 HBase 的用户身份登录时,使用以下命令生成 SSH 密钥对:
        • $ ssh-keygen -t rsa
        • 如果命令成功,密钥对的位置将打印到标准输出。公钥的默认名称是id_rsa.pub
      • b) 创建并共享密钥的目录:
        • 在node-b和上node-c,以 HBase 用户身份登录,并在用户主目录中创建一个 .ssh/ 目录(如果尚不存在)。如果它已经存在,请注意它可能已经包含其他值。
      • c) 将公钥复制到其他节点:
        • 通过使用 scp 或其他一些安全的手段,安全地将公钥从node-a复制到每个节点。在其他每个节点上,创建一个名为 .ssh/authorized_keys 的新文件(如果该文件尚不存在),并将 id_rsa.pub 文件的内容附加到该文件的末尾。请注意,你也需要为node-a本身执行此项。
        • $ cat id_rsa.pub >> ~/.ssh/authorized_keys
      • d) 由于 node-b 是备份主节点, 重复上述步骤,将node-a替换为node-b.确保不会覆盖现有的 .ssh/authorized_keys 文件, 可以使用>>运算符而不是>运算符将新密钥添加到文件末尾
    • 3)配置node-a:
      • a)node-a 是主节点和 ZooKeeper 进程节点,而不是 RegionServers 服务. 首先停止node-aRegionServers 服务
      • b)编辑 conf/regionservers 移除包含 localhost的列. 添加 node-b 和 node-c的主机名和 IP。
        • 即使你非要在 node-a上运行 regionserver, 你应该配置主机名. 演示中为 node-a.example.com.确保您能够将配置分发到集群的每个节点上并无任何主机名冲突。保存文件。
      • c)配置 HBase,将 node-b作为备份主节点
        • 在 conf/ 目录创建 backup-masters 添加新的一行主机名为 node-b. 演示中主机名为 node-b.example.com.
      • d)配置 ZooKeeper:
        • 实际上,你应该仔细考虑你的 ZooKeeper 配置。您可以在zookeeper部分找到更多关于配置 ZooKeeper 的信息。这个配置将指示 HBase 在集群的每个节点上启动和管理一个 ZooKeeper 实例。在node-a上,编辑 conf/hbase-site.xml 并添加下列属性
<property>
  <name>hbase.zookeeper.quorum</name>
  <value>node-a.example.com,node-b.example.com,node-c.example.com</value>
</property>
<property>
  <name>hbase.zookeeper.property.dataDir</name>
  <value>/usr/local/zookeeper</value>
</property>
    • 4)配置其他节点(node-b, node-c):
      • a)node-b 将运行一个备份主服务器和一个 ZooKeeper 实例。
        • 下载并解压 HBase,将 HBase 下载并解压到node-b, node-c
        • 将配置文件从node-a复制到node-b和node-c,群集的每个节点都需要具有相同的配置信息。将 conf/ 目录下的内容复制到node-b和node-c上的 conf/ 目录中。
    • 5)启动并测试群集
      • 确保 HBase 没有在任何节点上运行
      • 如果您在之前的测试中忘记停止 HBase,您将会遇到错误。通过使用该jps命令检查 HBase 是否在任何节点上运行。寻HMaster, HRegionServer和 HQuorumPeer的进程。如果他们存在,杀掉他们
      • 启动集群:在node-a,发出start-hbase.sh命令,并检查启动日志输出
      • ZooKeeper 首先启动,然后是 master,然后是 RegionServers,最后是 backup masters。
      • 验证进程是否正在运行:

node-a jps 输出

$ jps
20355 Jps
20071 HQuorumPeer
20137 HMaster

node-b jps 输出

$ jps
15930 HRegionServer
16194 Jps
15838 HQuorumPeer
16010 HMaster

node-c jps 输出

$ jps
13901 Jps
13639 HQuorumPeer
13737 HRegionServer
        • ZooKeeper 进程名称:
          • 进程HQuorumPeer是一个由 HBase 控制和启动的 ZooKeeper 实例.如果以这种方式使用 ZooKeeper,则每个群集节点仅限于一个实例,并且仅适用于测试。如果 ZooKeeper 在 HBase 之外运行,则调用该进程 QuorumPeer
  • 通过HDP(ambari)和CDH(cloudrea manager)等大数据平台进行部署:
    • 在HDP或CDH集群部署好后,HDP通过ambari管理界面,CDH通过cloudrea manager管理界面,在界面上直接添加对应hbase组件或服务即可完成hbase集群的添加和部署。
    • 相比基于原生Hadoop搭建HBase集群,线上环境推荐使用HDP或CDH进行集群搭建和管理
  • 云HBase:
    • 通常提供云HBase的供应商,如阿里云,腾讯云等,都维护有自己的HBase分支版本,并且提供的是围绕HBase的一整套解决方案,不只是HBase进行数据存储,例如还提供了基于HBase的OLAP分析功能,时间序列数据库,图数据引擎等
    • 如果缺乏大数据相关运维团队,使用基于云供应商提供的云HBase会省心的多。

 


/* 本文属于原创文章,转载请注明作者和出处 quarterback.cn,请勿用于任何商业用途 */




喜欢 (0)or分享 (0)
Quarterback.cn 打赏作者
发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址