1.MapReduce用途
2.HBASE 1.0
3.Apache Phoenix(ä¸)çç
4.第1章 Phoenix简介
5.数据存储扫盲:hbase,索索引cassandra,clickhouse,pg,neo4j...
6.大数据平台的软件有哪些?
MapReduce用途
在Google中,MapReduce技术的引源应用领域极其广泛,涉及到众多实用场景,索索引如“分布式grep搜索,引源大规模排序,索索引Web链接图的引源declicker 源码反转,机器上的索索引词向量计算,Web访问日志的引源深入分析,反向索引的索索引构建,文档聚类,引源以及复杂的索索引机器学习任务,甚至包括基于统计的引源机器翻译等。”值得一提的索索引是,MapReduce技术的引源引入极大地提升了效率,它曾被用于重建Google的索索引整个索引,取代了旧有的即兴解决方案以保持索引的实时更新。 MapReduce在执行过程中会生成大量的临时文件,为了优化性能,Google文件系统被巧妙地应用,负责管理和访问这些文件,确保数据处理的高效进行。 此外,Nutch项目曾开发了一个实验性的shop分销源码下载MapReduce实现,这个项目后来发展成为了大名鼎鼎的Hadoop。这表明,MapReduce技术在开源社区中得到了广泛应用和扩展。 另一值得一提的是,Phoenix是斯坦福大学研发的MapReduce实现,它特别针对多核/多处理器环境和共享内存架构进行了优化,为高性能计算提供了强大的支持。扩展资料
MapReduce是一种编程模型,用于大规模数据集(大于1TB)的并行运算。概念"Map(映射)"和"Reduce(化简)",和他们的主要思想,都是从函数式编程语言里借来的,还有从矢量编程语言里借来的特性。他极大地方便了编程人员在不会分布式并行编程的情况下,将自己的程序运行在分布式系统上。 当前的软件实现是指定一个Map(映射)函数,用来把一组键值对映射成一组新的键值对,指定并发的Reduce(化简)函数,用来保证所有映射的键值对中的每一个共享相同的键组HBASE 1.0
å身ï¼BigTable
ç½é¡µæç´¢ï¼
googleåå¸å¼åå¨ç³»ç»BigTableä¾èµGFS
Hbaseï¼bigtableçå¼æºå®ç°ï¼: é«å¯é ãé«æ§è½ãé¢ååãå¯ä¼¸ç¼©
åå¨ç»æåååç»æåçæ°æ®
ä¼ç¹ï¼
æ°´å¹³å¯æ©å±æ§ç¹å«å¥½ï¼
ä¾èµï¼
æ件åå¨ç³»ç»ï¼HDFS
æµ·éæ°æ®å¤çï¼MapReduce
åå管çæå¡ï¼Zookeeper
满足äºï¼å¤§æ°æ®éçå®æ¶è®¡ç®
æ°æ®ç±»åï¼
RDBMSï¼å ³ç³»æ°æ®æ¨¡åãå¤ç§æ°æ®ç±»å
Hbaseï¼
æ°æ®æä½ï¼
åå¨æ¨¡å¼ï¼
ç´¢å¼ï¼
æ°æ®ç»´æ¤ï¼
å¯ä¼¸ç¼©æ§ï¼
纵åæ©å±ï¼
æ°´å¹³æ©å±ï¼
Hbaseç访é®æ¥å£ï¼
JAVA API
shell
thrift Gateway
restful Gateway
SQLæ¥å£ï¼pigç¼åç±»sql hiveç¨hivesql访é®Hbase
Hbaseçæ°æ®ç±»åï¼
åéå®ç¬¦
æ¯ä¸ªå¼é½æ¯æªè§£éçbytes
ä¸ä¸ªè¡å¯ä»¥æä¸ä¸ªè¡é®åå¤å
表ç±åæç»æ
Hbaseæ°æ®æ¨¡åï¼
åææ¯æå¨ææ©å±ãä¿çæ§çæ¬ï¼HDFSåªè½è¿½å æ°æ®ï¼
åºç¡å ç´ ï¼
è¡é® ï¼ rowkey
åæ
åéå®ç¬¦
åå æ ¼ ï¼æ¶é´æ³æ¦å¿µã对åºæ°æ®çæ¬ï¼
åæ æ¦å¿µï¼
åç»´å®ä½ï¼è¡é®ãåæãåéå®ç¬¦ãæ¶é´æ³
ç¨ç表
HBASEï¼é¢ååçåå¨ï¼é«æ°æ®å缩çãåæ便æ·
RDBMS ï¼é¢åè¡åå¨ï¼äºå¡æ§æä½ï¼è®°å½å®æ´ï¼ãä¸ä¾¿äºåæï¼éè¦å ¨è¡¨æ«æï¼
4.3 HBASE çå®ç°åç
4.3.1 åºå½æ° ãmasteræå¡å¨ãregionæå¡å¨
Masteræå¡å¨ï¼
ååºä¿¡æ¯è¿è¡ç»´æ¤å管ç
ç»´æ¤regionæå¡å¨å表
确认å½åå·¥ä½çregionæå¡å¨
è´è´£å¯¹regionè¿è¡åé åè´è½½å¹³è¡¡
对表çå¢å æ¹æ¥
regionæå¡å¨ï¼
客æ·ç«¯ä¸ä¾èµäºMasterè·åä½ç½®ä¿¡æ¯
ç¨æ·æ°æ®çåå¨å管ç
Regionæå¡å¨---个region -----Storeæ¯ä¸ä¸ªåæ----æ¯ä¸ªåæå°±æ¯ä¸ä¸ªHfile----ææregionå ¬ç¨1个Hlog
åæ°æ®æµç¨ï¼Regionæå¡å¨---åç¼åMemstore---åæ¥å¿ï¼Hlogï¼
读æ°æ®æµç¨ï¼Regionæå¡å¨-读ç¼åMemstoreï¼ææ°æ°æ®ï¼----StoreFile
ç¼åå·æ°ï¼å¨ææ§å°ç¼åå 容å·åå°Storefile æ¸ ç©ºç¼å---Hlogåå ¥æ è®°
æ¯æ¬¡å·åä¼çææ°çStoreFile æ¯ä¸ªStoreå å«å¤ä¸ªStoreFile
æ¯ä¸ªRegionæå¡å¨é½æä¸ä¸ªèªå·±çHlogï¼å°å¯å¨æ£æ¥ç¡®è®¤ç¼åå·æ°æ¯å¦ææ°çå 容éè¦å·åï¼åç°åå·åæ°çstorefile,å®æåå é¤Hlogï¼å¼å§å¯¹å¤æä¾æå¡
Storefileçå并,storefile çæ°éè¾¾å°éå¼åï¼ä¼è¿è¡å并ãå½Storefileè¶ è¿å¤§å°éå¼åä¼è§¦åRegionçåè£
4.4 Hlogçå·¥ä½åç
Zookeeperè´è´£çå¬regionæå¡å¨ï¼ç±masterå¤çæ éï¼éè¿æ éæå¡å¨çHlogæ¢å¤ï¼æregionååHlogï¼å°regionå对åºçHlogåé å°æ°çregionæå¡å¨ä¸
ä¸ä¸ªHBASE表ä¼è¢«ååæå¤ä¸ªRegionï¼1G-2G åå³äºæå¡å¨æ§è½ï¼
åä¸ä¸ªregionä¸ä¼è¢«æåå°ä¸åæå¡å¨ä¸
Regionç寻æ¾ï¼
Meta表ï¼regionID æå¡å¨ID åå¨å æ°æ®
Root表ï¼åªæä¸ä¸ªregion
ä¸çº§å¯»åï¼
zookeeperæ件---root表-å¤ä¸ªmeta表--å¤ä¸ªç¨æ·æ°æ®è¡¨
客æ·ç«¯ä¼æHbaseä¸å±å¯»åçç¼åï¼è°ç¨è®¿é®Hbaseçæ¥å£ï¼ç¼å失æåï¼å次寻å
zookeeperå³å®masteræå¡å¨ï¼ç¡®ä¿åªæä¸ä¸ªmaster
4.5 Hbaseçåºç¨æ¹æ¡
æ§è½ä¼åï¼
1ï¼æ¶é´é è¿åæ¾----å°æ¶é´æ³å¼å ¥è¡é®ï¼ä½¿ç¨Long.max-æ¶é´æ³è¿è¡æåº
2ï¼æå读åæ§è½,å建表æ¶è®¾ç½®HcloumnDescriptor.setMemory=trueï¼ä¼å°è¡¨æ¾å ¥å åçç¼åä¸
3ï¼èçåå¨Â·ç©ºé´----设置æ大çæ¬æ°ãä¿åææ°ççæ°æ®ï¼å°æ大çæ¬åæ°è®¾ç½®ä¸º1
4ï¼timetoliveåæ°ï¼ä¼å°è¿ææ°æ®èªå¨æ¸ 空
æ£æµHbaseæ§è½ï¼
Maste-statusï¼webæµè§å¨æ¥è¯¢ï¼
ganglia
OpenTSDB
Armbari
sql æ¥è¯¢HBASE
1ï¼hiveæ´åhbase
2ï¼Phoenix
Hbase äºçº§ç´¢å¼ (è¾ å©ç´¢å¼ï¼
é»è®¤åªæ¯æ对rowkeyè¿è¡ç´¢å¼
Hbaseè¡è®¿é®ï¼
1ï¼åè¡é®è®¿é®
2ï¼ç¡®å®èµ·ç¹åç»ç¹è®¿é®åºé´æ°æ®
3ï¼å ¨è¡¨æ«æ
äºçº§ç´¢å¼æ ·ä¾ï¼
Hindex Hbase+redis Solr+ Hbase
äºçº§ç´¢å¼çæºå¶ï¼
Hbase Coprocessor
endpoint ---åå¨è¿ç¨
observer----触åå¨
éè¿Observerçæµæ°æ®æå ¥å¨ä½ï¼åæ¥åå ¥ç´¢å¼è¡¨ï¼å®æ对表ååçç´¢å¼
Hbase 主表 ç´¢å¼è¡¨
4.6 HBASEçshellå½ä»¤
ä¸ç§é¨ç½²æ¨¡å¼ï¼åæº ä¼ªåå¸å¼ åå¸å¼
HDFS
å建表
create tableï¼ F1ï¼ F2ï¼ F3
list table
æ¯æ¬¡åªè½ä¸º1è¡ç1åæ·»å æ°æ®
put table R1ï¼R1:C1 ï¼â1,2,3â
scan table R1ï¼{ column='R1:C1'}
get table
å é¤è¡¨ï¼
disable table +drop table
4.7 JAVA API +HBASE
Apache Phoenix(ä¸)çç
å建test.java æ件å å«å¦ä¸å 容ï¼å¨å½ä»¤è¡ä¸ç¼è¯åæ§è¡
Phoenix Thick驱å¨çJDBCçURLæ ¼å¼å¦ä¸ï¼[]å çå ç´ å¯éæ©çï¼
æç®åçä¾åï¼
æå¤æçä¾åï¼
请注æï¼URLä¸çæ¯ä¸ªå¯éå ç´ é½éè¦åé¢ææå¯éå ç´ ãä¾å¦ï¼å»æå®Hbaseçzkèç¹ï¼é£ä¹zkç端å£å¿ é¡»æ¯æå®çã
è¿äºä¿¡æ¯æåå å«å¨ 该页 ã
Phoenix Thin驱å¨ï¼ä¸Phoenixæ¥è¯¢æå¡ä¸èµ·ä½¿ç¨ï¼JDBCæ ¼å¼å¦ä¸ï¼
è¿éæ´é²äºæ°ä¸ªkeyä¾å®¢æ·ç«¯ä½¿ç¨ãæç»å¸¸ä½¿ç¨çkey为url åserialization ãurl keyç´æ¥å½±åå°éè¦æ¥è¯¢çPhoenixæ¥è¯¢æå¡å¨çå°åã
æç®åçURLä¾åï¼
é常å¤æçURLä¾åï¼
è¿éè®°å½çæææå ³äºThin 客æ·ç«¯JDBC URLæ¶åå°çæ¯æ项ï¼å¯ä»¥åè Apache Avatica documentation å Query Server Documentation ã
æ¥ç ç¸å ³ä¾å ã
CSVæ°æ®å¯ä»¥æ¹éå¯¼å ¥éè¿psqlçéç¨åè½ãä¸è¬æå ¥çé度å¨K-Kè¡æ°æ®æ¯ç§ãï¼åå³äºä¸è¡æ°æ®æå¤å¤§ï¼ã
å建表ä¾åï¼
æå ¥æ°æ®ä¾åï¼
ä½ å¯ä»¥å建Phoenix 表ï¼tableï¼åè§å¾ï¼viewï¼éè¿ CREATE TABLE/CREATE VIEWå¨å·²åå¨çHBase表ä¸æ§è¡DLLè¯å¥ã两ç§æ åµä¸é½ä¸ä¼æ¹åHbaseçå æ°æ®ã对äºCREATE TABLE,æ们ä¼å建任ä½ä¸åå¨çå æ°æ®(table,column families)ãæ们ä¼å¢å 空é®å¨æ¯ä¸è¡ï¼æ以æ¥è¯¢çè¡ä¸ºç¬¦åé¢æï¼ä¸éè¦ææçåé½è¿è¡æ«æï¼ã
éè¦æ³¨æçæ¯åèçåºååå¿ é¡»å¹é Phoenixçåèåºååãæ¯å¦varcharãcharåunsigned_ ç±»åï¼æ们使ç¨Hbaseåèæ¹æ³ãcharç±»åé¢æåªæååèå符åæ 符å·ç±»åé¢æå¼å¤§äºæè çäº0ã 对äºæ符å·çç±»åï¼tinyint,smallint,integer åbigintï¼ï¼phoenixä¼ç¿»è½¬ç¬¬ä¸ä¸ªåèï¼è¿æ ·è´å¼ä¼å¨æ£å¼ä¹åæåºãå 为Hbaseæåºrow keyæç §ASCIIæ£åºæåï¼è´å¼ç第ä¸ä½æ¯1 èæ£å¼ç第ä¸ä½æ¯0ï¼é£ä¹è´å¼å¤§äºæ£å¼ï¼å æ们ä¸è¿è¡ç¬¬ä¸ä½ç¿»è½¬æ¶ãæä»¥ä½ åå¨æ´æ°æ¶éè¿Hbaseæ¬å°APIæ¥å£åæ³éè¿Phoenix访é®æ´æ°ï¼ç¡®è®¤ä½ çæ°æ®ç±»åæ¯å¦æ¯æ 符å·ç±»åã
æ们å¤årow keyå¯ä»¥å°ç®åçå¼è¿è¡æ¼æ¥å¨ä¸èµ·ï¼å¨å¯åé¿ç±»åä¸ä½¿ç¨0åèä½ä¸ºåé符ã
å¦æä½ å建Hbase表å¦ä¸ï¼
å¦æä½ å·²ç»æäºä¸å¼ 带æå称为't1'ååç°ä¸º'f1'çHbase表ãé£ä¹è¯·è®°ä½ï¼å¨Hbaseä¸ä½ ä¸ç¨å¯¹å¯è½çé®å¼årow keyç»æè¿è¡å»ºæ¨¡ãè¿æ¯ä½ å¨phoenixæå®ç表ååç°ä¹å¤çä¿¡æ¯ãæ以å¨phoenixï¼ä½ ä¸éè¦åè¿æ ·å建view:
è¿ä¸ªâpkâåå®ä¹ï¼ä½ çrow keyæ¯varcharç±»åï¼ç±»ä¼¼å符串ï¼ï¼è'f1'.valåå®ä¹ä½ çHbase表å å«é®å¼å½¢å¼ååæåååéå®ç¬¦ä¸º'f1'.valè¿æä»ä»¬çç±»å为varcharã
注æï¼ä½ ä¸éè¦ä½¿ç¨åå¼å·ï¼å½ä½ åå»ºä½ çhbase表å å«ææç大åå称ï¼Phoenixä¼æ ååå符串ï¼å°å符串转大åï¼ãæ¯å¦ï¼
ä½ å¯ä»¥è¿æ ·å建phoenixè§å¾ï¼
æè å¦æä½ å建äºæ°çhbase表ï¼ä¸éè¦åå©hbase shellï¼ç´æ¥å¨phoenixæä½ã
注æï¼çæ³æ åµä¸4æ ¸CPUç个region serverï¼å¯ä»¥éæ©salt bucketså¨-æä½³æ§è½ã
å§äºPhoenix 2.1çæ¬ï¼Phoenixå¼å§æ¯æç´¢å¼å¨å¯ååä¸å¯åçæ°æ®ä¸ã注æï¼Phoenixå¨2.0.xä¸ä» æ¯æä¸å¯åæ°æ®çç´¢å¼ãç´¢å¼åæ§è½å¨ä¸å¯åç´¢å¼è¡¨ä¸ï¼ç¨å¾®å¿«ä¸äºäºå¯åæ°æ®è¡¨ï¼ä¸å¯åæ°æ®è¡¨å³æ¯æ°æ®ä¸æ¯ææ´æ°ã
ä¾åï¼
æ´æ°è¡ä¿¡æ¯å¨test表ä¸ï¼Phoenixæ¥è¯¢ä¼åå¨ä¼éæ©æ£ç¡®çç´¢å¼å»ä½¿ç¨ãä½ å¯ä»¥æ¥ç explain plan å¦æPhoenix使ç¨è¿ä¸ªç´¢å¼è¡¨ãä½ è¿å¯ä»¥å¨Phoenixæ¥è¯¢ä¸ç»åºä½¿ç¨ç¹å®ç´¢å¼ç æ示 ã
é¤éæ¥è¯¢ä¸ä½¿ç¨å°çææåé½å¨äºçº§ç´¢å¼ä¸ï¼å¦ä½ä¸ä¼ä½¿ç¨äºçº§ç´¢å¼ï¼ä½ä¸ºç´æ¥ç´¢å¼ï¼æè è¦çç´¢å¼ï¼ãæææ°æ®è¡¨ä¸ç主é®å ¨é¨åé½ä¼èªå¨å å«å¨ç´¢å¼ä¸ã
å¨lastnameä¸æ¯ç´¢å¼æè è¦çææä¸é¨åæ¶ï¼ç´¢å¼æ¯æ²¡æ被使ç¨å°ãè¿ç¹å¯ä»¥å¨"explain plan"ä¸è¢«è¯å®ãå¨å建索å¼æ¶åºå®lastnameå段åå¨ç´¢å¼ä¸ä¸é¨åï¼æè æ¶è¦çç´¢å¼çè¦çå段ã
ä¾åï¼
Phoenixé度é常快ï¼å ¨è¡¨æ«æMçæ°æ®ï¼é常æ åµä¸å¨ç§å å®æï¼ä¸çè§æ¨¡çé群ä¸çå°è¡¨ï¼ãå¦ææ¥è¯¢å å«å°å ³é®åçè¿æ»¤å¨ï¼åéä½å°æ¯«ç§çº§ãä½ å¯ä»¥æ·»å ç´¢å¼å¨å¯¼è´æ§è½çåäºè¿æ»¤é®çåä¸ï¼ä½¿ç¨ç´¢å¼åä½ä¸ºé®çä¸é¨åå¤å¶è¡¨ã
为ä»ä¹Phoenixå³ä½¿åäºå ¨æ«æï¼é度ä¾ç¶å¿«ï¼
æ£é Anil Guptaçä¼ç§ æç« ã
Hadoop2çé ç½®åå¨Phoenixçpom.xmlä¸å³å¯ã
å¨é»è®¤æ åµä¸ï¼Phoenix让Hbase管çæ¶é´æ³ï¼å¹¶åªè®©ä½ æ¥çæåççæ¬æ°æ®ãä½æ¯ï¼Phoenixä¹ç»ç¨æ·æä¾æ¯æä»»æçæ¶é´æ³ãè¦åå°è¿ä¸ç¹ï¼ä½¿ç¨è¿æ¥å±æ§"CurrentSCN"ï¼åè¿æ ·ï¼
ä¸é¢çæä½çåäºHbase APIä¸çï¼
éè¿æå®CurrentSCN,ä½ å¯ä»¥åè¯Phoenixãææä¸è¥¿å¨è¿æ¬¡è¿æ¥ä¸æ该æ¶é´æ³è¢«å®æã注æçæ¯ï¼è¿ä¹éç¨äºå¯¹è¿æ¥æ§è¡çæ¥è¯¢ã举个ä¾åï¼ä¸ä¸ªæ¥è¯¢å¨myTable表çæ°æ®æ¯ä¸ä¼çå°åæå ¥çæ°æ®ï¼å 为å®åªçå°å建è¿æ¥æ¶æå®CurrentSCNå±æ§ä¹åçæ°æ®ãè¿æ ·æä¾äºä¸ç§ç±»ä¼¼äºå¿«ç §çåè½ï¼æè æ¯æ¶é´ç¹æ¥è¯¢ã
请记ä½ï¼å建个æ°çè¿æ¥ä¸æ¯ä¸ä¸ªå¾æè´µçæä½ãç¸åçåºå±Hbaseçè¿æ¥ç¨äºå ¨é¨è¿æ¥çç¸åçé群ï¼æ以æå¤æå°å®ä¾åºä¸äºå¯¹è±¡ã
RANGE SCAN:æå³çåªæ«æ表ä¸ä¸é¨åæ°æ®ãå¦æ使ç¨ä¸»é®çº¦æä¸çä¸ä¸ªæè å¤ä¸ªç»æ主é®çåä¼åºç°è¿ç§æ åµã没æè¿æ»¤PKåçæ¥è¯¢ï¼ä¾åï¼select * from test where pk2='x' and pk3='y';å°ä¼åºç°å ¨æ«æï¼ç¶èå¨select * from test where pk1='x' and pk2='y';ä¸å´æ¯èå´æ«æ(range scan)ã注æï¼ä½ å¯ä»¥æ·»å äºçº§ç´¢å¼å¨"pk2"å"pk3"åä¸ï¼ä¼è§¦åèå´æ«æ(range scan)å¨ç¬¬ä¸æ¬¡æ¥è¯¢ä¸ã
DEGENERATE SCAN:æå³çä¸ä¸ªæ¥è¯¢ä¸è½è¿åè¡æ°æ®ãå¦ææ们å³å®å¨ç¼è¯æ¶å®æãæ们çè³ä¸éè¦è¿è¡æ«æã
FULL SCAN:æå³çææè¡é½è¢«æ«æå°ã(å¦æä½ æä¸ä¸ªwhereåå¥ï¼å¯è½ä¼åºç¨å°ä¸ä¸ªè¿æ»¤å¨)
SKIP SCAN:å°æ«æä¸ä¸ªè¡¨ä¸çåéæè å ¨é¨è¡ãæ 论å¦ä½å®å°ä¼æ ¹æ®è¿æ»¤å¨è·³è¿å¤§åç»çè¡ãå¯ä»¥æ¥ç å客 äºè§£æ´å¤ãå¦æ主é®ä¸æ²¡æè¿æ»¤å¨çåï¼é£æ们就ä¸åSKIP SCANï¼ä½æ¯ä½ å¯ä»¥å¼ºå¶SKIP SCANéè¿ä½¿ç¨/+ SKIP_SCAN/å»å½ä¸ãå¨ä¸äºæ¡ä»¶ä¸ï¼ä¹å°±æ¯è¯´å½ä½ ç主é®åºæ°æ¯è¾å°æ¶ï¼å®å°ä¼æ´ææè¶ è¿FULL SCANã
ä¸ï¼å®ä¸æ¯å¿ é¡»çPhoenix jDBCè¿æ¥æ± ã
Phoenixçè¿æ¥å¯¹è±¡æ¶ä¸å大é¨åçJDBCè¿æ¥ï¼åå å¨äºåºå±æ¯Hbaseçè¿æ¥ãPhoenixè¿æ¥å¯¹è±¡å¨è®¾è®¡æ¶å°±æ¯ä¸ºäºæ´ç²¾ç»ä¾¿å®ç代价å»å建ãå¦æPhoenixçè¿æ¥è¢«åå©ç¨ï¼åºå±çHBaseè¿æ¥å¯è½å¹¶ä¸æ»æ¯ç±åä¸ä¸ªç¨æ·ä¿æå¨å¥åº·ç¶æãæ´å¥½çæ¹å¼æ¯å»å建ä¸ä¸ªæ°çPhoenixè¿æ¥ï¼ä¿è¯é¿å æ½å¨çé®é¢ã
å®è¡Phoenixè¿æ¥æ± å¯ä»¥ç®åçå建å®ä¾åå§æ´¾ï¼å¯¹å¤é¨èè¨ï¼å建åºæ°çPhoenixè¿æ¥ï¼å®é æ¯éè¦æ¶ä»æ± ä¸è·åï¼å¯¹å¤é¨èè¨çå ³éï¼å®é æ¯è¿åå°æ± ä¸å»ï¼å¯ä»¥åè Phoenix- ã
空é®å¼æè 伪é®å¼ï¼_åéå®ç¬¦ï¼å¿ é¡»çï¼å»ä¿è¯åé½æææçå¨å ¨é¨è¡ä¸ã
æ°æ®åå¨å¨Hbaseæ¯ä»¥é®å¼å¯¹å½¢å¼åå¨ï¼æå³çåå¨æ¯ä¸ªåå¼å®æ´çè¡é®ãè¿è¿æå³çï¼é¤éè³å°åå¨äºä¸ä¸ªåï¼å¦åæ ¹æ¬ä¸åå¨è¡é®ã
ç°å¨èèå°JDBCçè¡åå¨intç±»åç主é®ï¼åè¥å¹²åå¯è½æ¯ç©ºï¼nullï¼çã为äºå¯ä»¥åå¨ä¸»é®ï¼é®å¼å¿ é¡»å»åå¨å»å±ç¤ºè¿è¡æ°æ®çå ¨é¨ï¼ç°å¨çæ¶é´æ³ï¼èèçæ¶é´æ³çæ¬ï¼ãä½ ä¼æ³¨æå°è¿äºåæ¯ç©ºåãè¿å 许æ§è¡âSELECT * FROM TABLEâ并æ¥æ¶ææè¡çè®°å½ï¼å³ä½¿é£äºépkå为空çè®°å½ä¹æ¯å¦æ¤ã
å³ä½¿å¯¹äºæäº(æææ)è®°å½åªæä¸ä¸ªå为空ï¼ä¹ä¼åºç°ç¸åçé®é¢ãå¨Phoenixä¸çæ«æå°å æ¬ç©ºåï¼ä»¥ç¡®ä¿åªå å«ä¸»é®çè¡(ææéé®åé½ä¸ºç©º)å°å å«å¨æ«æç»æä¸ã
第1章 Phoenix简介
Phoenix是一个用于HBase的开源SQL层,它允许用户使用标准的JDBC API来创建表、插入数据和查询HBase数据,而无需直接操作HBase客户端API。Java源码免费分享Phoenix具备以下特点:易于集成,包括与Spark、Hive、Pig、Flume和Map Reduce的整合;性能优异,能够为小型查询提供毫秒级响应,对大量数据查询提供秒级响应;操作简单,支持DML命令和通过DDL命令创建表及版本化增量更改;拥有安全功能,支持GRANT和REVOKE;完美支持HBase的二级索引创建。
Phoenix的快速入门步骤包括安装、部署以及使用Phoenix进行表操作。首先,从官方网址下载并解压Phoenix的jar包,复制server和client这两个包到各节点的hbase/lib目录下。接着,在/etc/profile中添加必要的环境变量,以确保可以在任何目录使用Phoenix命令。启动Zookeeper、Hadoop和HBase,然后启动Phoenix服务。在Phoenix服务启动后,用户可以通过使用SQL命令来操作表,如何编写网站源码如显示所有表、创建表、插入记录、查询记录、删除记录和删除表。退出命令行时,可以使用"!quit"命令。
Phoenix表操作包括基本的CRUD操作。用户可以使用"!table"或"!tables"命令显示所有表。创建表时,可以使用CREATE TABLE命令,例如"CREATE TABLE IF NOT EXISTS us_population (State CHAR(2) NOT NULL, City VARCHAR NOT NULL, Population BIGINT CONSTRAINT my_pk PRIMARY KEY (state, city));"。插入记录时,使用"upsert"命令,如"upsert into us_population values('NY','NewYork',);"。查询记录时,可以使用"select"命令,如"select * from us_population;"或"select * from us_population where state='NY';"。删除记录和表时,分别使用"delete"和"drop table"命令。彩票发布网源码
为了在Phoenix中操作HBase中的表,用户需要进行表映射。表映射分为视图映射和表映射两种方式。视图映射是创建只读视图,只能用于查询,不支持对源数据进行修改等操作。表映射允许用户直接在Phoenix中操作HBase中的表,当HBase中已经存在表时,可以使用类似创建视图的方式创建关联表。当HBase中不存在表时,可以直接使用CREATE TABLE指令创建表,系统会在Phoenix和HBase中自动创建表,并根据指令内的参数初始化表结构。
使用Spark与Phoenix进行读写操作是通过Spark SQL与Phoenix连接实现的,可以在Spark代码中使用Phoenix连接查询表数据。更多关于Spark与Phoenix的使用详情,可以参考Phoenix的官方文档。
视图映射与表映射之间的对比表明,视图映射的查询效率较低,因为创建映射表时Phoenix会在表中创建空键值对,这些键值对用于提高查询效率。而使用CREATE TABLE创建的关联表,如果对表进行修改,源数据也会相应改变。如果关联表被删除,源表也会被删除,而视图则不会发生这种情况。删除视图不会影响源数据。
数据存储扫盲:hbase,cassandra,clickhouse,pg,neo4j...
本文分享了关于数据存储系统HBase、Cassandra、ClickHouse、PostgreSQL和Neo4j的基本知识,适合数据存储初学者参考。HBase
作为列族数据库,HBase基于Hadoop HDFS,由Apache项目支持,Google和Bigtable的灵感之作。它使用JAVA实现,支持分布式、KV存储,可处理稀疏表和高并发写入。SQL操作需配合Phoenix,强调CP一致性,且支持单行ACID。相关资源包括官方文档、中文教程和源码。Cassandra
Cassandra是Apache项目,Facebook开发,适合大数据写入和实时查询,尤其在欺诈检测和位置服务领域。它采用Dynamo和Bigtable技术,无主架构,提供CQL查询,主副本设计。与HBase相比,Cassandra更偏向OLTP场景,且对写多读少的需求更友好。ClickHouse
ClickHouse是列式关系型数据库,专为OLAP设计,由Yandex研发,支持SQL和高性能读取。它不提供ACID特性,但适合日志分析和时间序列数据。ClickHouse的数据结构和部署特点使其在特定场景下表现出色。PostgreSQL
PostgreSQL作为行式RDBMS,对SQL标准支持好,支持索引和全文检索,可用于OLTP和OLAP。相比MySQL,提供更灵活的复制选项。索引结构丰富,适应多种查询需求。Neo4j
Neo4j是图数据库,专长于存储和查询复杂的图数据,适合知识图谱和社交网络应用。它支持弱模式设计,但不支持碎片处理和复杂的图算法。 在选择时,需要根据具体应用场景和性能需求来决定,比如HBase适合大量写入和简单查询,而ClickHouse则在分析性能上更胜一筹。大数据平台的软件有哪些?
一、Phoenix
简介:这是一个Java中间层,可以让开发者在Apache HBase上执行SQL查询。Phoenix完全使用Java编写,代码位于GitHub上,并且提供了一个客户端可嵌入的JDBC驱动。
Phoenix查询引擎会将SQL查询转换为一个或多个HBase scan,并编排执行以生成标准的JDBC结果集。直接使用HBase API、协同处理器与自定义过滤器,对于简单查询来说,其性能量级是毫秒,对于百万级别的行数来说,其性能量级是秒
二、Stinger
简介:原叫Tez,下一代Hive,Hortonworks主导开发,运行在YARN上的DAG计算框架。
某些测试下,Stinger能提升倍左右的性能,同时会让Hive支持更多的SQL,其主要优点包括:
❶让用户在Hadoop获得更多的查询匹配。其中包括类似OVER的字句分析功能,支持WHERE查询,让Hive的样式系统更符合SQL模型。
❷优化了Hive请求执行计划,优化后请求时间减少%。改动了Hive执行引擎,增加单Hive任务的被秒处理记录数。
❸在Hive社区中引入了新的列式文件格式(如ORC文件),提供一种更现代、高效和高性能的方式来储存Hive数据。
三、Presto
简介:Facebook开源的数据查询引擎Presto ,可对PB以上的数据进行快速地交互式分析。该项目始于 年秋季开始开发,目前该项目已经在超过 名 Facebook 雇员中使用,运行超过 个查询,每日数据在 1PB 级别。Facebook 称 Presto 的性能比诸如 Hive 和 Map*Reduce 要好上 倍有多。
Presto 当前支持 ANSI SQL 的大多数特效,包括联合查询、左右联接、子查询以及一些聚合和计算函数;支持近似截然不同的计数(DISTINCT COUNT)等。