基于hadoop下的hbase安装

news2024/11/18 15:36:54

简介

        HBase是一个分布式的、面向列的开源数据库,该技术来源于Fay Chang所撰写的Google论文“Bigtable:一个结构化数据的分布式存储系统”。就像Bigtable利用了Google文件系统(File System)所提供的分布式数据存储一样,HBase在Hadoop之上提供了类似于Bigtable的能力。HBase是Apache的Hadoop项目的子项目。HBase不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库。另一个不同的是HBase基于列的而不是基于行的模式。

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

HBase的特点有:

        稀疏:HBase的列理论上是允许无限扩展的,对于成百万的列来说,会有大量的空值,如果使用null填充的策略,势必会造成大量空间的浪费,因此,稀疏性是HBase无限扩展的一个重要条件。
        排序:构成HBase的kv在同一文件中都是有序的,首先是rowkey(行键)升序排序,rowkey相同则column key(列族和修饰符)升序排序,rowkey、column key相同则timestamp(时间戳)降序排序。
        分布式:构成HBase的map都不在某台机器上,而是分布在整个集群中。

HBase的缺点有:

    HBase不支持条件查询,只支持按照Row key来查询。这意味着用户需要预先知道查询条件,否则无法进行查询。
    HBase暂时不能支持Master server的故障切换,当Master宕机后,整个存储系统就会挂掉。这可能会对系统稳定性造成一定影响。
    HBase的数据类型只有简单的字符类型,所有的类型都是交由用户自己处理,它只保存字符串。相比之下,关系数据库有丰富的类型和存储方式。
    HBase只有很简单的插入、查询、删除、清空等操作,表和表之间是分离的,没有复杂的表和表之间的关系,而传统数据库通常有各式各样的函数和连接操作。

HBase数据模型的核心概念。


(1)表
HBase是一种列式存储的分布式数据库,其核心概念是表(Table)。与传统关系型数据库一样,HBase的表也是由行和列组成,但HBase同一列可以存储不同时刻的值,同时多个列可以组成一个列簇(Column Family),这种组织形式主要基于存取性能。
(2)行键
        RowKey既是HBase表的行键,也是HBase表的主键。HBase表中的记录是按照RowKey的字典顺序进行存储的。在HBase中,为了高效地检索数据,需要设计良好的RowKey来提高查询性能。首先RowKey被冗余存储,所以长度不宜过长,RowKey过长将会占用大量的存储空间,同时会降低检索效率;其次RowKey应该尽量均匀分布,避免产生热点问题(大量用户访问集中在一个或极少数节点,造成单台节点超出自身承受能力);另外需要保证RowKey的唯一性。
(3)列簇
        HBase表中的每个列都归属于某个列簇,一个列簇中的所有列成员有着相同的前缀。比如,列anchor:cnnsi.com和anchor:my.look.ca都是列簇anchor的成员。列簇是表的Schema的一部分,必须在使用表之前定义列簇,但列却不是必需的,写数据时可以动态加入。一般将经常一起查询的列放在一个列簇中,合理划分列簇将减少查询时加载到缓存的数据,提高查询效率,但也不能有太多的列簇,因为跨列簇访问是非常低效的。
(4)单元格
        HBase中通过Row和Column确定的一个存储单元称为单元格(Cell)。每个单元格都保存着同一份数据的多个版本,不同时间版本的数据按照时间顺序倒序排序,最新时间的数据排在最前面,时间戳是64位的整数,可以由客户端在写入数据时赋值,也可以由RegionServer自动赋值。为了避免数据存在过多版本造成的管理(包括存储和索引)负担,HBase提供了两种数据版本回收方式。一是保存数据的最后n个版本;二是保存最近一段时间内的数据版本,比如最近7天。用户可以针对每个列簇进行设置。

安装准备

       zookeeper安装

        Hadoop安装

        Hbase安装

通过官网下载,hbase-2.5.6-bin.tar.gz 包

##可能使用网页下载会更快,然后再上传到虚拟机中
wget https://dlcdn.apache.org/hbase/2.5.6/hbase-2.5.6-bin.tar.gz
##解压缩
tar -zxvf hbase-2.5.6-bin.tar.gz
##挂载软连接
ln -s hbase-2.5.6/   hbase

