【大数据项目学习】第十章:HBase分布式集群部署与设计

第十章:HBase分布式集群部署与设计

一个初学者的大数据学习过程


文章目录

  • 第十章:HBase分布式集群部署与设计
    • 1. HBase安装前须知
      • 1.1 必备条件
        • 1.1.1 硬件
        • 1.1.2 软件
      • 1.2 运行模式
    • 2. HBase安装部署
      • 2.1 集群规划
        • 2.1.1 主机规划
        • 2.1.2 软件规划
        • 2.1.3 用户规划
        • 2.1.4 目录规划
      • 2.2 HBase 安装步骤
        • 2.2.1 下载
        • 2.2.1 解压
        • 2.2.1 创建软连接
        • 2.2.1 修改配置文件
        • 2.2.1 添加 hdfs 配置文件
        • 2.2.1 同步 HBase 安装目录
        • 2.2.1 创建规划目录
      • 2.3 HBase 启动测试
        • 2.3.1 启动 Zookeeper
        • 2.3.2 启动 hdfs
        • 2.3.3 启动 hbase
        • 2.3.4 关闭 hbase
        • 2.3.5 web 查看 hbase
      • 2.4 shell 测试运行 HBase 数据库
        • 2.4.1 General 操作
        • 2.4.2 Ddl 操作
        • 2.4.3 Dml 操作
    • 3. HBase业务建模
      • 3..1 业务数据下载
      • 3..2 数据格式说明
      • 3.3 业务数据建模


1. HBase安装前须知

1.1 必备条件

1.1.1 硬件

HBase是Java 编写的,需要支持当前的Java运行时环境。Region服务器的内存主要服务于内部数据结构,例如MemStore和BlockCache,因此需要安装64位操作系统才能分配和使用大于4G的内存空间。HBase与Hadoop安装在一起,能实现数据本地化,很大程度地减少网络I/O的需求,同时加快处理速度。要有效运行所有Hadoop和HBase进程,需要拥有一定数量的磁盘、CPU和内存资源。

  1. 磁盘
    因为数据存储在datanode(RegionServer)节点上,因此服务器需要大量的存储空间。通常使用的磁盘大小是1TB或者2TB的磁盘,而且根据数据规模和存储周期可以挂载多块磁盘(2T*5)
  2. CPU
    CPU使用单核CPU机器,同时运行3个或者更多的Java进程和操作系统的服务进程效率比较低。在生产环境中,通常采用的是多核处理器,比如说四核处理器或者六核处理器,所以系统可以选择双路四核或者六核,这样基本可以保证每个Java 进程都可以独立占用一个核。
  3. 内存
    给单个进程配置内存是不是越多越好呢?实践证明,使用Java时不应该为一个进程设置过多的内存。内存在Java术语中称为堆(heap),会在使用过程中产生许多碎片,在最坏情况下,Java运行时环境会暂停所有进程内的逻辑并进行清理,设置的堆越大,这个过程花费的时间就越长。其实进程并不需要大量的内存,合适的内存可以避免上述问题,但是region服务器和BlockCache在理论上没有上限。
    【大数据项目学习】第十章:HBase分布式集群部署与设计_第1张图片
1.1.2 软件
  1. SSH
    如果用户需要通过脚本来管理Hadoop与HBase进程必须安装ssh,而且要求用户在master节点通过ssh免密码登录其他slave节点。
  2. Java
    需要安装jdk才能运行HBase,jdk推荐安装jdk1.7及以上版本对HBase支持较好。
  3. 时钟同步
    集群中节点的时间必须是一致的,稍微有一点时间偏差是可以容忍的,但是偏差较多会产生一些奇怪的行为,比如Hmaster、HRegionServer节点上线之后很快消失等。

1.2 运行模式

HBase有两种运行模式:单机模式和分布式模式。

  1. 单机模式
    单机模式是默认模式,在单机模式中,HBase并不使用HDFS,Zookeeper程序与HBase程序运行在同一个JVM进程中,Zookeeper绑定到客户端的常用端口上,以便客户端可以与HBase进程通信。
  2. 分布式模式
    分布式模式又分为:伪分布式模式和完全分布式模式。伪分布式模式,所有守护进程都运行在单个节点上。完全分布式模式,进程运行在物理服务器集群中。

2. HBase安装部署

2.1 集群规划

2.1.1 主机规划

【大数据项目学习】第十章:HBase分布式集群部署与设计_第2张图片

2.1.2 软件规划

【大数据项目学习】第十章:HBase分布式集群部署与设计_第3张图片

2.1.3 用户规划

【大数据项目学习】第十章:HBase分布式集群部署与设计_第4张图片

2.1.4 目录规划

【大数据项目学习】第十章:HBase分布式集群部署与设计_第5张图片

2.2 HBase 安装步骤

2.2.1 下载

Apache 版本:http://archive.apache.org/dist/hbase/

CDH 版本:http://archive-primary.cloudera.com/cdh5/cdh/5/

这里选择下载 hbase-1.2.0-cdh5.10.0.tar.gz 版本的安装包,上传至主节点 app 目录。

2.2.1 解压

使用如下命令解压 HBase 安装包:

tar -zxvf hbase-1.2.0-cdh5.10.0.tar.gz

2.2.1 创建软连接

为了方便操作,使用如下命令创建软连接:

ln -s hbase-1.2.0-cdh5.10.0 hbase

2.2.1 修改配置文件
  1. 修改 hbase-site.xml
    在 Hadoop 中,如果用户需要增加 HDFS 的特定配置就要添加到 hdfs-site.xml 文件中。同样在HBase 中,用户需要增加配置信息,就需要将配置添加到 conf/hbase-site.xml 文件中。进程启动后,服务器会先读取 hbase-default.xml 文件,然后读取 hbase-site.xml 文件,hbase-site.xml 的内容会覆盖 hbase-default.xml 中的内容。每次修改配置文件需要重启进程才能得到最新的配置。
  2. 修改 hbase-en.sh
    HBase 环境变量等信息需要在这个文件中配置,例如 HBase 守护进程的 JVM 启动参数。还可以设置 HBase 配置文件的目录、日志目录、进程 pid 文件的目录等。
  3. 修改 RegionServer
    这个文件罗列了所有 region 服务器的主机名,它是纯文本文件,文件中的每一行都是主机名。HBase 的运维脚本会依次迭代访问每一行来启动所有 region 服务器进程。
  4. 修改 backup-masters
    这个文件配置 HBase master 的备用节点,它是纯文本文件,每行填写主机名即可。
2.2.1 添加 hdfs 配置文件

因为 HBase 启动依赖 hdfs 配置信息,需要将 hdfs 配置文件拷贝到主节点 hbase 的 conf 目录下

cp core-site.xml /home/hadoop/app/hbase-1.2.0-hadoop5.10.0/conf/

cp hdfs-site.xml /home/hadoop/app/hbase-1.2.0-hadoop5.10.0/conf/

2.2.1 同步 HBase 安装目录

将主节点下的 hbase 安装目录分发到其他节点

deploy.sh hbase-1.2.0-cdh5.10.0 /home/hadoop/app/ slave

然后分别创建软链接

ln -s hbase-1.2.0-cdh5.10.0 hbase

2.2.1 创建规划目录

在所有节点创建之前规划好的目录。

runRemoteCmd.sh “mkdir -p /home/hadoop/data/hbase/logs” all

2.3 HBase 启动测试

2.3.1 启动 Zookeeper

集群依赖 Zookeeper 集群,所以需要先启动 Zookeeper

runRemoteCmd.sh “/home/hadoop/app/zookeeper/bin/zkServer.sh start” all

2.3.2 启动 hdfs

Hbase 数据都存储在 hdfs 上,它依赖与 hdfs 集群,所以先启动 hdfs。

sbin/start-dfs.sh

2.3.3 启动 hbase

