hbase环境搭建(以下哪些场景比较适合hbase)
本文目录
以下哪些场景比较适合hbase
当我们对于数据结构字段不够确定或杂乱无章很难按一个概念去进行抽取的数据适合用使用什么数据库?答案是什么,如果我们使用的传统数据库,肯定留有多余的字段,10个不行,20个,但是这个严重影响了质量。并且如果面对大数据库,pt级别的数据,这种浪费更是严重的,那么我们该使用是什么数据库?hbase数个不错的选择,那么我们对于hbase还存在下列问题:
1.Column Family代表什么?
2.HBase通过row和column确定一份数据,这份数据的值可能有多个版本,为什么会存在多个版本?3.查询的时候会显示那个版本?4.它们的存储类型是什么?5.tableName是什么类型?6.RowKey 和 ColumnName是什么类型?7.Timestamp 是什么类型?
8.value 是什么类型?
带着以上几个问题去读下面内容:
引言
团队中使用HBase的项目多了起来,对于业务人员而言,通常并不需要从头搭建、维护一套HBase的集群环境,对于其架构细节也不一定要深刻理解(交由HBase集群维护团队负责),迫切需要的是快速理解基本技术来解决业务问题。最近在XX项目轮岗过程中,尝试着从业务人员视角去看HBase,将一些过程记录下来,期望对快速了解HBase、掌握相关技术来开展工作的业务人员有点帮助。我觉得作为一个初次接触HBase的业务开发测试人员,他需要迫切掌握的至少包含以下几点:深入理解HTable,掌握如何结合业务设计高性能的HTable掌握与HBase的交互,反正是离不开数据的增删改查,通过HBase Shell命令及Java Api都是需要的掌握如何用MapReduce分析HBase里的数据,HBase里的数据总要分析的,用MapReduce是其中一种方式掌握如何测试HBase MapReduce,总不能光写不管正确性吧,debug是需要的吧,看看如何在本机单测debug吧本系列将围绕以上几点展开,篇幅较长,如果是HBase初学者建议边读边练,对于HBase比较熟练的,可以选读下,比如关注下HBase的MapReduce及其测试方法。从一个示例说起传统的关系型数据库想必大家都不陌生,我们将以一个简单的例子来说明使用RDBMS和HBase各自的解决方式及优缺点。以博文为例,RDBMS的表设计如下: 为了方便理解,我们以一些数据示例下 上面的例子,我们用HBase可以按以下方式设计 同样为了方便理解,我们以一些数据示例下,同时用红色标出了一些关键概念,后面会解释 HTable一些基本概念Row key行主键, HBase不支持条件查询和Order by等查询,读取记录只能按Row key(及其range)或全表扫描,因此Row key需要根据业务来设计以利用其存储排序特性(Table按Row key字典序排序如1,10,100,11,2)提高性能。Column Family(列族)在表创建时声明,每个Column Family为一个存储单元。在上例中设计了一个HBase表blog,该表有两个列族:article和author。Column(列)HBase的每个列都属于一个列族,以列族名为前缀,如列article:title和article:content属于article列族,author:name和author:nickname属于author列族。Column不用创建表时定义即可以动态新增,同一Column Family的Columns会群聚在一个存储单元上,并依Column key排序,因此设计时应将具有相同I/O特性的Column设计在一个Column Family上以提高性能。同时这里需要注意的是:这个列是可以增加和删除的,这和我们的传统数据库很大的区别。所以他适合非结构化数据。TimestampHBase通过row和column确定一份数据,这份数据的值可能有多个版本,不同版本的值按照时间倒序排序,即最新的数据排在最前面,查询时默认返回最新版本。如上例中row key=1的author:nickname值有两个版本,分别为1317180070811对应的“一叶渡江”和1317180718830对应的“yedu”(对应到实际业务可以理解为在某时刻修改了nickname为yedu,但旧值仍然存在)。Timestamp默认为系统当前时间(精确到毫秒),也可以在写入数据时指定该值。Value每个值通过4个键唯一索引,tableName+RowKey+ColumnKey+Timestamp=》value,例如上例中{tableName=’blog’,RowKey=’1’,ColumnName=’author:nickname’,Timestamp=’ 1317180718830’}索引到的唯一值是“yedu”。存储类型TableName 是字符串RowKey 和 ColumnName 是二进制值(Java 类型 byte)Timestamp 是一个 64 位整数(Java 类型 long)value 是一个字节数组(Java类型 byte)。存储结构可以简单的将HTable的存储结构理解为 即HTable按Row key自动排序,每个Row包含任意数量个Columns,Columns之间按Column key自动排序,每个Column包含任意数量个Values。理解该存储结构将有助于查询结果的迭代。话说什么情况需要HBase半结构化或非结构化数据对于数据结构字段不够确定或杂乱无章很难按一个概念去进行抽取的数据适合用HBase。以上面的例子为例,当业务发展需要存储author的email,phone,address信息时RDBMS需要停机维护,而HBase支持动态增加.记录非常稀疏RDBMS的行有多少列是固定的,为null的列浪费了存储空间。而如上文提到的,HBase为null的Column不会被存储,这样既节省了空间又提高了读性能。多版本数据如上文提到的根据Row key和Column key定位到的Value可以有任意数量的版本值,因此对于需要存储变动历史记录的数据,用HBase就非常方便了。比如上例中的author的Address是会变动的,业务上一般只需要最新的值,但有时可能需要查询到历史值。超大数据量当数据量越来越大,RDBMS数据库撑不住了,就出现了读写分离策略,通过一个Master专门负责写操作,多个Slave负责读操作,服务器成本倍增。随着压力增加,Master撑不住了,这时就要分库了,把关联不大的数据分开部署,一些join查询不能用了,需要借助中间层。随着数据量的进一步增加,一个表的记录越来越大,查询就变得很慢,于是又得搞分表,比如按ID取模分成多个表以减少单个表的记录数。经历过这些事的人都知道过程是多么的折腾。采用HBase就简单了,只需要加机器即可,HBase会自动水平切分扩展,跟Hadoop的无缝集成保障了其数据可靠性(HDFS)和海量数据分析的高性能(MapReduce)。
Hadoop大数据平台搭建实训目的意义
大数据运维工程师需要处理公司大数据平台各类异常和故障,确保系统平台的稳定运行。下面是我为您精心整理的大数据运维工程师的基本职责。大数据运维工程师的基本职责1职责:1、技术保障各底层支撑系统的可靠性与稳定性;2、负责车辆网平台的运行监控的解决方案编制、实施与二次功能开发;3、负责技术文档手册编写,更新,经验总结沉淀,培训分享;4、负责对新技术和方案进行调研,评估和引进,用技术去提升运维生产效率任职资格:1、熟悉常见的应用服务部署和调优(Nginx、MySQL、Redis、MongoDB、ELK,Hadoop等),熟悉高可用集群、负载均衡集群的规划与搭建;2、熟练使用Linux、TCP/IP网络协议栈,了解常用的Troubleshooting手段和常见性能指标3、具有车联网平台运维的经验,精于容量规划、架构设计、性能优化;4、熟悉主流PaaS云产品的使用,具有运维平台开发经验者、参与过开源产品的开发者优先;5、优秀的沟通能力,出色的学习与钻研能力,良好的问题分析与解决能力;6、对行业技术敏感度高且细致,善于思考,乐于发现,对解决具有挑战性问题充满激情。大数据运维工程师的基本职责2职责:1、负责维护服务器的运行,包括巡检、故障排除、数据备份等业务,保证服务器高质量、高效率运行状态;2、负责服务器漏洞整改及补丁升级;3、负责hadoop运维相关工作;4、负责大数据平台的日常部署、升级、扩容、迁移;5、负责高并发,大存储和实时流的Hadoop/spark大数据平台规划,运维,监控和优化工作。任职资格:1、2年左右服务器运维经验;2、对linux基础运维命令熟悉,shell,python至少精通一种,如会scala语言可优先考虑;3、熟悉Linux的维护和管理,熟悉bat及Shell脚本开发,能看懂Python/Scala优先;4、做过大规模hadoop集群优先;5、大数据项目:包括不限于hadoop、hive、kafka、hbase、spark、Kudu、Impala等大数据生态的平台搭建,监控,运维,调优、生产环境hadoop集群trouble shooting 、hadoop版本升级管理及优化支持。大数据运维工程师的基本职责3职责:1、负责Hadoop平台搭建,运维,管理,故障处理。2、负责保障大数据平台的高效运转、提升系统稳定性和安全性。3、对平台的Hadoop,Hbase,Kafka,Hive等进行优化。4、建立Hadoop集群管理和维护规范,包括版本管理和变更记录等。岗位要求:1、有丰富的Hadoop生态系统的运维经验,了解Hadoop、Storm、Spark、Kafka这些组件的原理,具备部署、实施、维护hadoop 及相关组件的能力;2、至少精通 Perl/Python/Shell脚本语言中的一种;3、掌握Linux操作系统的配置,管理、优化以及各种常用命令,能够独立排查及解决操作系统层的各类问题;4、分析问题能力优秀,善于从各种系统、应用日志中寻找出问题的原因。5、有独立分析问题和解决问题的能力,能出差。大数据运维工程师的基本职责4职责:1.负责Hadoop、spark、hbase、oozie、hive等平台运营和优化工作,保障平台服务运行稳定、高效。2.负责大数据方案架构及方案落地;3.开发Hadoop大数据管理平台与监控建设;3.负责hadoop平台部署、维护;生产问题、告警、故障处理及服务器维护、日常值班;4.负责集群网络架构、机器管理等。任职资格:1. 全日制本科以上学历,三年以上后台系统运营工作经验;2. 熟悉hadoop原理,具有Hadoop平台应用及管理经验,熟悉hadoop、hive、spark、hbase、oozie、druid、kylin、flink等开源项目及部署、维护、调优;3. 熟悉linux操作系统及调优;熟悉sql编程,熟悉Shell/Python/Java/Perl语言的一种或多种,有开发经验优先, 熟悉nagios,cacti,ganglia,zabbix,zenoss优先;4. 对大数据和自动化运维开发有浓厚兴趣,有大规模hadoop运维经验者优先;有hadoop/hbase/spark/hive 开发经验者优先。大数据运维工程师的基本职责5职责:1. 负责大数据平台的稳定性和性能优化;2. 负责大数据项目的运维工作;3. 针对业务需求制定统一的运维解决方案;4. 完善自动监控报警系统,对业务层面关键指标进行监控与报警通知;任职要求:1、熟练掌握hadoop平台搭建、维护,有平台优化经验;2、熟悉HDFS、Hive、Spark、HBbase、Kafka、Flume等组件的原理,有阅读源码能力者优先;3、熟悉腾讯云产品,有腾讯云EMR使用经验者优先考虑;
HBase数据库是通过(oracle jdbc连接)啥被应用程序连接的通过(关系型是statement和sql增删)啥增删的
给你一个类的代码,你看看就知道怎么连接的了import java.io.IOException;import java.util.Map;import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.hbase.HBaseConfiguration;import org.apache.hadoop.hbase.HColumnDescriptor;import org.apache.hadoop.hbase.HTableDescriptor;import org.apache.hadoop.hbase.client.HBaseAdmin;import org.apache.hadoop.hbase.client.HTable;import org.apache.hadoop.hbase.client.Put;import org.apache.hadoop.hbase.client.Result;public class Htable { public static void main(String args) throws IOException {// Configuration hbaseConf = HBaseConfiguration.create(); Configuration HBASE_CONFIG = new Configuration(); //与hbase/conf/hbase-site.xml中hbase.master配置的值相同 HBASE_CONFIG.set("hbase.master", "9.186.89.27:60000"); //与hbase/conf/hbase-site.xml中hbase.zookeeper.quorum配置的值相同 HBASE_CONFIG.set("hbase.zookeeper.quorum", "9.186.89.27,9.186.89.29,9.186.89.31,9.186.89.33,9.186.89.34"); //与hbase/conf/hbase-site.xml中hbase.zookeeper.property.clientPort配置的值相同 HBASE_CONFIG.set("hbase.zookeeper.property.clientPort", "2181"); Configuration hbaseConf = HBaseConfiguration.create(HBASE_CONFIG); HBaseAdmin admin = new HBaseAdmin(hbaseConf); // set the name of table HTableDescriptor htableDescriptor = new HTableDescriptor("test11".getBytes()); // set the name of column clusters htableDescriptor.addFamily(new HColumnDescriptor("cf1")); if (admin.tableExists(htableDescriptor.getName())) { admin.disableTable(htableDescriptor.getName()); admin.deleteTable(htableDescriptor.getName()); } // create a table admin.createTable(htableDescriptor); // get instance of table. HTable table = new HTable(hbaseConf, "test11"); // for is number of rows for (int i = 0; i 《 3; i++) { // the ith row Put putRow = new Put(("row" + i).getBytes()); // set the name of column and value. putRow.add("cf1".getBytes(), (i+"col1").getBytes(), (i+"vaule1").getBytes()); putRow.add("cf1".getBytes(), (i+"col2").getBytes(), (i+"vaule2").getBytes()); putRow.add("cf1".getBytes(), (i+"col3").getBytes(), (i+"vaule3").getBytes()); table.put(putRow); } // get data of column clusters for (Result result : table.getScanner("cf1".getBytes())) { // get collection of result for (Map.Entry《byte》 entry : result.getFamilyMap("cf1".getBytes()).entrySet()) { String column = new String(entry.getKey()); String value = new String(entry.getValue()); System.out.println(column + "," + value); } } }}
更多文章:
王者荣耀蔡文姬(《王者荣耀》中的最强“奶妈”蔡文姬外表可爱,历史上的蔡文姬经历却很心酸,对此你怎么看)
2024年2月12日 18:40
五虎将后传神xs攻略(魔兽争霸五虎将后传神XS系列这图怎么玩 怎样刷装备 升级之类的 麻烦回答详细点 别敷衍我)
2024年7月23日 23:28
crm软件系统 运用(CRM客户关系管理系统使用技巧 ..)
2024年8月11日 13:27
qq下载2016最新版下载安装(QQ发消息时对方显示被多人举报怎么办)
2024年7月4日 00:43
客机模拟飞行大型游戏(有没有开飞机战斗的网络游戏,介绍一下)
2024年8月1日 10:35
ghost win7 旗舰版(ghost win7 旗舰版怎么安装)
2024年7月1日 23:28
赚钱游戏排行榜(2020年最赚钱的十大电子游戏,王者荣耀“屈居”第二!)
2024年6月26日 20:17
变形缝建筑构造图集中A,B,C,D系列有什么区别?04cj01三本变形缝图集有何区别,是第三本最常用吗
2023年11月14日 18:40
环球tv电视(请教2013环球TV 3D精灵版打不开,如何解决)
2024年8月31日 10:41
不收费的数据恢复软件(不收费的u盘数据恢复软件有哪些哪款比较好用)
2024年8月12日 01:30
its a door able(it’s a door able怎么移动)
2024年6月28日 03:33