hbase简介与安装

news2024/11/17 5:35:16

Hbase简介

HBase是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBase技术可在廉价PC Server上搭建起大规模结构化存储集群。

HBase是Google Bigtable的开源实现,类似Google Bigtable利用GFS作为其文件存储系统,HBase利用Hadoop HDFS作为其文件存储系统;Google运行MapReduce来处理Bigtable中的海量数据,HBase同样利用HadoopMapReduce来处理HBase中的海量数据;Google Bigtable利用 Chubby作为协同服务,HBase利用Zookeeper作为对应。

HBase系统架构如图所示

 

Client

HBase Client使用HBase的RPC机制与HMaster和HRegionServer进行通信,对于管理类操作,Client与HMaster进行RPC;对于数据读写类操作,Client与HRegionServer进行RPC

Zookeeper

Zookeeper Quorum中除了存储了-ROOT-表的地址和HMaster的地址,HRegionServer也会把自己以Ephemeral方式注册到Zookeeper中,使得HMaster可以随时感知到各个HRegionServer的健康状态。此外,Zookeeper也避免了HMaster的单点问题,见下文描述

HMaster

HMaster没有单点问题,HBase中可以启动多个HMaster,通过Zookeeper的Master Election机制保证总有一个Master运行,HMaster在功能上主要负责Table和Region的管理工作:

1.       管理用户对Table的增、删、改、查操作

2.       管理HRegionServer的负载均衡,调整Region分布

3.       在Region Split后,负责新Region的分配

4.       在HRegionServer停机后,负责失效HRegionServer上的Regions迁移

HRegionServer

HRegionServer主要负责响应用户I/O请求,向HDFS文件系统中读写数据,是HBase中最核心的模块。

 

HRegionServer内部管理了一系列HRegion对象,每个HRegion对应了Table中的一个Region,HRegion中由多个HStore组成。每个HStore对应了Table中的一个Column Family的存储,可以看出每个Column Family其实就是一个集中的存储单元,因此最好将具备共同IO特性的column放在一个Column Family中,这样最高效。

-ROOT- && .META. Table

HBase中有两张特殊的Table,-ROOT-和.META.

Ø  .META.:记录了用户表的Region信息,.META.可以有多个regoin

Ø  -ROOT-:记录了.META.表的Region信息,-ROOT-只有一个region

Ø  Zookeeper中记录了-ROOT-表的location

 

Client访问用户数据之前需要首先访问zookeeper,然后访问-ROOT-表,接着访问.META.表,最后才能找到用户数据的位置去访问,中间需要多次网络操作,不过client端会做cache缓存。

Hbase的安装:

集群环境:

192.168.11.12  作为hbase主master

192.168.11.14  作为hbase备用master

192.168.11.16作为zookeeperNode/HRegionsever

192.168.11.18作为zookeeperNode/HRegionsever

192.168.11.20作为zookeeperNode/HRegionsever

192.168.11.12——192.168.11.20是hdfs的datanode

Hdfs的namenode为192.168.11.8 主机名为hadoopNN00

软件版本:

Hadoop-0.20.1-dev

Hbase-0.90.3

Hbase的安装是基于hdfs的,Hbase的配置主要涉及conf目录下的三个文件:hbase-env.sh,hbase-site.xml,regionserver。

Hbase-env.sh配置如下:

#必须配置的项目如下:

export JAVA_HOME=/root/jdk1.6.0_25
export HBASE_OPTS="-ea -XX:+UseConcMarkSweepGC -XX:+CMSIncrementalMode"
export HBASE_MANAGES_ZK=true
export HBASE_CLASSPATH=/usr/local/hadoop-0.20.1-dev/conf

调优配置项如下:

# Extra Java CLASSPATH elements.Optional.
# export HBASE_CLASSPATH=
# The maximum amount of heap to use, in MB. Default is 1000.
# export HBASE_HEAPSIZE=1000
# Extra Java runtime options.
# Below are what we set by default.  May only work with SUN JVM.
# For more on why as well as other possible settings,
# see http://wiki.apache.org/hadoop/PerformanceTuning

