| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 大数据 -> 大数据组件之Hbase(整体分享) -> 正文阅读 |
|
[大数据]大数据组件之Hbase(整体分享) |
我记得我刚工作那年19年的春天,对hbase还是比较恐惧的,因为里面存储的是字节,后来我专门去当讲师,去学习,克服了恐惧,了解了原理,再后来在安全公司专门用hbase对他企业级的有了更多的理解。所以作为我最喜欢的库之一,写了很多文档,但是没有一个汇总,这篇就是我对hbase的汇总吧。 作为一个组内分享使用,目的是,让同事们,看完之后能知道Hbase的前因后果,以及使用场景,选型时的瓶颈,以及能够使用。 根据实际业务场景来,来了问题,先调研(选型组件),瓶颈,熟悉组件原理,安装与使用组件。 目录 1.hbase和其他组件的对比大数据的常用数据库,hbase,hive,kudu,clickhouse关系数据库我就不对比了,因为查询速度不是一量级的。 hive是基于mapreduce的,数据存储在hdfs上,能和hbase关联做映射,但是查询基于mr和spark速度最慢,和presto连接后,查询速度变快。但是本质上这个库是不快的,并且不支持随机读写,比如我要改数据就不行,3.0后移除了。最稳定,批处理能力强。 kudu支持随机读写,能读数据也能改数据,批处理能力不及hive,和impala一起查询,经常把内存搞崩,查询速度比较快。支持更新操作,和impala一起查询,很方便。适合经常更新的数据库,对实时性要求也高的。 hbase,查询速度非常快,2亿条数据取1条只要1秒,支持随机读写,查询只能根据rowkey查询,集成phoenix后,支持sql查询,但是影响速度,数据可选择hdfs或者本地磁盘。适合单一业务的存储,不适合复杂业务。尤其不适合各种关联的。 clickhouse,查询速度非常快,由于单条查询,利用整机的cpu,对于多条查询,资源吃紧,不太适合当作接口提供。单表查询非常快。适合作为宽表。操作方便,自带查询。其他的3个组件不关联其他的组件,简直是难用。 -------------------- 名称? ? ? ? ? ? ? ? ? ? 读? ? ? ? ? ? ? ? ? 写? ? ? ? ? ? ? ? ? ?资源消耗? ? ? ? ? ? ? ? 资源维护? ? ? ? ?缺点 hive? ? ? ? ? ? ? ? ? 慢? ? ? ? ? ? ? ? ? 慢? ? ? ? ? ? ? ? ? ? ?非常低(稳定)? ? ? ? ? 中? ? ? ? ? ? ? ? ?速度慢 hbase? ? ? ? ? ? ? ?快? ? ? ? ? ? ? ? ?快(300w/s)? ? ? ? 中? ? ? ? ? ? ? ? ? ? ? ? ? ? ?中? ? ? ? ? ? ? 不适合复杂查询 kudu? ? ? ? ? ? ? ? ?快? ? ? ? ? ? ? ? ?快? ? ? ? ? ? ? ? ? ? ? 很高? ? ? ? ? ? ? ? ? ? ? ? ?中? ? ? ? ? ? ? ?资源消耗大 clickhouse? ? ? ? 快? ? ? ? ? ? ? ? ?快? ? ? ? ? ? ? ? ? ? ? 高? ? ? ? ? ? ? ? ? ? ? ? ? ? ?低? ? ? ? ? ? ? 不适合多表查询 优点及使用场景 hive:数据仓库的构建,因为稳定,适合晚上跑全量离线业务 hbase:适合实时场景比较高,读写量比较大,查询结构不是很复杂的数据,存ods或根据key的简单业务,如我想立马获得某个id的数据,或者某个时间点的数据,可以把他想象成一个超级大的hashMap使用。 kudu:可作为mysql的升级替代品,查询消耗内存较高,不是很稳定 clickhouse:作为宽表的查询使用,适合实时sql分析,比如我要每几个小时,更新一次全量的分析数据,那可以先用clickhouse先sql做探测,sql写好了,用hive去写定时任务去跑。如果用clickhouse去跑,那可能当时clickhouse跑的时候,其他的服务没有资源,会被影响。也适合只要一次的数据,比如需要测试这个方案可不可行,先统计下某次的数据。 对比: Hbase、Kudu和ClickHouse横向对比V2.0_陈舟的舟的博客-CSDN博客_clickhouse kudu 2.hbase的瓶颈写入瓶颈 之前多线程开了2000个线程跑,发现他的一台hbase机器的瓶颈是300w左右,4台机器在跑,每台机器500个线程。每个线程处理1w*20w的数据。超过300w后的数据就会出现连接问题,然后重试。 读取瓶颈 目前没有发现读取速度的问题,单个读取和scan(rowstart-rowend)获取非常快。全表的扫描速度,计数测试,并不快。 多线程hbase插入(千亿级)_我要用代码向我喜欢的女孩表白的博客-CSDN博客_java多线程hbase 3.hbase内部构造首先先说最重要的,hbase的rowkey。 hbase是基于key查询的,那么他是怎么进行key查询的,首先他用了ascii编码,将key进行了排序,所以你看到的是这样的。 并且字段内容中文的,被16进制编码 key是唯一的,设计的原则,hbase会把连续性的数据存在一起,key的设计尽量分散,否则可能将某年的数据全部存到了一个节点中。如果查询某年的数据,如果使用scan,速度会更快,如果使用filter则会变慢。如果开头不是时间,那么只能用filter,但是能解决分散问题,但是get何时都不会慢。关于批量扫描,权衡业务设计rowkey key是64字节,不能过长。 value,存储值,value是一个列簇,为什么叫列簇,因为一个value能存多个列,比如上图的value就是info。info中的列名创建了一个name。 cs相当于列簇,一个列簇里面可以有很多内容,我们通常把一块独立的业务数据,存储在某个列簇中,这样想获得某块业务的数据就直接可以获取,但是获取多表关联类似的业务,不是hbase的使用范围,如果需要这样做,请结合其他数据库,建立映射关系,在进入hbase中查询。 以上就是hbase的主要内容 HBASE快的原因是,可以在查询的适合将数据定位到指定的regionServer中,在到指定的region中 更多内容请参考: Hbase史上最详细原理总结_二十同学的博客-CSDN博客_hbase原理 4.hbase搭建Hbase版本2.10(cdh6.3.2保持一致)
? ? 【上传】到服务端某个目录,并且【解压】 这里上传的目录是/software
配置环境变量
修改内容如下 ============ export HBASE_HOME=/software/hbase2 export PATH=$PATH:$HBASE_HOME/bin ============ 更新环境变量
这个时候,就可以用单节点的hbase了,输入hbase shell即可进入hbase客户端 修改配置文件env.sh
============ #指定java环境的位置 export JAVA_HOME=/usr/java/jdk1.8.0_181-cloudera #关闭自带的zk export HBASE_MANAGES_ZK=false ============??? 修改配置文件site.xml
? ?指定,hdfs的存储目录,外部zk位置 ???备份个数,集群节点 ============== <configuration> ????<!-- ?此目录regionserver共享的目录,用来持久存储HBase的数据,其默认值为:${hbase.tmp.dir}/hbase,如果不修改默认值,数据将会在集群重启时丢失。 --> ????<property> ????????<name>hbase.rootdir</name> ????????<!-- 设置Hadoop master--> ????????<value>hdfs://hadoop1:9000/hbase</value> ????</property> ????<!-- 设置hbase集群为分布式集群 --> ????<property> ????????<name>hbase.cluster.distributed</name> ????????<value>true</value> ????</property> ???? ????<!-- 设置zookeeper集群,用英文逗号分隔 --> ????<property> ????????<name>hbase.zookeeper.quorum</name> ????????<value>hadoop1:2181,hadoop1:2181,hadoop3:2181</value> ????</property> ????<!-- hbase备份的副本数,不能超过datanode的节点数。 ?????????hbase的数据备份数需要再hbase-site.xml配置文件中单独设置,否则hbase写入的数据regionServer只会保存一份! --> ????<property> ????????<name>dfs.replication</name> ????????<value>2</value> ????</property> ????<!-- Zookeeper元数据的存储目录,需要和Zookeeper的zoo.cfg 配置的一致 --> ????<property> ????????<name>hbase.zookeeper.property.dataDir</name> ????????<value>/software/zookeeper/zkData</value> ????</property> ????<!-- 指定HBase Master Web页面访问端口,默认端口号16010 --> ????<property> ????????<name>hbase.master.info.port</name> ????????<value>16010</value> ????</property> ????<!-- 指定HBase RegionServer Web页面访问端口,默认端口号16030 --> ????????<property> ????????????????<name>hbase.regionserver.info.port</name> ????????????????<value>16030</value> ????????</property> ????<!-- 解决启动HMaster无法初始化WAL的问题 --> ????<property> ????????<name>hbase.unsafe.stream.capability.enforce</name> ????????<value>false</value> ????</property> ????<property> ??????<name>hbase.wal.provider</name> ??????<value>filesystem</value> ????</property> </configuration> ===================== 配置从节点regionservers
============= localhost hadoop2 hadoop3 ============= 分发到其他机器,环境变量,hbase文件我写的分发脚本,你也可以scp
启动hbase每个节点都启动zk(集群),然后每个节点都启动hbase,那么当一个hmaster宕机后,则会自动替换
结果查看: 输入jps,查看hadoop1结果 hadoop2和hadoop3 5.hbase使用shell基本命令 Hbase基本(常用)命令-------长文(适合学习全局)_我要用代码向我喜欢的女孩表白的博客-CSDN博客 hbase shell Hbase模糊查询id不根据时间_我要用代码向我喜欢的女孩表白的博客-CSDN博客 java Hbase JavaApi 批量获取数据(scan)和插入代码(put) 代码_我要用代码向我喜欢的女孩表白的博客-CSDN博客_hbase 批量scan hbase java Api Scan Limit ----小短文(含分页实现思路)_我要用代码向我喜欢的女孩表白的博客-CSDN博客_hbase limit 多线程hbase插入(千亿级)_我要用代码向我喜欢的女孩表白的博客-CSDN博客_java多线程hbase python使用happybase python操作Hbase导入导出_我要用代码向我喜欢的女孩表白的博客-CSDN博客 Python连接Hbase并且查循数据(自用)_我要用代码向我喜欢的女孩表白的博客-CSDN博客_python连接hbase查询 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/23 10:56:04- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |