久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

實時查詢引擎

 館天下ccf 2018-03-27

1. Presto 是什么

??Facebook presto是什么,繼Facebook創(chuàng)建了HIVE神器后的又一以SQL語言作為接口的分布式實時查詢引擎,,可以對PB級的數(shù)據(jù)進行快速的交互式查詢,。它支持標準的ANSI SQL.包含查詢,聚合,,JOIN以及窗口函數(shù)等,。除了Facebook這個創(chuàng)造都在使用外,國內(nèi)像京東,,美團等也都有廣泛的使用,。對于英文不好的同學(xué)可以訪問由京東創(chuàng)建的這個中文翻譯站點:http:///,只是這個版本才0.100,現(xiàn)在最新版已到0.156.

2. Presto 結(jié)構(gòu)

??Presto同樣是需要部署到每一個DataNode上的分布式系統(tǒng),,它包括一個coordinator和多個worker:
Presto結(jié)構(gòu)

  • Coordinator: 接入接口,,解析SQL語句,生成查詢計劃,,任務(wù)分發(fā)等,。
  • Worker:負責(zé)與數(shù)據(jù)的讀寫交互以及執(zhí)行查詢計劃

??值得一提的是Presto以插件形式對數(shù)據(jù)存儲層進行了抽象,它叫做連接器,,如:Cassandra Connector,,Hive Connector,MySQL Connector等,,可以看出它不僅默認提供了Hadoop相關(guān)組件的連接器,,還提供了Mysql, Postgresql等RDBMS的連接器,,同時也可以方便的通過自定義連接器開發(fā),,達到適用于不同數(shù)據(jù)存儲層的擴展目的,。

??Presto提供以下幾種類型的使用接口:

  • Presto命令行
  • JDBC驅(qū)動

3. Presto安裝

??Presto只支持Linux系統(tǒng)的部署。它的Worker節(jié)點同時也可以作為Coordinator節(jié)點,,但是Presto建議獨立部署Coordinator節(jié)點,,并采用獨立服務(wù)器進行部署,避免性能影響,。
??本文的測試環(huán)境為基于CDH 5.5的Hadoop集群環(huán)境的安裝和測試,。Presto 版本:0.152.3. Presto 的安裝JDK版本必須要求:1.8. 安全方式為獨立Coordinator節(jié)點+Worker節(jié)點的方式

 1. 解壓Presto到每一臺Worker節(jié)點和Coordinator節(jié)點

 tar -xzvf presto-server-0.152.3.tar.gz
  • 1

 2. 配置node.properties
?? node.properties包含了Presto的節(jié)點配置信息,在解壓后目錄的 etc/node.properties位置,。,,如:

node.environment=myprestoproduction #全部相同的集群名字,經(jīng)測試不能大小寫混合
node.id=ffffffff-ffff-ffff-ffff-fffffffffff1 #這個每個presto節(jié)點ID都需要不一樣,,可在后面數(shù)字遞增
node.data-dir=/usr/local/presto-server-0.152.3/data  #presto數(shù)據(jù)存儲目錄,,放在了解壓軟件目錄下
  • 1
  • 2
  • 3

 3. 配置jvm.config
??jvm.config這個配置文件通過名字,大家應(yīng)該知道是配置什么了吧,。內(nèi)容如下:

-server
-Xmx8G
-XX:+UseG1GC
-XX:G1HeapRegionSize=32M
-XX:+UseGCOverheadLimit
-XX:+ExplicitGCInvokesConcurrent
-XX:+HeapDumpOnOutOfMemoryError
-XX:OnOutOfMemoryError=kill -9 %p
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

 4. Presto配置:config.properties
??config.properties配置文件用于配置Presto的運行參數(shù),,這里Coordinator與Workder節(jié)點需要分開配置不同的內(nèi)容。
??Coordinator節(jié)點配置:

coordinator=true  #這里指定作為coordinator節(jié)點運行
node-scheduler.include-coordinator=false
http-server.http.port=8089
query.max-memory=50GB #單個查詢可用的總內(nèi)存
query.max-memory-per-node=1GB #單個查詢單個節(jié)點的可用最大內(nèi)存
discovery-server.enabled=true #Discovery服務(wù)用于Presto集群的節(jié)點狀態(tài)服務(wù)
discovery.uri=http://master:8089
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

??Worker節(jié)點配置:

coordinator=false
http-server.http.port=8089
query.max-memory=50GB
query.max-memory-per-node=1GB
discovery.uri=http://master:8089
  • 1
  • 2
  • 3
  • 4
  • 5
  • 至此就可以正常啟動Presto了,。但是沒有配置任何Connector的Presto也只能拿來看一看了,,所以下面還是先把Hive Connector配置好。

 5. 預(yù)先配置好Hive Connector
??新建好文件: etc/catalog/hive.properties,,內(nèi)容為:

connector.name=hive-cdh5 # 根據(jù)Hadoop版本情況,,值可以是: hive-hadoop1, hive-hadoop2,hive-cdh4,hive-cdh5
hive.metastore.uri=thrift://master:9083 # hive的MetaStore服務(wù)URL
hive.config.resources=/etc/hadoop/conf/core-site.xml,/etc/hadoop/conf/hdfs-site.xml
  • 1
  • 2
  • 3

 6. 啟動Presto