export HBASE_OPTS="-ea -XX:+UseConcMarkSweepGC -XX:+CMSIncrementalMode"

# Uncomment below to enable java garbage collection logging.
# export HBASE_OPTS="$HBASE_OPTS -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:$HBASE_HOME/logs/gc-hbase.log"
# Uncomment and adjust to enable JMX exporting
# See jmxremote.password and jmxremote.access in $JRE_HOME/lib/management to configure remote password access.
# More details at: http://java.sun.com/javase/6/docs/technotes/guides/management/agent.html
# export HBASE_JMX_BASE="-Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false"
# export HBASE_MASTER_OPTS="$HBASE_JMX_BASE -Dcom.sun.management.jmxremote.port=10101 -javaagent:lib/HelloWorldAgent.jar"
# export HBASE_REGIONSERVER_OPTS="$HBASE_JMX_BASE -Dcom.sun.management.jmxremote.port=10102"
# export HBASE_THRIFT_OPTS="$HBASE_JMX_BASE -Dcom.sun.management.jmxremote.port=10103"
# export HBASE_ZOOKEEPER_OPTS="$HBASE_JMX_BASE -Dcom.sun.management.jmxremote.port=10104"
# File naming hosts on which HRegionServers will run.  $HBASE_HOME/conf/regionservers by default.
# export HBASE_REGIONSERVERS=${HBASE_HOME}/conf/regionservers
# Extra ssh options.  Empty by default.
# export HBASE_SSH_OPTS="-o ConnectTimeout=1 -o SendEnv=HBASE_CONF_DIR"
# Where log files are stored.  $HBASE_HOME/logs by default.
# export HBASE_LOG_DIR=${HBASE_HOME}/logs
# A string representing this instance of hbase. $USER by default.
# export HBASE_IDENT_STRING=$USER
# The scheduling priority for daemon processes.  See 'man nice'.
# export HBASE_NICENESS=10
# The directory where pid files are stored. /tmp by default.
# export HBASE_PID_DIR=/var/hadoop/pids
# Seconds to sleep between slave commands.  Unset by default.  This
# can be useful in large clusters, where, e.g., slave rsyncs can
# otherwise arrive faster than the master can service them.
# export HBASE_SLAVE_SLEEP=0.1
# Tell HBase whether it should manage it's own instance of Zookeeper or not.

export HBASE_MANAGES_ZK=true
export HBASE_CLASSPATH=/usr/local/hadoop-0.20.1-dev/conf

hbase-site.xml配置如下:

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
    <property>
        <name>hbase.rootdir</name>
        <value>hdfs://hadoopNN00:9000/hbase</value>
        <description>The directory shared by region servers.</description>
    </property>
    <property>
        <name>hbase.master.port</name>
        <value>60000</value>
    </property>
    <property>
        <name>hbase.cluster.distributed</name>
        <value>true</value>
    </property>
    <property>
        <name>hbase.zookeeper.property.dataDir</name>
        <value>/usr/local/hbase/zookeeper</value>
    </property>
    <property>
        <name>hbase.zookeeper.property.clientPort</name>
        <value>2181</value>
    </property>
    <property>
        <name>hbase.zookeeper.quorum</name>
        <value>192.168.11.16,192.168.11.18,192.168.11.20</value>
    </property>
</configuration>

其中,hbase.rootdir这一项的配置必须与hdfs的fs.name.default项一致,还要为hbase指定根目录/hbase

<property>
    <name>hbase.rootdir</name>
    <value>hdfs://hadoopNN00:9000/hbase</value>
    <description>The directory shared by region servers.</description>
</property>

Regionserver的配置如下:

192.168.11.16
192.168.11.18
192.168.11.20

配置完毕后将hbase拷贝到各个机器中的相同目录下。

启动habse

在192.168.11.12上启动hbase集群:bin/start-hbase.sh,首先启动的是zookeeper,再是master,最后是HRegionserver

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/604938.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

