hbase hdfs外部表_硬核干货长文!Hbase来了解一下不?

本文公众号来源:互联网侦察   作者:channingbreeze

最近我也在入门大数据相关的基础,这篇文章非常通俗易懂讲解了什么是Hbase,推荐阅读!

等我学所成,我也来写写大数据相关的入门知识。

ba5b4548ec540a95e297f762a3eb7ee6.png

今天,小史的姐姐和吕老师一起过来看小史,一进屋,就有一股难闻的气味。

0fd45dac5633863d94893c1713b3fbdb.png

5db76b720c0e1b9d1a731ef8fe380e4a.png

可不,小史姐姐走进卫生间,发现地下一个盆子里全是没洗的袜子。

2721cd9a7130e382964bc83bd0c79835.png

9ed0426bfcb6707031dbd0261485d80d.png

小史:当然不是,盆里的袜子满了,就先放到这个桶里,然后再继续装,等到桶里的袜子满了,然后才放到洗衣机里一次洗完,这样不仅效率高,而且节省水电费。

af9aa02f9920f48379a8b88e71d38e81.png

小史洋洋得意地介绍起自己洗袜子的流程。

37904f76e5c638a796a6d787bcfaf25c.png

小史一听就有点不高兴,全世界都黑程序员,没想到自己还没变成程序员就被自家姐姐黑了。

5786a951a22ae7e6c24178b1a9456781.png

说完就进自己房间,把姐姐和吕老师晾在外面。小史姐姐也意识到不该拿程序员开玩笑,但现在也不知道该怎么办,就看着吕老师。

90930152c13cc273e2924a906db7c3b5.png

吕老师走进小史的房间。

84498b0f8a742729618a698cd2adc3a1.png

a59581bf552f3dc192efa72fe2427e38.png

【hbase是啥】

ec73b102fbd9418a6a1edba10f766af3.png

c87418842ad820f53765fab419fec2f5.png

小史:别吹了,构建在hdfs上除了能存储海量数据之外,缺点一大堆,上次你给我介绍的hdfs缺点我可没忘啊,不支持小文件,不支持并发写,不支持文件随机修改,查询效率也低。

小史仔细回忆起hdfs来。

ba1cadea044bceb70e6ff65f8b47e1f9.png

吕老师:hdfs确实有很多缺点,但是hbase却是一个支持百万级别高并发写入,支持实时查询,适合存储稀疏数据的分布式数据库系统。

ac5d9ba87a2ad04a38d7f8736c9af959.png

61ebd267e75d31a6d87dae3ff2748a11.png

吕老师:hbase主要用于大数据领域,在这方面,确实比mysql要厉害得多啊,它和mysql的存储方式就完全不一样。mysql是行式存储,hbase是列式存储。

5d43926e88108b144757d6f279e4bdcf.png

【列式存储】

cfab4a58d0dfe0d04a9804ff945913f2.png

8ebdb6ff173c53500a548353f951cfa5.png

7316b3603a01c24c457902d73f382782.png

13ad1c2a9352910a0648fa02258a3612.png

015f3932c43946a85d8694d4b8e4ac48.png

c8b7c4614db70c69d4d67f0f3fea2204.png

578b307892fd16835b0ad62f288d626f.png

90b9e1a79b7a576fec6ea95ccbfcdc92.png

076f9499bf0cc993b1d1a8793b275ba0.png

吕老师:没错,这就是行式存储系统存储稀疏数据的问题,我们再来看看列式存储如何解决这个问题,它的存储结构是这样的

9d82c3612cc6273926d1980076140598.png

82fc0fb71ad0558fb7b47927a21d7838.png

小史:这个我看懂了,相当于把每一行的每一列拆开,然后通过rowkey关联起来,rowkey相同的这些数据其实就是原来的一行。

fbcb024643c342d5816658035d3fc752.png

fd01960d056681b6eedefb66195b1480.png

776c76e01908b30b0ecb597da31d794d.png

吕老师:你这里只说到了一个好处,由于把一行数据变成了这样的key-value的形式,所以hbase可以存储上百万列,又由于hbase基于hdfs来存储,所以hbase可以存储上亿行,是一个真正的海量数据库。

6521da268763ce5bdc17432a18a4b438.png

7fefa5446e2d3ebbca450368786cdaa8.png

吕老师:这就是hbase的威力呀,还不只如此,其实很多时候,我们做select查询的时候,只关注某几列,比如我现在只关心大家的工资,传统的按行存储,要选出所有人的工资是怎么办的呢?

dcb89ff5452e1084d19841dac422d903.png

4f029d17762874eb4cb607f91eddc9a6.png

60040191fc37ef9f65ea6d276016b5cd.png

af15c686fd0e197b39f47d1bf695d73e.png

7da3b614ef26aca9eaffa514f153cfb9.png

小史:哦,我大概明白了,原来是这样,所以hbase的查询效率也很高,但是我有个问题啊,如果我就要查我的所有信息,这是一行数据,hbase查询起来是不是反而更慢了呢?

b4ba8b8e98d4a917985136a31ddd1dd3.png

【列簇】

2aa8bf256da174a1ef41251c1587daff.png

吕老师:列簇,顾名思义,就是把一些列放在一起咯,在hbase中,会把列簇中的列存储在一起,比如我们把和工作相关的salary和job都放在work这个列簇下,那么大概是这样的

1502cb8ff51557c48a6d152a53087062.png

fd442d384212c93600041d5923dbff7d.png

c8ce469142937e79ec83c7262f6683ce.png

b053d7a887e4e1398196f8376854b0f1.png

147e68d367eb47d837327da989b8e4dd.png

小史:哦,我明白了,这样的话,一个列簇中的列会被一次就拿出来,如果我要查所有列的信息的话,把所有信息都放在一个列簇就好了。

34512f1439cfb3f8f99cfe2abe7830d4.png

(注意:hbase中,其实所有列都是在列簇中,定义表的时候就需要指定列簇。生产环境由于性能考虑和数据均衡考虑,一般只会用一个列簇,最多两个列簇)

【rowkey设计】

7103f69486255c9a8d933a63577ae16f.png

c48421aaf36ed7cd22a25651d87b05c2.png

(注:当然,有些中间件把sql翻译成hbase的查询规则,从而支持了sql查hbase,不在本文讨论范围内)

5eea4d3f7a167aef37f255f3a24e8525.png

小史:啊?这和我想象的不一样啊,如果我想查询工资比20w多的记录,在mysql中,只要用一条很简单的sql就行啊,这在hbase中怎么查呢?

6d58dd63cac43b72758b1fa95bf86b84.png

吕老师:在hbase中,你需要把要查询的字段巧妙地设置在rowkey中,一个rowkey你可以理解为一个字符串,而hbase就是根据rowkey来建立索引的

0614478ca81818a691e44676d44e9b78.png

718aca1fc1551a473cf676cb397d4a83.png

不熟悉B+树的同学可以看这篇文章。hbase的HFile底层也是一样的原理。

bc6c22a3e4d36e92d63293bf079c833e.png

0a73e4389d3434a0e44ee5b93a7221f3.png

吕老师:假设员工工资9999w封顶,查询的时候可能根据员工工资查询,也可能根据名字查询一个特定的员工,那么rowkey就可以这样设计

cf27d730e1c97fbb1e2b78fc05e2ed3f.png

(注意,以上rowkey是简化版设计,只是为了讲清楚范围查询。实际使用中由于rowkey需要考虑散列性,所以可能不会这么用。后文会具体探讨散列性。)

f85148a7196ef7d9b7d929eeecadc958.png

09b57ad9fbca03cc6e037e598f09cd4c.png

吕老师:hbase提供了三种查询方式。

第一种是全表扫描,scan

第二种是根据一个rowkey进行查询

第三种是根据rowkey过滤的范围查询

比如你要查工资不少于20w的记录,就可以用范围查询,查出从startRow=0020到stopRow=9999的所有记录,这是hbase直接支持的一种查询方式哦。

246612ba3fd655e8775825f67d34a4a2.png

吕老师:这里要注意几点,首先,rowkey是按照字符串字典序来组织成B+树的,所以数字的话需要补齐,不然的话会出现123w小于20w的情况,但是补齐的话,你就会发现020w小于123w

cce498e23458d2f593e0dd67056c7118.png

17f0b01804f689abed8d310f444fb471.png

小史:哦,明白了,这都很好理解,因为rowkey是字符串形式,所以肯定是按照字符串顺序排序咯。而且rowkey有点类似于mysql中的主键吧,所以保证其唯一性也是可以理解的。还有就是因为每个key-value都包含rowkey,所以rowkey越短,越能节省存储空间。

2038a01f84e53b30974c14bb365327e2.png

(注意,如果rowkey复杂且查询条件复杂,hbase还针对rowkey提供了自定义Filter,所以只要数据在rowkey中有体现,能解析,就能根据自己的条件进行查询)

30ef2294f02bc8fdf4f538ba9ab63fcb.png

小史:但是吕老师,我有一个问题啊,之前说过hdfs不适合存储小文件,而hbase中的一条记录只有一点点数据,记录条数却很多,属于海量小文件,存在hdfs中不是内存爆炸了吗?

d3cdec2b53b15b6ee1ac58b96af84034.png

【LSM三层存储模型】

767a3a419d73efdaac7556c09bede0d2.png

f2f5a10fe0094de2080e0d34117c0447.png

e9c20b2ded569f286f44f790ac66e1e5.png

b2a465fe9d8a754c1bbe6410e878a2a3.png

b25abdef92f8f3055d915dbe4624f13d.png

4828f6040d5020237d0f094b8a2d22ec.png

2acce2a6a952365a10606c5a4e640ca4.png

fede8969b41b831d8e37fb0d9f1d4fb8.png

小史:哦,这就像把盆里的袜子放到桶里一样。但是吕老师,如果数据量大的话,时间一长,就会有很多次刷写,不就形成了很多个小文件吗?这岂不又是海量小文件了?

5d5eeaba47b336fb3d16b42bda7325c0.png

9516b30c3945bd5a0d64a545174dc78a.png

c8d0876aac37bdadc52eed50b84a6f27.png

eb01626c1b9061a7c091b08f4c4ffa20.png

17afaf4418303d753bfed2973c4216e8.png

effe414adbbcffeff9203ac093861cad.png

6fd5ae69434cf7ba46aaebda3646a22b.png

5427de3e59918722acfbcdeb7fa02b0d.png

b2e6d269b0624f402a6f3bfaec23fefa.png

abccb806916c549a69e2d8f465322a4e.png

不记得hdfs原理的同学可以温习一下,【生活现场】从生日请客到hdfs工作原理解析

267dde2f9c5b6cde37ebc055b1849c59.png

吕老师:对了,hbase也是使用同样的思想,其实这就是WAL预写日志的思想,hbase也会将数据的操作先写日志,然后存到内存,哪天机器挂了,内存丢了,还能从WAL日志中将数据恢复。

939a2bb2cf87a9be63154e795f776e00.png

5b636b05dc21c733a855b5dc064f0d91.png

【数据修改】

4620daa0acbfa2202587b60db2c8e55f.png

小史:不过吕老师,我还有问题啊,我记得hdfs是不能随机修改文件的,只能追加,那么hbase里的数据是不是写了之后就不能改也不能删除呢?

a355a9510b2aed7cbf591e0ab9e15a5a.png

f3201c0301d5afd88c338dcd2a0d52b8.png

6a5095a5fb2d5d54023ae3643091fff0.png

6ca194e7b821456572ca142654069263.png

bb31aafeeca435d2d2807110bdd996bd.png

6ea726072d057ba91254cea713a36312.png

吕老师:删除同样是追加一条版本最新的记录,只不过标记这个数据被删除而已,查询的时候,看到版本最新的记录是数据删除,就知道这个数据被删了。

a80f8ad478146e0d3da6288515a44a81.png

c36c29a65659c75a45f1c905677fdaba.png

d3db9c10bcfa625e1f9a6ec501adb361.png

5a4a6fa0d44d1f2d9dca13cfee2488af.png

吕老师:哈,小史,你思考得非常深入,还记得LSM的第三层吗,hbase会在合并的时候,将这些用不到的记录删除掉,节省存储空间。

528b49ab0e2983a5cd9f9da0f5de088c.png

578a5c220c65a7736f24a07c14378986.png

f52a44265f0a201c983cd292fcbd8785.png

