Hbase 中如何统计一张表的行数最快?
- 方案一:分布式计算程序,读取 Hbase 数据,统计 rowkey 的个数
#在第一台机器启动 start-yarn.sh #在第一台机器运行 hbase org.apache.hadoop.hbase.mapreduce.RowCount 'qx:t2'
- 方案二:count 命令,相对比较常用,速度中等
count '表名'
- 方案三:协处理器,最快的方式
(1)类似于 Hive 中的 UDF,自己开发一个协处理器,监听表,表中多一条数据,就加1
(2)直接读取这个值就可以得到行数。
大数据集群中常用的端口有哪些?
- hbase的服务端地址:任何一个Hbase 客户端要连接 Hbase,都要指定 ZK 的地址;16010
- hdfs:8020,RPC 协议;9870,HTTP协议
- yarn:8032,RPC 协议;8088,HTTP协议
- HistoryServer:10020,RPC 协议;19888,HTTP协议
- zookeeper:2181
- kafka:9092
- redis:6379
- Hive Server:10000 ,MetaStore :9083
Hbase 的读写流程是怎么样的?
1. 写的流程:
(1)首先,由客户端将数据写请求提交给 Hbase;
(2)Hbase 接收到客户端提交的读写请求之后,会根据表名来判断,该数据是在哪些分区进行读写,缩小一定的范围;【表是逻辑的概念,每张表在物理层实际上对应多个分区 Region】
(3)接着 Hbase 会根据 Rowkey 来定位到数据是写入哪一个分区。Put 操作会将写请求提交给对应的 RegionServer.
(4)每个分区内部会根据列族划分多个 Store。不同的列族存储在不同的Store上;相同的列族存储在同一个Store中。RegionServer 根据列族将数据写入分区中对应的Store中。
(5)每一个Store 内部有两部分组成,一个是MemStore,一个是StoreFile。StoreFile 逻辑上属于Store,但物理层实际对应的是 HDFS。数据会先写入 MemStore,当达到一定的阈值或者触发一定的条件,MemStore中的数据会被刷写到StoreFile中。MemStore的数据会被清空,继续接收 Hbase 的读写请求。
参考命令:
put 'ns:tbname','rowkey','cf:column','value'
2. 读的流程
(1)首先,由客户端将数据读请求提交给 Hbase;
(2)Hbase 接收到客户端提交的读请求之后,会根据表名来判断,该数据是从哪些分区进行读取,缩小一定的范围;【表是逻辑的概念,每张表在物理层实际上对应多个分区 Region】
(3)接着 Hbase 会根据 Rowkey 来判断数据是要从哪一个分区进行读取。读取对应的Store中对应的数据即可。
参考命令:
get 'qx:t2','0888888888888'
如何将某个表内存中的所有数据刷写到磁盘
可以用命令:flush 'qx:t2'
网友评论