安装Linux-SUSE操作系统

文章目录 一、安装Linux-SUSE系统1、环境准备2、SUSE 镜像的下载2.1、下载企业服务器2.2、ARM和桌面的ISO 3、安装SUSE4、配置本地 yum 源5、SUSE常用安装命令6、在 SUSE系统上安装mysql数据库步骤&#xff1a;7、破解SUSE系统root密码 一、安装Linux-SUSE系统 1、环境准备 操…

7月蓄势待发,2023上海内部物流展,预登记全面启动!

观众预登记通道现已全面开放 展会时间 2023年7月5日 9:00-17:00 2023年7月6日 9:00-17:00 2023年7月7日 9:00-15:00 展会地点 上海新国际博览中心&#xff08;浦东新区龙阳路2345号&#xff09; 同期展会 2023上海国际AGV机器人产业展 2023上海国际电商物流包装产业展 2…

外包干了4年,今天分手了...

先说一下自己的情况&#xff0c;大专生&#xff0c;18年通过校招进入湖南某软件公司&#xff0c;干了接近4年的功能测试&#xff0c;今年年初&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了四年的功能测试…

gcc-g++使用编译链接理解

在讲gcc/g使用之前我们先讲一下背景&#xff0c;编译链接 编译链接我们之前讲过一次&#xff0c;但是这里在深入理解一下编译链接&#xff0c;以及我们看一下现象 编译链接 首先&#xff0c;编译链接可以分为四步&#xff1a; 1.预处理 2.编译 3.汇编 4.链接 预处理 我…

java Stream流

体验Stream流 案例需求 按照下面的要求完成集合的创建和遍历 创建一个集合&#xff0c;存储多个字符串元素把集合中所有以"张"开头的元素存储到一个新的集合把"张"开头的集合中的长度为3的元素存储到一个新的集合遍历上一步得到的集合 public class MyS…

NDK环境变量配置及Jni生成so文件

1、通过AndroidStudio下载NDK和Cmake之后&#xff0c;需要在系统环境变量中进行NDK的配置&#xff0c;如下 (1)、NDK_HOME : D:\SDK\Sdk\ndk\22.1.7171670 (2)、将%NDK_HOME%同时添加到Path中 2、在AndroidStudio的File->Project Structure->SDK Location中选择ndk&…

Linux Shell_cut命令(按列提取文本字符)

linux cut命令&#xff08;按列提取文本字符&#xff09; cut是一个选取命令&#xff0c;就是将一段数据经过分析&#xff0c;取出我们想要的。一般来说&#xff0c;选取信息通常是针对“行”来进行分析的&#xff0c;并不是整篇信息分析的 语法格式 cut [-bn] [file] 或 cu…

2023届-SLAM算法校招面经

23年6月初终于尘埃落定&#xff0c;今年受大环境影响&#xff0c;这一路可以说是步履维艰&#xff0c;我的投递的行业主要面向机器人和自动驾驶&#xff0c;投递岗位大部分是算法工程师&#xff0c;其中也包括C开发和少量的测试岗&#xff0c;在面试过程中加深了对车企、自动驾…

15天学会EasyX 第1天:EasyX的下载与配置安装

本文为山城瑞宝创作&#xff0c;转载请标注版权&#xff01; 本文所指的编译器为Dev-c&#xff0c;如果有任何问题请私信我。 如果是使用VS的伙伴&#xff0c;直接去官网一键安装就可以了&#xff08;会略讲&#xff09;。 EasyX官网地址&#xff1a;https://easyx.cn/ 目录 …

【模块七----面向对象基础部分】

面向对象基础部分 面向对象的编程思想介绍&#xff1a; 一 、类和对象&#xff1a;1.1类&#xff1a;创建对象前必须先有类的存在类和对象的关系&#xff1a;类的组成&#xff1a;属性行为类的创建实例&#xff1a; 1.2 对象&#xff1a;对象的创建格式&#xff1a;使用对象的成…