吕老师:不全对,其实hbase把合并分为两种,一种是小合并minor compact,这种方式只会将少数文件进行简单合并,不会进行数据的清理,还有一种是大合并major compact,这种方式会将大部分文件进行合并,并且清理数据。

2af648465e2e9d9a9d04f7f6919c23c3.png

850cd2e268115e10df1fce0a2a501081.png

15aa88a01b055d53ebe94cbbbaf966c7.png

b80fd7b0833baa43da9f25b32fb57cd3.png

吕老师:基本正确,但是你要知道,如果数据量大,这个过程是非常耗性能的,一般在生产环境都禁止大合并,否则在正常服务的时候突然来个大合并,整个集群可能资源被耗光,没法正常服务。

30174ec0880dcf589436b1e41725d8c4.png

c28b9c4e767993e723ddcefe86a935db.png

13f9f6d01349e1f74d77946f05c0cc4f.png

【hbase架构】

ed4847fc334e46c706fdd28a178b216c.png

4cae1fb02444bf8a4a62b45ed7148586.png

b944d11571eaa96b4bcb47e147168cc1.png

小史:hbase的架构似乎也是master-slave架构,和hdfs有点像,HMaster是用来管理集群,HRegionServer是真正存储数据的地方吧?

0069daf07b80413bf73e13959ae89714.png

305a890cf8e25d6d9ba5c859b6f1d9cf.png

88a98905ffffb397132ad0009e086d58.png

吕老师:啊,这块不太对,hbase在数据查询和写入的时候,其实并不是像hdfs那样询问HMaster。在hbase中,每一张表都会有元信息,这些信息也是被存储为hbase表,称为元信息表,也叫meta表,这是一种系统表。

502df225fea4c131d73e5ea58ea6ff48.png

221f10573402a5a6cb46df38352d1d55.png

a9bbc7cb995fdbf5581675648a126325.png

小史:但是这又有个问题,既然meta表也是存储在hbase上,那么hbase又如何知道meta表存在哪个HRegionServer上呢?这岂不是一个鸡生蛋蛋生鸡的问题?

99fe312b7f88d22d77a9bb3914dbc09c.png

吕老师:小史啊,我说meta表是hbase表,是指meta表也是用rowkey和value的键值存储,但是我并没有说meta表在hbase上啊。其实meta表不是存储在HRegionServer上,而是存储在那个分布式协调服务zookeeper上面。

904c1cef1801deaf382e05f10a9b5539.png

小史:哦,原来如此,所以meta表其实是在一个固定地方读取,然后根据meta表就知道数据在哪个HRegionServer上。但是zookeeper又是啥呢?

a00e57c8e6ac73380f9be931a4d11335.png

240406d9a0b2757dbdf20bcfd6cabfcc.png

876de298773e0b052099dbfe66d46ba1.png

吕老师:其实HMaster的任务相对不繁重,但是却比较重要,它主要是通过调整和管理Region分布来实现HRegionServer的负载均衡。

d47d66d8783e1ccfede3594e51ac4386.png

【HRegionServer架构】

fff9b930e5e3ff8a0a2b363882c7fbee.png

吕老师:其实Region是hbase在rowkey上的切分,每个Region都可以通过startKey和endKey来确定rowkey的范围,一个HRegionServer上可能会有多个Region。

b0299a878157d3694a2c093a4046b2ff.png

15cf3d5c2941a4953eaa07000a01dc0d.png

小史:所以说数据是根据rowkey和一定的哈希规则,分散到不同的Region上面,而Region又是属于某一个HRegionServer上的,这个关系没错吧?

6dd7bd390ba0631374df4a418b243598.png

吕老师:没错,通过这里其实可以得出rowkey设计的另一个原则,就是散列性,rowkey的头几个字母,最好不要是一样的,不然会分布在同一个HRegionServer上面,导致这个HRegionServer的负载非常高,累死累活,其他HRegionServer却没事干。一般可以根据一定规则算一个数据的摘要,比如md5,把md5的头几位拼在rowkey的前面。

15169e9a9980d280c3c70cb49439bd19.png

2b5fcaab90aed80a673b1c13222e9734.png

ee5481e759f88b1e784071ea02a2f831.png

