您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 销售管理 > Hello-Hbase
HelloHbasejoyspancontent•HBase是什么•HBase的特点•HBase中的一些重要概念•HBase的安装•HBaseshell使用•HBasejavaAPI•HBase上进行MapReduce编程HBase是什么•Definition:HBaseistheHadoopdatabase.ThinkofitasadistributedscalableBigDatastore.•HBaseisatypeofNoSQLdatabase.•UseHBasewhenyouneedrandom,realtimeread/writeaccesstoyourBigData.•HBaseprovidesBigtable-likecapabilitiesontopofHadoopandHDFS.HBase是什么•ApacheHBase是一个建立的ApacheHDFS之上(Hadoopdistributedfilesystem)提供高可靠性、高性能、列存储、可伸缩、实时读写的分布式数据库系统。主要用来存储非结构化和半结构化的松散数据•HBase是ApacheHadoop中的一个子项目,现已成为Apache的顶级项目。•HBase是GoogleBigtable(基于GoogleFileSystem)的开源山寨版本。在Google发表论文(Bigtable:ADistributedStorageSystemforStructuredData)HadoopEcosystemHadoopEcosystem成员名用途HadoopCommonHadoop体系最底层的一个模块,为Hadoop各子项目提供各种工具,如:配置文件和日志操作等。AvroAvro是dougcutting主持的RPC项目,有点类似Google的protobuf和Facebook的thrift。avro用来做以后hadoop的RPC,使hadoop的RPC模块通信速度更快、数据结构更紧凑。ChukwaChukwa是基于Hadoop的大集群监控系统,由yahoo贡献。HBase基于HadoopDistributedFileSystem,是一个开源的,基于列存储模型的分布式数据库。HDFS分布式文件系统Hivehive类似CloudBase,也是基于hadoop分布式计算平台上的提供datawarehouse的sql功能的一套软件。使得存储在hadoop里面的海量数据的汇总,即席查询简单化。hive提供了一套QL的查询语言,以sql为基础,使用起来很方便。MapReduce实现了MapReduce编程框架PigPig是SQL-like语言,是在MapReduce上构建的一种高级查询语言,把一些运算编译进MapReduce模型的Map和Reduce中,并且用户可以定义自己的功能。Yahoo网格运算部门开发的又一个克隆Google的项目Sawzall。ZooKeeperZookeeper是Google的Chubby一个开源的实现。它是一个针对大型分布式系统的可靠协调系统,提供的功能包括:配置维护、名字服务、分布式同步、组服务等。ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。行存储与列存储对比•由于查询中的选择规则是通过列来定义的,因此整个数据库是自动索引化的;按列存储每个字段的数据聚集存储,在查询只需要少数几个字段的时候,能大大减少读取的数据量;一个字段的数据聚集存储,那就更容易为这种聚集存储设计更好的压缩/解压算法。Hbase中表的特点•大:一个表可以有数十亿行,上百万列;•每行都有一个可排序的主键和任意多的列,列可以根据需要动态的添加,同一张表中不同的行可以有截然不同的列;•面向列:面向列(族)的存储和权限控制,列(族)独立检索;•稀疏:对于为空(null)的列,并不占用存储空间,表可以设计的非常稀疏;•每个cell中的数据可以有多个版本,默认情况下版本号自动分配,是单元格插入时的时间戳;•HBase中的数据都是字符串,没有类型;HBase与RDBMS对比HBaseRDBMS数据类型只有字符串丰富的数据类型数据操作简单的增删改查各种各样的函数,表连接存储模式基于列存储基于表格结构和行存储数据保护更新后旧版本仍然会保留替换可伸缩性轻易的进行增加节点,兼容性高需要中间层,牺牲功能Hbase中的重要概念(一)•Rowkey键•ColumnFamily列族•Cellqualifier列族修饰符,列•Timestamp时间戳•Region区域键Rowkey•表中行的键是字节数组;•任何东西都可以作为键;–任何东西都可以表示为二进制,转化为长整型;–直接对数据结构进行序列化;•表中的行根据行的键值进行排序,数据按照Rowkey的字节序(byteorder)排序存储;•所有对表的访问都要通过键。列族ColumnFamily•HBase表中的每个列都归属于某个列族,列族必须作为表模式(schema)定义的一部分预先给出;•列名以列族作为前缀,每个“列族”都可以有多个列成员(column);•新的列族成员可以随后按需、动态加入;•权限控制、存储以及调优都是在列族层面进行的;–同一列族成员最好有相同的访问模式和大小特征;•HBase把同一列族里面的数据存储在同一目录下,由几个文件保存。单元格修饰符Cellqualifier•通过列族:单元格修饰符,可以具体到某个列;•可以把单元格修饰符认为是实际的列名;•在列族存在,客户端随时可以把列添加到列族;时间戳Timestamp•在HBase每个cell存储单元对同一份数据有多个版本,根据唯一的时间戳来区分每个版本之间的差异,不同版本的数据按照时间倒序排序,最新的数据版本排在最前面。•时间戳的类型是64位整型。•时间戳可以由hbase(在数据写入时自动)赋值,此时时间戳是精确到毫秒的当前系统时间。•时间戳也可以由客户显式赋值,如果应用程序要避免数据版本冲突,就必须自己生成具有唯一性的时间戳。区域Region•HBase自动把表水平划分成多个区域(region),每个region会保存一个表里面某段连续的数据;•每个表一开始只有一个region,随着数据不断插入表,region不断增大,当增大到一个阀值的时候,region就会等分会两个新的region;•当table中的行不断增多,就会有越来越多的region。这样一张完整的表被保存在多个Region上。Cell单元格•由行和列的坐标交叉决定;•单元格是有版本的;•单元格的内容是未解析的字节数组;锁•HBase的写操作是锁行的,每一行都是一个原子元素,无论对行进行访问的事务设计多少列,对行的更新都是原子的。都可以加锁。这使得加锁模型简单化。Hbase中的重要概念(二)•HBaseMaster/master/主控机•HRegionServer/regionserver/从属机•HBaseClient/client•ZooKeeper•HBase采用了一个Master节点协调管理一个或多个RegionServer从属机的模型。HBaseMaster/HMaster/Master/主控机•Master负责给RegionServer分配区域。Master还负责监控集群环境中的RegionServer的运行状况,对集群环境中的RegionServer进行负载均衡,调整Region分布。•Region分割后,负责新Region的分配;•Master负责管理用户对表的增删改查操作,处理表结构和表中数据的变更,因为在META系统表中存储了所有的相关表信息;•当前的HBase已经解决了SPFO单点故障,Master实现了ZooKeeper的Watcher接口可以和zookeeper集群交互。通过Zookeeper来保证系统中总有一个Master在运行。HBaseMaster恢复崩溃的HRegionServer•当一台ReginServer死机,Master将会把它负责的HRegion转交给其他ReginServer来提供服务;•Master会对由死掉的RegionServer提交的HLog进行分割、重做使其负责的HRegion得到恢复。HRegionServer/RegionServer/从属机•RegionServer通过与Master通信来获取自己需要服务的数据表的Hregion以及向Master反馈自己的运行状况。•RegionServer负责Region的管理、Region的划分以及处理用户的读和写请求。每个HRegion只会被一个RegionServer维护;•每一个列族都会有一个HStore,每个HStore都包含很多具体的HStoreFile文件,每一个HStore只能有一个memstore。HRegionServerHRegionServer响应client读写•当一个更新的请求到来的时候,它会被分配到对应的HRegionServer服务器上提交修改。•更新首先会写到一个叫做HLog的write-aheadlog中,然后再加入内存的menstore缓存中;•当一个读取的请求到来的时候,RegionServer会先在memstore中寻找该数据,如果找到了需要的版本就直接返回。当找不到的时候才会去在storefile中寻找。•当memstore大小达到一个阀值时,系统会定期调用HRegion.flushcache()把缓存里面的内容刷出到文件中以减少RegionServer的内存压力,这一般会增加一个新的HStoreFile文件,此时高速缓存被清空,并且会写一个标记到Hlog上,表示上面的内容已经被写入到文件中。•当HStorefile数量达到一个阀值时,系统会调用HStore.compact()进行压缩合并工作,把多个文件重新写入一个文件来提高执行效率,压缩时超过模式所设置的最大值的版本和被删除的单元格会被清掉。HRegionServerHBaseClient/client•所有的数据库数据一般都是保存在HDFS(Hadoop分布式文件系统)上的,用户通过一系列RegionServer来获取这些数据。•HBaseClient负责寻找提供需求数据的RegionServer。HBaseClient/client•新连接到Zookeeper集群上的客户端首先查找-ROOT-的位置,然后客户端通过-ROOT-获取请求行所在范围所属的.META.区域的位置;•然后Client查找.META.区域去定位实际提供数据的RegionServer。当定位到提供数据的RegionServer以后,Client就可以通过这个RegionServer找到需要的数据了。•Client会缓存它们遍历-ROOT-获取的信息和.META.位置以及用户空间区域的开始行和结束行信息,当下次请求的时候,就不需要走上面的这个流程了。-ROOT-与.META.表•.META.表包含所有的用户空间区域列表,以及RegionServer的服务器地址;•-ROOT-表包含.META.表所在的区域列表,这个表只会有一个HRegion;获取HBase•访问HBase的官方网站,点击页面左侧的download,选择一个镜像站点下载HBase的一个稳定版本。最新的稳定版本为HBase-0.90.4。HBase的单机模式安装、启动•下载完成后,对其进行解压缩。•$tarxvzfhbase-0.90.4.tar.gz•将解压后的hbase-0.90.4移动到当前用户目录joyspan下•$mvhbase-0.90.4~•为其创建软连接•$ln-shbase-0.90.4hbase•进入hbase目录•$cdhbase•启动hbase实例(服务)(启动前查看下页PPT)$bin/start-hbase.sh•命令行会输出以下内容•startingmaster,loggingto/home/joyspan/hbase-0.90.4/bin
本文标题:Hello-Hbase
链接地址:https://www.777doc.com/doc-1753194 .html