新来的00后这么猛,这薪资我看了都吓一跳,这是正常人吗?

2023年很卷吗&#xff1f;不&#xff0c;只能说你还得学&#xff01; 都说00后已经躺平了&#xff0c;但是有一说一&#xff0c;该卷的还是卷&#xff01; 这不&#xff0c;前段时间我们公司新招来了一个00后小伙&#xff0c;工作都没2年&#xff0c;跳槽到我们公司就起薪18K&…

MarkDown的基本使用方法

为了给官方的文档知识总结&#xff1a;Markdown 基本语法 | Markdown 官方教程 #空格内容&#xff1a;‘#’表示标题的等级&#xff0c;越少表示标题级别越高&#xff08;字越大&#xff09; 在一行的末尾加两个或多个空格再回车&#xff0c;就是我们普通的文本回车。【还有一…

FreeRTOS基础学习

一、学习资源&#xff1a; 1、正点原子免费教学视频&#xff1a; 原子哥&#xff0c;专注电子技术教学 2、FreeRTOS官方网站&#xff1a; FreeRTOS - Market leading RTOS (Real Time Operating System) for embedded systems with Internet of Things extensions 3、PPT与源码…

Node.js+vue多用户个人博客网站i03nz

基于nodejs语言设计并实现了个人博客。该系统基于B/S即所谓浏览器/服务器模式&#xff0c;应用Vue框架&#xff0c;选择MySQL作为后台数据库。系统主要包括首页、个人中心、用户管理、文章分类管理、博客文章管理、留言板管理、系统管理等功能模块。要循序渐进&#xff0c;心急…

chatgpt赋能python:Python列表分割与排序:完美解决数据处理问题

Python列表分割与排序&#xff1a;完美解决数据处理问题 在Python的开发实践中&#xff0c;数据处理是一项必不可少的操作。列表&#xff08;list&#xff09;是Python语言中常用的数据类型之一&#xff0c;列表中的元素可以是任意类型。列表的分割和排序是Python中常见的操作…

Apk编译过程1 - Android Studio 与 gradle

Apk编译过程1 - Android Studio 与 gradle 文章目录 Apk编译过程1 - Android Studio 与 gradlegradlewAndroid studio 的 gradle plugingradle脚本AGP&#xff1a;Android Gradle Plugin gradle 是 Android 开发者比较熟悉的构建工具了&#xff0c;因为 Android Studio 默认使用…

Java常用类及使用方法

目录 1.String 1.String的基本概念 2.String的不可变性 3.String的实例化方式及内存解析 1.两种方式 2.new构造器的方式的内存解析 3.字符串对象的存储 4.字符串拼接后的内存解析 6.String中的常用方法 7.什么时候indexOf (str)和LastIndexOf (str)返回值相同 8.Str…

用gpt定制一个pytest接口测试框(附源码)

目的&#xff1a; 描述我的需求和目标让gpt给我写一个测试接口框架 并且让他自己完善。 我说:帮我写一个基于python语言的 pytest的接口测试框架 支持post get put delete请求 添加详细的断言&#xff0c;处理身份验证和授权&#xff0c;处理HTTP错误 加上allure2报告和有请求…

代码随想录第51天

1.最佳买卖股票时机含冷冻期 淦&#xff0c;自己写&#xff0c;用3个状态死活写不出来。 动规五部曲&#xff0c;分析如下&#xff1a; 确定dp数组以及下标的含义 dp[i][j]&#xff0c;第i天状态为j&#xff0c;所剩的最多现金为dp[i][j]。 其实本题很多同学搞的比较懵&…

SecurityAccess(0x27)服务

SecurityAccess&#xff08;0x27&#xff09;服务 此服务的目的是提供访问数据和/或诊断服务的手段&#xff0c;这些服务因安全&#xff0c;排放或安全原因而受到限制。 用于将 例程或数据下载/上传到服务器和从服务器读取特定存储器位置的诊断服务是可能需要安全访问的情况。…