配置文件设置

        HBase的conf目录下的文件进行配置。通过设置hbase-site.xml配置文件进行个性化配置,从而覆盖默认的hbase-default.xml配置内容;通过设置hbase-en.sh文件,添加HBase启动时使用到的环境变量;通过设置RegionServers文件,使得HBase能启动所有Region服务器进程;通过设置backup-masters文件,可以实现HBase HMaster的高可用。

        hbase-site.xml文件配置

        hbase-site.xml 是 HBase 运行和对外服务的基本环境配置文件。

vim  hbase/conf/hbase-site.xml

        所有节点均采用以下配置内容 

<configuration>
  <!--

    HBase will refuse to run in such an environment. Setting
    `hbase.unsafe.stream.capability.enforce` to `false` overrides this behavior,
    permitting operation. This configuration is for the developer workstation
    only and __should not be used in production!__

    See also https://hbase.apache.org/book.html#standalone_dist
  -->
  <property>
    <name>hbase.cluster.distributed</name>
    <value>true</value>
  </property>
  <property>
    <name>hbase.tmp.dir</name>
    <value>./tmp</value>
  </property>
 <property>
    <name>hbase.zookeeper.quorum</name>
    <value>vm02,vm03,vm04</value>
  </property> 
  <property>
    <name>hbase.zookeeper.property.dataDir</name>
    <value>/home/hadoop/data/zookeeper</value>
  </property>
  <property>
    <name>hbase.zookeeper.property.clientPort</name>
    <value>2181</value>
  </property>
<property>
    <name>hbase.rootdir</name>
    <value>hdfs://mycluster/hbase</value>
  </property>
  <property>
    <name>hbase.unsafe.stream.capability.enforce</name>
    <value>true</value>
  </property>
</configuration>

参数解释:

  • <property><name>hbase.cluster.distributed</name><value>true</value></property>:设置 HBase 集群模式为分布式模式,即启用分布式功能。
  • <property><name>hbase.tmp.dir</name><value>./tmp</value></property>:设置 HBase 临时数据目录路径,用于存储一些临时数据,如 regionserver 等工作数据。
  • <property><name>hbase.zookeeper.quorum</name><value>vm02,vm03,vm04</value></property>:设置 ZooKeeper 集群的地址,多个地址间使用逗号分隔,默认端口为 2181。
  • <property><name>hbase.zookeeper.property.dataDir</name><value>/home/hadoop/data/zookeeper</value></property>:设置 ZooKeeper 的数据目录路径,用于保存 ZooKeeper 数据信息。
  • <property><name>hbase.zookeeper.property.clientPort</name><value>2181</value></property>:设置客户端连接 ZooKeeper 的端口号。
  • <property><name>hbase.rootdir</name><value>hdfs://mycluster/hbase</value></property>:设置 HBase 的根目录,即数据存储的根目录,本例中设置为 HDFS 上的路径。
  • <property><name>hbase.unsafe.stream.capability.enforce</name><value>true</value></property>:设置是否启用 HBase 流式 API 安全检查,如果设置为 true,HBase 将会禁止使用本地优化器和排序机制,对于非常大的数据量场景可能会影响性能。

      进入HBase根目录下的conf文件夹,修改regionServers配置文件,regionServers配置文件是指定hbase集群的hostname。路径下默认是有一个空内容的该文件。

        所有节点均采用以下配置内容 

vim RegionServers
[hadoop@vm02 conf]$ vim regionServers

vm02
vm03
vm04  

backup-masters文件配置

        该文件指定备节点为vm03,所有节点均采用以下配置内容 

[hadoop@vm02 conf]$ vim backup-masters

vm03

hbase-env.sh文件配置

        HBase 的环境变量配置文件是运行的基础运行变量文件。进入HBase根目录下的conf文件夹,修改hbase-env.sh配置文件。
        自带的该文件中有很多变量已做注释,可以通过AI得到对这些变量的理解,本文只设置两个值,其余值采用默认值。
        所有节点均采用以下配置内容 