??經(jīng)過這么多的配置,終于可以到了啟動Presto這一步,,這一步就簡單了,,直接在每一個節(jié)點上執(zhí)行啟動命令即可:

bin/launcher start
  • 1
  • 值得注意的是, CDH安裝的JDK版本為1.7,,而Presto要求的版本是1.8.因此需要更改launcher文件,,在前面增加JAVA環(huán)境變量設(shè)置,覆蓋默認的1.7設(shè)置,。

 7. 連接到Presto
??使用命令行連接到Presto:
??可是怎會如此輕松就能讓你連上去,,你得下載一個文件:presto-cli-0.156-executable.jar,然后重命名為presto,并增加可執(zhí)行權(quán)限(chmod +x),,后可以執(zhí)行連接命令:

./presto --server master:8089

presto:default> SELECT * FROM system.runtime.nodes;
               node_id                |         http_uri          | node_version | coordinator | state  
--------------------------------------+---------------------------+--------------+-------------+--------
 ffffffff-ffff-ffff-ffff-fffffffffff2 | http://192.168.5.202:8089 | 0.152.3      | false       | active 
 ffffffff-ffff-ffff-ffff-fffffffffff1 | http://192.168.5.200:8089 | 0.152.3      | true        | active 
 ffffffff-ffff-ffff-ffff-fffffffffff3 | http://192.168.5.203:8089 | 0.152.3      | false       | active 
 ffffffff-ffff-ffff-ffff-fffffffffff4 | http://192.168.5.204:8089 | 0.152.3      | false       | active
(4 rows)

Query 20161108_101627_00016_3i6da, FINISHED, 2 nodes
Splits: 2 total, 2 done (100.00%)
0:00 [4 rows, 300B] [9 rows/s, 727B/s]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

??system連接器是Presto自帶的連接器,,不需要配置。包含Presto的節(jié)點信息,,配置信息以及metrics信息等。

5. 使用Presto查詢HIVE表數(shù)據(jù)

 1. 使用命令行連接到Presto,,并指定使用HIVE連接器:

./presto-cli-0.107-jd-executable.jar --server master:8089 --catalog hive --schema default
#指定默認連接到HIVE的default數(shù)據(jù)庫
  • 1
  • 2

 2. 查詢HIVE表數(shù)據(jù),,接下來就可以使用標準SQL查詢HIVE數(shù)據(jù),,如:

presto:default> desc sample_08;
   Column    |  Type   | Comment 
-------------+---------+---------
 code        | varchar |         
 description | varchar |         
 total_emp   | integer |         
 salary      | integer |         
(4 rows)

Query 20161108_145619_00028_3i6da, FINISHED, 2 nodes
Splits: 2 total, 2 done (100.00%)
0:00 [4 rows, 258B] [11 rows/s, 726B/s]

presto:default> select * from sample_08 limit 3;
  code   |      description       | total_emp | salary 
---------+------------------------+-----------+--------
 00-0000 | All Occupations        | 135185230 |  42270 
 11-0000 | Management occupations |   6152650 | 100310 
 11-1011 | Chief executives       |    301930 | 160440 
(3 rows)

Query 20161108_145632_00029_3i6da, FINISHED, 2 nodes
Splits: 2 total, 2 done (100.00%)
0:02 [823 rows, 45KB] [439 rows/s, 24KB/s]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25

6. 問題

 1. 在使用Presto查詢Parquet格式中的Decimal數(shù)據(jù)類型時會出現(xiàn)異常,需要手動轉(zhuǎn)換:

presto:default> desc test_decimal;
  Column  |     Type      | Comment 
----------+---------------+---------
 dec_col  | decimal(2,0)  |        
(1 rows)

Query 20161108_151431_00066_3i6da, FINISHED, 2 nodes
Splits: 2 total, 2 done (100.00%)
0:00 [5 rows, 358B] [14 rows/s, 1.02KB/s]

presto:default> select dec_col from test_decimal limit 1;
Query is gone (server restarted?)  #這兒產(chǎn)生異常了
presto:default> select cast(dec_col as integer) from test_decimal limit 1;
 _col0 
-------
     1 
(1 row)

Query 20161108_151456_00068_3i6da, FINISHED, 1 node
Splits: 2 total, 2 done (100.00%)
0:00 [7.28K rows, 118KB] [19.5K rows/s, 314KB/s]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

 2. 另外一個就是Presto的異常信息太簡結(jié)了,,很多都是Query is gone,,很不好排查,如:

presto:default> explain select * from sample_08;
Query is gone (server restarted?)
  • 1
  • 2

 3. 兼容性問題,,比如:

presto:default> select * from sample_tabpart limit 10;
Query 20161109_031436_00013_3i6da failed: Unsupported Hive type char(4) found in partition keys of table default.sample_tabpart
# 不支持以CHAR為類型的分區(qū)KEY
  • 1
  • 2
  • 3

7. 最后

??Facebook presto雖然發(fā)展時間不長,,版本也還不高,但當前版本在功能上已比較豐富,,而且在查詢效率上已達到了近乎實時的要求,,且非常靈活。Presto將會成為實時查詢工具上的一個重要選擇,。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點,。請注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購買等信息,謹防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多