新人求助, regionserver访问datanode有大量CLOSE_WAIT

有问必答libis 回复了问题 • 2 人关注 • 2 个回复 • 698 次浏览 • 2017-06-28 21:07 • 来自相关话题

HBaseCon West 2017 PPT解读(上)

文章分享qgxiaozhan 发表了文章 • 0 个评论 • 1557 次浏览 • 2017-06-28 14:56 • 来自相关话题

链接: HBaseConWest2017 密码: 2fgh
 
HBaseCon West 2017的PPT解读如下:

1. HBase at Xiaomi 
由小米的杨哲和张洸濠合作分享,两位是2016年新晋升的HBase Committer (ps: 小米目前总共产生了5位HBase Committer加上1位HBase PMC,解决了180+个issue).  分享的一些亮点主要有:
a. 0.94升级到0.98集群的一些经验。
b. 小米内部HBase使用g1gc的一些经验。
c. 2016年小米对社区做的一些开发和改进,包括但不限于顺序推送复制日志/优化Scan操作/开发异步客户端功能以及相关测试结果,等等。
 
2. Apache HBase at DiDi (by Kang Yuan)
主要分享了HBase在滴滴的一些实践经验,目前滴滴的HBase是基于0.98.21版本,然后将rsgroup这个功能迁移到了自己的分支,用来做业务隔离。另外,PPT中也提到通过将地理位置坐标进行GeoHash转换成一维byte存放到HBase中,可以解决查询一个点周边坐标的问题。
 
3. Accordion: HBase Breathes with In-Memory Compaction (From Yahoo)
有了InMemory-Compaction功能之后,HBase支持将Memstore直接Flush成一个ImmutableSegment,这个ImmutableSegment其实是一块内存空间,多次Memstore的Flush操作会导致产生多个ImmutableSegment,特定条件下,多个ImmtableSegment会进行In-Memory的Compaction,也就是多个ImmutableSegment完全在内存中合并成为一个大的ImmutableSegment(其中BASIC类型的InMemoryCompaction会保留所有数据,EAGER类型的InMemoryCompaction会清理冗余版本数据)。最终,这个大的ImmutableSegment还是要Flush到磁盘的,然后接着触发做磁盘上的Compaction操作。
 
按照设计文档以及PPT的说明,InMemory-Compaction有以下好处:
a.  由于InMemoryCompaction会在内存中进行compaction, 不用频繁的Flush Memstore到Disk(Flush次数太多会造成storefile个数增长, storefile的增长会导致读性能严重下降), 从而可以降低读操作延迟。
b.  ImmtableSegment今后可能会和HFile的layout保持一致,这样Flush的速度将大幅提升。
c.   对于行数据频繁更新的场景,InMemory-Compaction可以采用EAGER方式在内存中就清理掉冗余版本数据,节省了这部分数据落盘的代价。
最后,PPT测试数据也确实说明使用InMemoryCompaction后,写吞吐有较大幅度提升,读延迟有较大幅度下降。

ps. In-memory Compaction由stack等6位成员共同完成(将在HBase2.0的release版本发布),这其中有两位美女工程师(PPT中的照片证明颜值确实很高),现在都已经是HBase的Committer了。
另外,In-memory compaction详细设计文档请参考:https://issues.apache.org/jira/browse/HBASE-13408
 
4. Efficient and portable data processing with Apache Beam and HBase (By Google)
这个演讲更多是来HBaseCon宣传下Apache Beam这个项目。
Apache Beam这个项目始于2016年2月份,近1年多的时间内就收到了来自全球178个贡献者的8600+提交,主要是希望提供一个统一的API用来同时处理Batch任务和Streaming任务,他的API后端可以接Apex/Flink/Spark/GoogleCloudDataFlow等服务,同时提供Java和Python的客户端SDK。这个东西就好比JDBC一样,提供了一个统一的借口,后端可以连接MySQL/Oracle/Postgresql/SQLServer等关系型数据库。我没理解错的话,这个东西应该是可以用来在HBase/MongoDB/HDFS/Cassandra/Kafka/BigTable/Spanner/Elasticsearch/GridFS/Hive/AMQP等(超过20种通用的存储服务)各种服务间实现数据transform。
 
5. Data Product at Airbnb
来自Airbnb的这份演讲,主要介绍了Airbnb内部HBase的应用场景,以及如何实现统一执行batch任务和streaming任务。
 
6. Democratizing HBase(by Hortonworks)
作者Josh Elser是来自Hortonworks的工程师,也是HBase Committer,他参与了多个Apache的顶级项目,例如HBase/Phoenix等等。演讲主要介绍了目前HBase在多租户资源隔离方面的一些工作,主要包括安全认证,RPC Quotas,Rpc优先级,Space Quotas,RegionServer Group等内容。
 
7. Apache Spark – Apache HBase Connector Feature Rich and Efficient Access to HBase through Spark SQL (by Hortonworks)
介绍Hortonworks开源的SHC项目相关内容。
 