export JAVA_HOME=/jdk/jdk1.8.0_144/
export HBASE_MANAGES_ZK=false

环境变量配置

        使用root用户编辑/etc/profile文件的环境变量。环境变量的命名中${JAVA_HOME}和$JAVA_HOME等同的,由于博主JDK以前设置的问题,以及安装了和Hadoop无关的postgresql数据库,设置了postgresql的相关变量。这里不做统一标准化处理了。读者了解即可。所有节点均采用以下配置内容

export JAVA_HOME=/jdk/jdk1.8.0_144/
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:/home/postgres/pg/bin:$ZOOKEEPER_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$HBASE_HOME/bin:$PATH
export ZOOKEEPER_HOME=/home/hadoop/zookeeper
export PGDATA=/home/postgres/pg/data


#HADOOP_HOME
export HADOOP_HOME=/home/hadoop/hadoop
export HBASE_HOME=/home/hadoop/hbase
export JAVA_HOME CLASSPATH PATH HADOOP_HOME ZOOKEEPER_HOME HBASE_HOME
#加载环境变量
source /etc/profile
##切换到hadoop用户下
su  - hadoop 
##编辑本用户环境变量添加source /etc/profile
[hadoop@vm02 ~]$ vim .bash_profile 

# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/.local/bin:$HOME/bin
source /etc/profile
export PATH
~                                       

 Hbase启动

        所有节点启动zookeeper

 zkServer.sh start
 zkServer.sh status

 

        主节点vm02启动hdfs,hbase

##打命令的时候使用tab键会有联想功能,如果没有联想成功,说明环境变量配置有问题
start-all.sh
start-hbase.sh

        使用jps在所有节点 

hbase客户端访问 

        客户端访问命令

hbase shell

        

        附加

hbase的性能变量

        hbase是基于jvm上运行的数据库,所以在性能有空间的情况下可以对其运行性能放大(jvm上运行的相关程序多数都有这方面的设置,这里以Hbase举例说明)。

export $HBASE_OPT ="$HBASE_OPT -Xmx9g -Xms8g -Xmn128M -XX:+UseParNewGC -XX:+UseConMarkSweepGC -XX:CMSInitiatingOccupancyFraction=70 --verbose:gc-XLoggc:${HBASE_HOME}/log/gc-hbase.log

各个参数的含义如下:

        -Xmx9g: 这个参数设置JVM的堆内存最大值为9GB。
        -Xms8g: 这个参数设置JVM的堆内存初始值为8GB。
        -Xmn128M: 这个参数设置年轻代(Young Generation)的大小为128MB。年轻代是Java堆内存中的一部分,主要存放新创建的对象。
        -XX:+UseParNewGC: 这个参数启用并行收集器(Parallel GC),并行收集器主要用于服务端,具有高吞吐量,适合后台应用。
        -XX:+UseConcMarkSweepGC: 这个参数启用CMS收集器(CMS GC),CMS收集器主要用于服务端,低停顿,但并发能力比不上并行收集器。
        -XX:CMSInitiatingOccupancyFraction=70: 这个参数设置CMS收集器的初始占有比例为70%。
        --verbose:gc: 这个参数启用GC的详细日志记录。
        -Xloggc:${HBASE_HOME}/log/gc-hbase.log: 这个参数设置GC的日志文件路径,用于记录GC的详细日志信息。
除了以上参数,还有很多其他的参数可以设置,这取决于你的需求和环境。例如,你可以设置其他的JVM参数,如-XX:MaxPermSize、-XX:+UseG1GC等。你也可以设置HBase的特定参数(不推荐),$HBASE_OPT变量重点还是指定JVM相关运行参数。

        注:博主对这个变量不感兴趣,不做举例说明。生产环境中需要根据服务器实际使用情况配置该变量,将其设置在每一个节点的环境变量文件中便可。

端口信息查看

        hadoop中相关组件和中间件比较多,在整个安装过程中都已经忘了哪些是对外服务的端口信息,这里记住两个查看端口号的指令

#查看对外开放的端口号
netstat -tuln