39551290cace478652ed660deabfaa20.png

7b4193b5960c8aefb46747e950f7aec3.png

吕老师:哈哈,名词没讲过,原理可都是讲过的哟。比如这个Store,我们之前说过,一个列簇中的列是存储在一起的,对应到这里,一个列簇中的数据就是存到一个Store中。

8cc2c06fe16f9ed4d72fdb618df7355c.png

195cfe1c5612118477126b7023741d7b.png

6862c6762853971844308656ca158626.png

fb3d2aedddd12e72b56f204c57954011.png

吕老师:没错,这里StoreFile只是一个名字,它是以HFile的格式存储在hdfs上,HFile是一个存储格式,在新版本的HFile存储格式中,它就是一个类似B+树的索引索引形式。

0c015489a10d1ce62271fed2255c5ddc.png

fc1f0fd4e086fca33f6f3c3d3be3dd01.png

617e21f28309e94d236ea346fa5f9757.png

0753bad2cbf279cbf6b26fe0b9e207d8.png

【读取和写入流程】

aae90c3088c9c18666b43e88bd8824be.png

41068816625e0577a738c411055b82f6.png

cfc5b777077d2c180ed1891745dc5171.png

1、hbase client要写输入了,先从zookeeper中拿到meta表信息,根据数据的rowkey找到应该往哪个RegionServer写

2、然后hbase会将数据写入对应RegionServer的内存MemStore中,同时记录操作日志WAL

3、当MemStore超过一定阈值,就会将内存MemStore中的数据刷写到硬盘上,形成StoreFile

4、在触发了一定条件的时候,小的StoreFile会进行合并,变成大的StoreFile,有利于hdfs存储

2f0417dae6d1901f3493b904311f8469.png

9c9aa7c56a60ce9987bf8ca42b12afe4.png

61af4736d9837ad75995607d195a25b6.png

吕老师:其实当大量rowkey相近的数据都被分配到一个Region中,导致这个Region数据过大的时候,Region进行拆分,HMaster会对拆分后的Region重新分配RegionServer,这是HMaster的负载均衡策略。

737a75d1aa62dd3c17d89432872ed640.png

dc758469743d8bca482765c12e14096d.png

1dae34955dcaaa9fe29bc6623e663cb5.png

1、hbase client要读数据了,先从zookeeper中拿到meta表信息,根据要查的rowkey找到对应的数据在哪些RegionServer上

2、分别在这些RegionServer上根据列簇进行StoreFile和MemStore的查找,得到很多key-value结构的数据

3、根据数据的版本找到最新数据进行返回

605420e0dc04136e68109bf972410635.png

【OLTP和OLAP】

308ec2e31706dd2dff9337f2161fcfd7.png

6b3d11a10a8d9ae5860ba663413b1c87.png

ab4172e763f590f3849d4e630e08697c.png

1c4f7e55094b62999f6c1fdd07036675.png

5156cf649dcbdd42b13989c9abd85f39.png

1d9d69f090fff96277739898027f36aa.png

吕老师:OLTP应用叫联机事务处理应用,就是类似银行转账等业务的,这类应用对事务要求比较高,而OLAP应用叫联机分析处理应用,比如推荐系统,是在收集了大量用户行为后进行分析,再得出结论的应用,主要侧重分析,对事务要求非常低。

d968fd20729b3f99699f35c5056a6a5b.png

ba2c8db92fe6c62d764f7d642bc788fc.png

【笔记】

12941bb724151a145cde3a673ecde67b.png

fb746021fdd23c3e58d4438c8c51d5c8.png

小史把这次学习到的hbase的知识记了下来

1、hbase是列式存储,和mysql的行式存储不一样

2、hbase中有列簇概念,同一个列簇下的列存储在一起,在Region的一个StoreFile中

3、hbase是按照rowkey进行查找,要查询的字段要想办法放到rowkey中

4、hbase内部使用LSM三层模型进行存储,数据先写到内存MemStore中,内存达到一定阈值再刷写到硬盘StoreFile中,再满足一定条件时,小的StoreFile会合并为大的StoreFile

5、hbase适合OLAP类的应用

学完hbase,记完笔记,小史开开心心地洗袜子去了。

