1. hbase查数据
HBase写入数据原理如下:
(1)Client向服务端发起Put请求。默认情况下,autoflush=true,所以每发送一个Put请求,就会直接发送到服务端。当autoflush=false时,则会将Put缓存到本地buffer中,达到一定阈值之后再一起发送到服务端,提高效率。
(2)当本地buffer size >2M(默认配置下,可以修改)时,开始批量提交Put。此时首先会查看HBase元数据,根据要插入的RowKey寻找对应的RegionServer。通过HConnection的locateRegion方法获得HRegionLocation,并按照RowKey对其进行分组
(3)为每一个HRegionLocation构造一个远程RPC请求,封装成MultiServerCallable<Row>
(4)通过rpcCallerFactory.<MultiResponse> newCaller()发送RPC请求到相应的服务端RegionServer
(5)此时RegionServer接收到请求后,会将Put对象反序列化
(6)对Put执行各种检查操作,例如判断region是否为只读、MemStore大小是否超过设定值等
(7)获取行锁、Region共享锁,开始写事务(实现MVCC)
(8)将数据封装成WALEdit对象,然后顺序写入到HLog中(其实此时只是写入到文件系统的缓存中,还没有真正落地到磁盘),然后释放行锁、共享锁
(9)写入数据到MemStore中
(10)当MemStore size 大于64M之后,会启动flush线程,将数据落地到硬盘中
2. hbase查数据指令
解决方法是。在程序-env.sh中修改pid文件的存放路径即可。
3. hbase的查询
get:
按照RowKey获取唯一一条记录。get的方法处理分两种:设置了ClosestRowBefore和没有设置ClosestRowBefore的RowLock。主要用来保证行的事务性,即每个get是以一个row来标记的。
scan:
按照指定的条件获取一批记录。
可以通过setCaching和setBatch方法提高速度;
可以通过setStartRow与setEndRow来限定范围;
可以通过setFilter方法添加过滤器,这也是分页、多条件查询的基础;
总之应该是scan快。
4. hbase 数据分析
学的主要内容有:
①JavaSE核心技术;
②Hadoop平台核心技术、Hive开发、HBase开发;
③Spark相关技术、Scala基本编程;
④掌握Python基本使用、核心库的使用、Python爬虫、简单数据分析;理解Python机器学习;
⑤大数据项目开发实战,大数据系统管理优化;
⑥云平台开发技术;
整体来说,大数据课程知识点多,课程难度较大。虽然是0基础入门,但企业对大数据人才招聘要求高,至少需要本科学历,建议本科及以上学历同学报名。
5. hbase的sql查询
1、银行证券业务调研、需求分析与设计、数据分析;
2、负责ETL开发,独立完成ETL详细设计与开发测试工作;
3、参与数据仓库系统上线及运维工作。
任职要求:
1、计算机相关专业,统招本科以上学历;
2、熟悉数据仓库建设流程、具备数据仓库、模型设计经验、ETL开发实施经验;
3、精通SQL、存储过程等开发,有SQL调优知识和经验,掌握Greenplum、Oracle、Sqlserver、Teradata、DB2、MySQL等一种或多种数据库系统的使用;
4、熟悉Linux操作系统、熟练使用linux常用命令;
5、具有Kettle、Informatica、DataStage、PowerCenter等ETL开发工具的实施经验;
6、熟练使用Perl、Shell、Java、Python脚本进行开发;
7、熟悉Hadoop、Hive,Hbase,Kafka,Spark,Storm等大数据技术优先;
8、有银行/保险/证券等金融业数据仓库经验优先。
6. HBASE 查询
首先,我们从概念上了解什么是hbase
HBase其实一个缩写,是Hadoop Database的简称,从问世之初,就为了解决用大量廉价的机器高速存取海量数据、实现数据分布式存储提供可靠的方案。
其次、我们从不同角度来人事hbase
1、从功能上来讲
HBase不折不扣是一个数据库,与我们熟悉的Oracle、MySQL、MSSQL等一样,对外提供数据的存储和读取服务。
2、从应用的角度来说
HBase与一般的数据库又有所区别,HBase本身的存取接口相当简单,不支持复杂的数据存取,更不支持SQL等结构化的查询语言;HBase也没有除了rowkey以外的索引,所有的数据分布和查询都依赖rowkey。所以,HBase在表的设计上会有很严格的要求。
3、从架构上讲
HBase是分布式数据库的典范,这点比较像MongoDB的sharding模式,能根据键值的大小,把数据分布到不同的存储节点上,MongoDB根据configserver来定位数据落在哪个分区上,HBase通过访问Zookeeper来获取-ROOT-表所在地址,通过-ROOT-表得到相应.META.表信息,从而获取数据存储的region位置。
最后,我们来分析一下hbase的特点
1、适合大量插入同时key-value查询,例如可以输入一个key查询一个value,还可以输入一组key查询一组value。
2、瓶颈是硬盘的传输速度,因为有大量的插入操作和读出操作,使用SSD SCSI IDE不同的硬盘效率是不同的。
3、适合数据分析。
4、列式数据库会把相同列的数据都放在一块即列为单位存储。当我们查询某一列的时候只需要调出相应的块即可,这样还可以减少很多I/O。
5、如果数据元素间的相似性很高的话可以进行大幅度的压缩,相似度越高压缩比越大,甚至可以压缩到原来十几分之一、上百分之一。即节约了空间又减少了I/O,从而提高性能。
6、hbase只有主键索引,它使用的是LSM(Log Structure Merge)索引,因为hbase所有的修改都是使用追加方式完成的,从数据流上看按照顺序方式写入与日志写入的方式相同,我们又可以认为数据和日志一体化,这又节约了很多空间。
7. hbase查数据量
hbase中的最小单位是region,hbase主要做查询用的,在pb级数据量下,查询也非常快,hbase的设计最要是空间换时间的一种思想,hbase的表按行键在横向上分多个region,而每个region对应一个region server,这么做的目的是减少单个服务器的查询压力,每个region server只负责查询表的某个范围,从而提高查询效率
8. Hbase数据库
HBase是一个分布式的、面向列的开源数据库,该技术来源于 Fay Chang 所撰写的Google论文“Bigtable:一个结构化数据的分布式存储系统”。
就像Bigtable利用了Google文件系统(File System)所提供的分布式数据存储一样,HBase在Hadoop之上提供了类似于Bigtable的能力。
HBase是Apache的Hadoop项目的子项目。HBase不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库。另一个不同的是HBase基于列的而不是基于行的模式。