ss -tulpn

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

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

相关文章

机器人导航地图——Obstacle层的障碍物-Bresenham算法详细解释

文章目录 前言一、Bresenham算法源码解析1. 函数raytraceFreespace2. 函数inline void raytraceLine3. 函数bresenham2D 二、Bresenham算法——C代码实现总结 前言 作者在读源代码时&#xff0c;遇到了下述的代码void ObstacleLayer::raytraceFreespace&#xff0c;不是很好理…

股票要怎么买入卖出?

股票账户终于开好了&#xff01;恭喜你马上就可以开启刺激的炒股之旅了&#xff01;不过第一次买股票的你是不是还不知道怎么个买法呢&#xff1f;别担心~贴心的汇小鲸带着教程来了&#xff0c;咱们一起看看吧&#xff01; 首先一点&#xff0c;大家得知道&#xff1a;开好户还…

速通MySql

一、简介 1、什么是数据库 数据仓库&#xff0c;用来存储数据。访问必须用SQL语句来访问 2、数据库的类型 1、关系型数据库&#xff1a;Oracle、DB2、Microsoft SQL Server、Microsoft Access、MySQL等 可以用SQL语句方便的在一个表以及多个表之间做非常复杂的数据查询&#…

Postman如何导入和导出接口文件

本文介绍2种导出和导入的操作方法&#xff1a;一种是分享链接&#xff0c;导入链接的方式&#xff08;需要登录&#xff09;&#xff1b;另一种是导出json文件&#xff0c;再次导入。下面将详细介绍。 由于第一种分享链接&#xff0c;导入链接的方式需要登录&#xff0c;所以推…

项目实战之RabbitMQ死信队列应用

&#x1f9d1;‍&#x1f4bb;作者名称&#xff1a;DaenCode &#x1f3a4;作者简介&#xff1a;啥技术都喜欢捣鼓捣鼓&#xff0c;喜欢分享技术、经验、生活。 &#x1f60e;人生感悟&#xff1a;尝尽人生百味&#xff0c;方知世间冷暖。 文章目录 &#x1f31f;架构图&#x…

开源 LLM 安全扫描器

Vigil 是一款开源安全扫描程序&#xff0c;可检测即时注入、越狱以及对大型语言模型(LLM) 的其他潜在威胁。 当攻击者使用专门设计的输入成功影响 LLM 时&#xff0c;就会出现即时注入。这导致 LLM 无意中实现了攻击者设定的目标。 ​ 我对 LLM 的可能性感到非常兴奋&#xff…

MFC、VC++操作excel后,excel程序进程无法正常退出的非暴力处理方法

先说处理方式 1、最low的方式&#xff1a;强制结束进程 //打开进程得到进程句柄 HANDLE hProcessOpenProcess(PROCESS_ALL_ACCESS,FALSE,Pid); if(hProcess!NULL) { //结束进程 if (TerminateProcess(hProcess,0)){printf("结束进程成功\n");return 0;} }这种方式…

【Linux系统化学习】揭秘 命令行参数 | 环境变量

个人主页点击直达&#xff1a;小白不是程序媛 Linux专栏&#xff1a;Linux系统化学习 代码仓库&#xff1a;Gitee 目录 命令行参数 环境变量 PATH 查看PATH $PWD 查看环境变量PWD $HOME 查看系统支持的环境变量 获取环境变量 命令行参数 在C/C编程语言中我们有一个…

hls实现播放m3u8视频将视频流进行切片 HLS.js简介

github官网GitHub - video-dev/hls.js: HLS.js is a JavaScript library that plays HLS in browsers with support for MSE.HLS.js is a JavaScript library that plays HLS in browsers with support for MSE. - GitHub - video-dev/hls.js: HLS.js is a JavaScript library …

Redis——某马点评day01——短信登录