8. Gohbase: Pure Go HBase Client(by Arista Networks)
一般非Java语言(Python/Golang/Javascript)会采用Thrift协议生成各自语言的SDK, SDK先访问HBase的Thrift server,然后thrift server后端通过Java Native Client连RS/Master,通过ThriftServer中转来实现通信,但通过thrift协议生成的非Java版本的客户端接口比较原始,不是特别好用,另外早期的ThriftServer bug也比较多。

因此,演讲者基于HBase的Protobuf协议,实现了一套纯Golang写的hbase client,其实相当于说把Java Native Client的逻辑全部用Golang写了一遍。使用体验应该要比其他Golang语言写的SDK好用。性能上,Gohbase某些场景下甚至优于Java的客户端。
 
最后,作者在开发Gohbase的过程中,发现了HBASE-18066这个bug, 这个bug目前已经由小米openinx修复。这个bug的问题在于:设置closestRowBefore为true的Get操作,在RegionServer端的代码实现中,是先通过不带mvcc的方式拿到rowKey, 然后再通过带mvcc的方式去找这个rowKey对应的Value, 并返回。由于前者不带mvcc, 后者带mvcc,所以导致拿到的数据可能不一致。修复方式就是把这类操作都由reversed scan来实现,由于scan操作统一设了mvcc,也就解决了这个BUG。
 
9. Analyzing Cryptocurrencies on HBase For Finance, Forensics, and Fraud (by Ripple)
Ripple是一种有点类似Bitcoin的加密数字货币,背后应该是有Ripple这个商业公司在支撑,这份演讲主要介绍了Ripple现状以及HBase在公司内部的应用场景,重点应该还是Ripple的相关业务介绍。
 
10. Splice Machine: Powering Hybrid Applications (by Splice Machine)
Splice Machine是一家做数据库(DAAS)云服务的厂商,PPT主要是演示了一遍他们的Hadoop相关云产品使用过程,对HBase云产品形态感兴趣的同学可以看一下。本次分享主要还是推广他们的产品。
 
 
余下PPT解读,请参考HBaseCon West 2017 PPT解读(下) 查看全部
链接: HBaseConWest2017 密码: 2fgh
 
HBaseCon West 2017的PPT解读如下:

1. HBase at Xiaomi 
由小米的杨哲和张洸濠合作分享,两位是2016年新晋升的HBase Committer (ps: 小米目前总共产生了5位HBase Committer加上1位HBase PMC,解决了180+个issue).  分享的一些亮点主要有:
a. 0.94升级到0.98集群的一些经验。
b. 小米内部HBase使用g1gc的一些经验。
c. 2016年小米对社区做的一些开发和改进,包括但不限于顺序推送复制日志/优化Scan操作/开发异步客户端功能以及相关测试结果,等等。
 
2. Apache HBase at DiDi (by Kang Yuan)
主要分享了HBase在滴滴的一些实践经验,目前滴滴的HBase是基于0.98.21版本,然后将rsgroup这个功能迁移到了自己的分支,用来做业务隔离。另外,PPT中也提到通过将地理位置坐标进行GeoHash转换成一维byte存放到HBase中,可以解决查询一个点周边坐标的问题。
 
3. Accordion: HBase Breathes with In-Memory Compaction (From Yahoo)
有了InMemory-Compaction功能之后,HBase支持将Memstore直接Flush成一个ImmutableSegment,这个ImmutableSegment其实是一块内存空间,多次Memstore的Flush操作会导致产生多个ImmutableSegment,特定条件下,多个ImmtableSegment会进行In-Memory的Compaction,也就是多个ImmutableSegment完全在内存中合并成为一个大的ImmutableSegment(其中BASIC类型的InMemoryCompaction会保留所有数据,EAGER类型的InMemoryCompaction会清理冗余版本数据)。最终,这个大的ImmutableSegment还是要Flush到磁盘的,然后接着触发做磁盘上的Compaction操作。
 
按照设计文档以及PPT的说明,InMemory-Compaction有以下好处:
a.  由于InMemoryCompaction会在内存中进行compaction, 不用频繁的Flush Memstore到Disk(Flush次数太多会造成storefile个数增长, storefile的增长会导致读性能严重下降), 从而可以降低读操作延迟。
b.  ImmtableSegment今后可能会和HFile的layout保持一致,这样Flush的速度将大幅提升。
c.   对于行数据频繁更新的场景,InMemory-Compaction可以采用EAGER方式在内存中就清理掉冗余版本数据,节省了这部分数据落盘的代价。
最后,PPT测试数据也确实说明使用InMemoryCompaction后,写吞吐有较大幅度提升,读延迟有较大幅度下降。

ps. In-memory Compaction由stack等6位成员共同完成(将在HBase2.0的release版本发布),这其中有两位美女工程师(PPT中的照片证明颜值确实很高),现在都已经是HBase的Committer了。
另外,In-memory compaction详细设计文档请参考:https://issues.apache.org/jira/browse/HBASE-13408
 