通过如下命令启动 hbase。

bin/start-hbase.sh

备注:也可以换一个节点启动 HBase,在哪个节点启动 HBase,哪个节点就是 master 角色。

2.3.4 关闭 hbase

运行以下命令可以停止 HBase 集群,一旦启动了这个脚本,我们将会看到一条描述集群正在停止的信息,该信息会周期性地打印”. ”字符。(这仅仅表明脚本正在运行,并不是进度的反馈或者隐藏有用的信息)

$bin/stop-hbase.sh

stopping hbase…

关闭脚本大概需要几分钟完成,如果集群机器比较多,需要执行更长的时间。如果用户运行的是分布式集群,在关闭 hadoop 集群之前一定要确认 hbase 已经被正常关闭。

2.3.5 web 查看 hbase

访问地址:http://master:60010 查看 hbase 相关信息。

2.4 shell 测试运行 HBase 数据库

HBase 为用户提供了一个非常方便的使用方式, 我们称之为“HBase Shell”。HBase Shell 提供了大多数的 HBase 命令, 通过 HBase Shell 用户可以方便地创建、删除及修改表, 还可以向表中添加数据、列出表中的相关信息等。

bin/hbase shell

#查看命令组

hbase>help

2.4.1 General 操作

#查询 HBase 服务器状态

hbase>status

#查看 HBase 版本

hbase>version

2.4.2 Ddl 操作

Ddl 操作(Data Definition Language)数据定义语言

#创建一个表

hbase(main):002:0> create ‘myhbase’,‘cf’

#查看 HBase 所有表

hbase(main):003:0> list

#描述表结构

hbase(main):004:0> describe ‘myhbase’

#删除表

hbase(main):005:0> disable ‘myhbase’

hbase(main):006:0> drop ‘myhbase’

hbase(main):007:0> list

2.4.3 Dml 操作

Dml 操作(Data Manipulation Language)是数据操纵语言

#创建一个表

hbase(main):002:0> create ‘user’,‘cf’

#插入数据

put ‘user’, ‘1’, ‘cf:name’, ‘xiaoli’

put ‘user’, ‘1’, ‘cf:age’, ‘24’

put ‘user’, ‘1’, ‘cf:birthday’, ‘1987-06-17’

put ‘user’, ‘1’, ‘cf:company’, ‘alibaba’

put ‘user’, ‘1’, ‘cf:contry’, ‘china’

put ‘user’, ‘1’, ‘cf:province’, ‘zhejiang’

put ‘user’, ‘1’, ‘cf:city’, ‘hangzhou’

#扫描表所有数据

hbase(main):011:0> scan ‘user’

#根据 rowkey 获取数据

hbase(main):012:0> get ‘user’,‘1’

#根据 rowkey 更新一条数据

hbase(main):013:0>put ‘user’, ‘1’, ‘cf:age’, ‘28’

hbase(main):014:0> get ‘user’,‘1’

#查询表中总记录数据

hbase(main):015:0> count ‘user’

#删除某一列数据

hbase(main):016:0> delete ‘user’, ‘1’, ‘cf:age’

hbase(main):017:0> get ‘user’,‘1’

#清空 hbase 表数据

hbase(main):018:0> truncate ‘user’

hbase(main):019:0> scan ‘user’

3. HBase业务建模

根据项目业务需求创建表结构

3…1 业务数据下载

业务数据下载地址:http://www.sogou.com/labs/resource/q.php

3…2 数据格式说明

数据格式为:访问时间\t 用户 ID\t[查询词]\t 该 URL 在返回结果中的排名\t 用户点击的顺序号\t 用户点击的 URL

其中,用户 ID 是根据用户使用浏览器访问搜索引擎时的 Cookie 信息自动赋值,即同一次使用浏览器输入的不同查询对应同一个用户 ID

3.3 业务数据建模

创建 hbase 业务表:create ‘sogoulogs’,‘info’

你可能感兴趣的:(大数据项目学习,分布式,hadoop,linux,java,大数据)