推荐阅读:

  • 程序员的快乐就是这么朴素无华且枯燥

  • 互联网/电商/广告常见的术语

  • 拿到一台新的Windows电脑,我会做什么?

  • 在公司做的项目和自己在学校做的有什么区别

f0ac6725b9889afc24679d248f317baf.png200多篇原创技术文章海量视频资源精美脑图面试题

长按扫码可关注获取 

欢迎关注f769988d4d857313c9081ff1f54f8e3e.png点个再看592657091b8a969a5bcea1069d7a041d.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/573840.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

springboot自动配置的原理_SpringBoot实战:详解SpringBoot自动配置原理

SpringBoot 自动配置主要通过 EnableAutoConfiguration, Conditional, EnableConfigurationProperties 或者 ConfigurationProperties 等几个注解来进行自动配置完成的。EnableAutoConfiguration 开启自动配置,主要作用就是调用 Spring-Core 包里的 loadFactoryName…

PYTHON之路(八)

http://www.cnblogs.com/alex3714/articles/5227251.htmlSocket语法及相关socket概念A network socket is an endpoint of a connection across a computer network. Today, most communication between computers is based on the Internet Protocol; therefore most network …

kafka消息消费有延迟_RabbitMQ与Kafka的技术差异以及使用注意点

导言作为一个有丰富经验的微服务系统架构师,经常有人问我,“应该选择RabbitMQ还是Kafka?”。基于某些原因, 许多开发者会把这两种技术当做等价的来看待。的确,在一些案例场景下选择RabbitMQ还是Kafka没什么差别&#x…

android 通知_Android 全局消息通知框架实现(类似EventBus)

Github项目地址 https://github.com/532268948/MessageDemo一、介绍随着页面的增多,页面之间的信息交流也会越来越多,比如一个社交类app,你在个人中心修改了自己的个人信息,在动态展示页面你就要通知该页面有关于自己的动态需要更新自己展示在…

2019运管取消了滴滴还查吗_劳务资质2019年取消吗?劳务资质新标准你真的了解吗?...

施工劳务资质2019新标准!劳务资质已经取消?不可能!虽然这样对于很多企业来说应该比较省事,劳务资质也是越来越受欢迎的,但是企业在办理资质之前一定要将资质标准了解清楚了,新版施工劳务资质仅仅是将专业进…

FFmpeg获取DirectShow设备数据(摄像头,录屏)