4. Efficient and portable data processing with Apache Beam and HBase (By Google)
这个演讲更多是来HBaseCon宣传下Apache Beam这个项目。
Apache Beam这个项目始于2016年2月份,近1年多的时间内就收到了来自全球178个贡献者的8600+提交,主要是希望提供一个统一的API用来同时处理Batch任务和Streaming任务,他的API后端可以接Apex/Flink/Spark/GoogleCloudDataFlow等服务,同时提供Java和Python的客户端SDK。这个东西就好比JDBC一样,提供了一个统一的借口,后端可以连接MySQL/Oracle/Postgresql/SQLServer等关系型数据库。我没理解错的话,这个东西应该是可以用来在HBase/MongoDB/HDFS/Cassandra/Kafka/BigTable/Spanner/Elasticsearch/GridFS/Hive/AMQP等(超过20种通用的存储服务)各种服务间实现数据transform。
 
5. Data Product at Airbnb
来自Airbnb的这份演讲,主要介绍了Airbnb内部HBase的应用场景,以及如何实现统一执行batch任务和streaming任务。
 
6. Democratizing HBase(by Hortonworks)
作者Josh Elser是来自Hortonworks的工程师,也是HBase Committer,他参与了多个Apache的顶级项目,例如HBase/Phoenix等等。演讲主要介绍了目前HBase在多租户资源隔离方面的一些工作,主要包括安全认证,RPC Quotas,Rpc优先级,Space Quotas,RegionServer Group等内容。
 
7. Apache Spark – Apache HBase Connector Feature Rich and Efficient Access to HBase through Spark SQL (by Hortonworks)
介绍Hortonworks开源的SHC项目相关内容。
 
8. Gohbase: Pure Go HBase Client(by Arista Networks)
一般非Java语言(Python/Golang/Javascript)会采用Thrift协议生成各自语言的SDK, SDK先访问HBase的Thrift server,然后thrift server后端通过Java Native Client连RS/Master,通过ThriftServer中转来实现通信,但通过thrift协议生成的非Java版本的客户端接口比较原始,不是特别好用,另外早期的ThriftServer bug也比较多。

因此,演讲者基于HBase的Protobuf协议,实现了一套纯Golang写的hbase client,其实相当于说把Java Native Client的逻辑全部用Golang写了一遍。使用体验应该要比其他Golang语言写的SDK好用。性能上,Gohbase某些场景下甚至优于Java的客户端。
 
最后,作者在开发Gohbase的过程中,发现了HBASE-18066这个bug, 这个bug目前已经由小米openinx修复。这个bug的问题在于:设置closestRowBefore为true的Get操作,在RegionServer端的代码实现中,是先通过不带mvcc的方式拿到rowKey, 然后再通过带mvcc的方式去找这个rowKey对应的Value, 并返回。由于前者不带mvcc, 后者带mvcc,所以导致拿到的数据可能不一致。修复方式就是把这类操作都由reversed scan来实现,由于scan操作统一设了mvcc,也就解决了这个BUG。
 
9. Analyzing Cryptocurrencies on HBase For Finance, Forensics, and Fraud (by Ripple)
Ripple是一种有点类似Bitcoin的加密数字货币,背后应该是有Ripple这个商业公司在支撑,这份演讲主要介绍了Ripple现状以及HBase在公司内部的应用场景,重点应该还是Ripple的相关业务介绍。
 
10. Splice Machine: Powering Hybrid Applications (by Splice Machine)
Splice Machine是一家做数据库(DAAS)云服务的厂商,PPT主要是演示了一遍他们的Hadoop相关云产品使用过程,对HBase云产品形态感兴趣的同学可以看一下。本次分享主要还是推广他们的产品。
 
 
余下PPT解读,请参考HBaseCon West 2017 PPT解读(下)

新人搭建大数据环境(apache)

文章分享yingjie2222 回复了问题 • 2 人关注 • 1 个回复 • 326 次浏览 • 2017-06-27 14:02 • 来自相关话题

HBase写入性能优化

有问必答qgxiaozhan 回复了问题 • 2 人关注 • 1 个回复 • 978 次浏览 • 2017-06-27 12:35 • 来自相关话题

大家当前线上都用什么版本啊?我司最近开始调研hbase了,想咨询下大家

有问必答hmaster 回复了问题 • 5 人关注 • 4 个回复 • 390 次浏览 • 2017-06-27 12:11 • 来自相关话题

bulkload hfile方式进行导入结果hfile越来越多,没有进行compact

有问必答hmaster 回复了问题 • 3 人关注 • 2 个回复 • 411 次浏览 • 2017-06-27 12:10 • 来自相关话题

新人搭建大数据环境(cdh)

回复

文章分享hbase 发起了问题 • 1 人关注 • 0 个回复 • 309 次浏览 • 2017-06-27 11:43 • 来自相关话题

Minor Compaction和Major Compaction主要有哪些区别?

回复

有问必答feiyang 发起了问题 • 1 人关注 • 0 个回复 • 402 次浏览 • 2017-06-26 17:17 • 来自相关话题

DateTieredCompaction是怎么样的一种compaction策略?

回复

有问必答feiyang 发起了问题 • 2 人关注 • 0 个回复 • 268 次浏览 • 2017-06-26 17:12 • 来自相关话题