项目介绍 导入黑马点评项目 项目架构 基于Session实现登录 基本流程 实现发送短信验证码功能 controller层中 /*** 发送手机验证码*/PostMapping("code")public Result sendCode(RequestParam("phone") String phone, HttpSession session) {// 发送短信…

2024 年综合网络安全审计清单

在网络威胁不断演变的时代&#xff0c;确保组织数据和系统的安全至关重要。 全面的网络安全审核清单可以在实现这一目标方面发挥关键作用。但是&#xff0c;什么才是有效的网络安全审核清单呢&#xff1f;以及如何对其进行定制以满足您组织的独特需求&#xff1f; 了解网络安…

Linux部署elasticsearch集群

文章目录 一、集群规划二、安装前准备(所有节点操作)创建数据目录修改系统配置文件/etc/sysctl.conf创建用户组设置limits.conf 三、初始化配置(在节点1上操作)下载安装包解压安装包修改jvm.options文件下配置的所占内存修改集群配置文件elasticsearch.yml将安装包传到另外两个…

Python将excel模板复制到新的excel中,然后插入新数据导出

import copy import datetime import numpy import time import openpyxl import pymssql import requests import json from requests_toolbelt import MultipartEncoder from urllib import parse import os # 要想使用路径相关功能需要导入 os 模块 from apscheduler.sched…

NXP iMX8M Plus Qt5 双屏显示

By Toradex胡珊逢 简介 双屏显示在显示设备中有着广泛的应用&#xff0c;可以面向不同群体展示特定内容。文章接下来将使用 Verdin iMX8M Plus 的 Arm 计算机模块演示如何方便地在 Toradex 的 Linux BSP 上实现在两个屏幕上显示独立的 Qt 应用。 硬件介绍 Verdin iMX8M Plu…

2024年甘肃省职业院校技能大赛中职组 电子与信息类“网络安全”赛项竞赛样题-B卷

2024 年甘肃省职业院校技能大赛中职组 电子与信息类“网络安全”赛项竞赛样题-B卷 2024 年甘肃省职业院校技能大赛中职组 电子与信息类“网络安全”赛项竞赛样题-B卷A 模块基础设施设置/安全加固&#xff08;200 分&#xff09;A-1&#xff1a;登录安全加固&#xff08;Windows…

【漏洞复现】智跃人力资源管理系统GenerateEntityFromTable.aspx接口存在SQL注入漏洞 附POC

漏洞描述 智跃人力资源管理系统是基于B/S网页端广域网平台,一套考勤系统即可对全国各地多个分公司进行统一管控,成本更低。信息共享更快。跨平台,跨电子设备。智跃人力资源管理系统GenerateEntityFromTable.aspx接口处存在SQL注入漏洞,攻击者可通过该漏洞获取数据库中的信…

『 Linux 』环境变量

文章目录 &#x1f680;什么是环境变量&#x1f680;&#x1f680;查看环境变量&#x1f680;&#x1f579;️和环境变量有关的命令&#x1f579;️ &#x1f680;PATH环境变量&#x1f680;&#x1f579;️设置PATH环境变量&#x1f579;️ &#x1f680;HOME环境变量&#x1…

手敲单链表,简单了解其运行逻辑

1. 链表 1.1 结构组成 链表是一种物理存储结构上非连续存储结构&#xff0c;数据元素的逻辑顺序是通过链表中的引用链接次序实现的 。 链表的结构如下图所示&#xff0c;是由很多个节点相互通过引用来连接而成的&#xff1b;每一个节点由两部分组成&#xff0c;分别数据域&…

【LeetCode每日一题合集】2023.11.20-2023.11.26 (二叉树中的伪回文路径)

文章目录 53. 最大子数组和解法1——DP解法2——分治&#xff08;维护区间、类似线段树的思想&#xff09; 2216. 美化数组的最少删除数&#xff08;贪心&#xff09;2304. 网格中的最小路径代价1410. HTML 实体解析器&#xff08;模拟&#xff09;2824. 统计和小于目标的下标对…

iOS Class Guard 成功了,但无法区分差异

​ 我正在开发一个静态库&#xff0c;并使用 Polidea 的 iOS Class Guard 来混淆我的静态库。我按照步骤在项目的根路径中下载 obfuscate_project&#xff0c;更改其中所需的名称&#xff0c;最后在终端中运行 bash obfuscate_project。我收到一条消息&#xff0c;说我的构建成…