这两天研究了FFmpeg获取DirectShow设备数据的方法,在此简单记录一下以作备忘。本文所述的方法主要是对应Windows平台的。 1. 列设备 ffmpeg -list_devices true -f dshow -i dummy命令执行后输出的结果如下(注:中文的设备会出现乱码的情…

矩阵的对数运算公式_必修一——对数与对数运算

一、前言(废话)高中数学我们已经学习了二次函数,指数函数(如果不记得的读者可以往前面翻看一下),这次作者为读者们讲解的是对数与对数运算,对数是什么呢?读者们心里有自己的认知吗?二、对数对数函数是高中阶段学习的一…

分拣外观残缺的机器人_复合机器人AGV+协作机器人的应用领域

什么是复合机器人?复合型机器人是一种集成AGV移动机器人和通用工业机器人两项功能为一身的机器人。在工业领域,通用工业机器人被称为机械臂或者机械手,主要是替代人胳膊的抓取功能;而AGV移动机器人是替代人腿脚的行走功能。复合型机器人则是手脚并用&am…

前端之旅,做一点有回报的事情

本文是参加前端早读课【同说】做的分享 首先感谢情封对前端圈的辛苦付出,能坚持做好一件事真的很不容易,敬佩这份精神。2天前看到早读课的【同说】活动计划,我觉得想法真的很好,忽然情封微信邀请我参与,听到后我是心虚…

差异表达基因变化倍数_10.limma教程|差异表达统计相关理论

点击上方“蓝字”关注我们10.1 Top-Tables 简介limma包提供topTable和decideTests函数概括线性模型结果,进行假设检验,调整p值进行多重检验。结果包括(log2)倍数变化,标准误差,t统计和p值。用于显著性分析的基本统计量是修正t统计…

activemq中怎么知道推送消息是否成功_如何优雅的使用activeMQ 安装、应用、安全认证、持久化...

ActiveMQ安装1. 下载资源ActiveMQ官网:版本说明ActiveMQ5.10.x以上版本必须使用JDK1.8才能正常使用。ActiveMQ5.9.x及以下版本使用JDK1.7即可正常使用。上传至Linux服务器解压安装文件tar -zxf apache-activemq-5.9.0-bin.tar.gz检查权限ls -al apache-activemq-5.9…

DB2表结构DDL脚本导出

db2look是导出DDL语句脚本的命令&#xff0c;以下是对db2look的一个简单介绍。 语法&#xff1a;db2look -d <数据库名> -e -t <表名> -o <文件名>.dml -d&#xff1a;数据库名&#xff0c;这必须指定。 -e:抽取复制数据所需要的DDL文件&#xff0c;此项将生…

套装门安装_室内套装门-油漆工艺

上一期我们分享了套装门的分类和区别&#xff0c;主要从门芯和门皮的结构&#xff0c;主要分为纯实木门、实木复合门、模压门三种。也分享了三种类型的门的区别和基本定义&#xff0c;其中最为关键的是实木复合门&#xff0c;四层结构&#xff0c;其中门芯的填充料可操作空间很…

activiti 工作流_分享:springboot中关于工作流activiti的搭建

概念工作流产品使用activiti的算是比较多了&#xff0c;自带了一套UI界面&#xff0c;可以直接使用&#xff0c;用来设计流程&#xff0c;下面简单总结一下它的步骤&#xff1a;1 设计模型2 发布为流程&#xff0c;一个模型可以发布多个版本的流程3 建立一个流程的实例和实例任…

ae saber插件_AE激光插件Video Copilot Saber安装方法

AE激光Video Copilot Saber插件可以制作出能量光束&#xff0c;激光&#xff0c;传送门&#xff0c;闪电&#xff0c;电流&#xff0c;朦胧等特效&#xff0c;内含有40多种不同类型的特效预设&#xff0c; 下面说下AE激光插件saber安装方法。插件特色&#xff1a; 1.可以创建高…

继电器rc吸收电路取值_继电器的工作原理以及驱动电路解析

继电器是具有隔离功能的自动开关元件&#xff0c;广泛应用于遥控、遥测、通讯、自动控制、机电一体化及电力电了设备中&#xff0c;是最重要的控制元件之一。继电器实际上是用较小的电流去控制较大电流的一种“自动开关”。故在电路中起着自动调节、安全保护、转换电路等作用。…

口腔取模过程及注意事项_康贝齿科首家引进LAUNCA数字化口腔扫描,走进口腔数字化诊疗时代!...

口腔领域中的数字化技术包括数字化印模、数字化诊断与治疗、数字化生产、数字化手术导航、影像学以及相关材料的应用等。20世纪70年代Duret医生将工业数字化生产技术应用于口腔临床工作的大胆设想&#xff0c;使口腔数字化印模技术应运而生&#xff0c;走进现代医学的前沿。该设…

dataframe修改列名_python dataframe操作大全数据预处理过程(dataframe、md5)

hive表的特征选择&#xff0c;不同表之间的join训练数据、测试数据的分开保存使用pandas进行数据处理显示所有列&#xff1a;pd.set_option(display.max_columns, None)显示所有行&#xff1a;pd.set_option(display.max_rows, None)单列运算&#xff1a;df[col2] df[col1].ma…

android 获取控件高度_安卓开发入门教程UI控件_ProgressBar

什么是ProgressBarProgressBar是用于提示用户进行等待的UI控件,.基础样例1.loading图效果图代码布局文件代码<ProgressBarandroid:id"id/progressBar"style"?android:attr/progressBarStyle"android:layout_width"wrap_content"android:layo…

什么叫大地高_什么才叫睡得好?睡觉能满足这5个标准,说明睡眠质量高

每个人的睡觉习惯以及睡眠质量都是不一样的&#xff0c;有的人一晚甜睡到天亮&#xff0c;有的人则整晚辗转反侧难以入眠&#xff0c;有的人甚至会整晚都睡不着。睡眠质量的高低会影响一个人的精神状态以及工作的状态&#xff0c;而想要知道你的睡眠质量高不高&#xff0c;其实…