版權聲明:本套技術專欄是做者(秦凱新)平時工做的總結和昇華,經過從真實商業環境抽取案例進行總結和分享,並給出商業應用的調優建議和集羣環境容量規劃等內容,請持續關注本套博客。版權聲明:禁止轉載,歡迎學習。node
安裝presto後,需另建一個文件夾用於存儲日誌、本地元數據等的數據目錄。數據庫
config.properties :運維
coordinator=true
node-scheduler.include-coordinator=false
http-server.http.port=9001
query.max-memory=50GB
query.max-memory-per-node=1GB
discovery-server.enabled=true
discovery.uri=http://bd-master:9001
複製代碼
coordinator:指定是否運維Presto實例做爲一個coordinator(接收來自客戶端的查詢情切管理每一個查詢的執行過程) node-scheduler.include-coordinator:是否容許在coordinator服務中進行調度工做 服務發現(心跳)和HTTP服務均使用同一端口jvm
node.propertiesoop
node.environment=test
node.data-dir=/usr/local/presto/logs
node.id=bd-master
複製代碼
node.environment: 集羣名稱, 全部在同一個集羣中的Presto節點必須擁有相同的集羣名稱 node.id: 每一個Presto節點的惟一標示。每一個節點的node.id都必須是惟一的。在Presto進行重啓或者升級過程當中每一個節點的node.id必須保持不變。若是在一個節點上安裝多個Presto實例(例如:在同一臺機器上安裝多個Presto節點),那麼每一個Presto節點必須擁有惟一的node.id node.data-dir: 數據存儲目錄的位置(操做系統上的路徑), Presto將會把日期和數據存儲在這個目錄下學習
jvm.configspa
-server
-Xmx16G
-XX:+UseConcMarkSweepGC
-XX:+ExplicitGCInvokesConcurrent
-XX:+CMSClassUnloadingEnabled
-XX:+AggressiveOpts
-XX:+HeapDumpOnOutOfMemoryError
-XX:OnOutOfMemoryError=kill -9 %p
-XX:ReservedCodeCacheSize=150M
-DHADOOP_USER_NAME=admin
複製代碼
啓動Java虛擬機所須要的命令行參數,注意集羣中全部節點的jvm配置須一致操作系統
設置logger的最小日誌級別。 com.facebook.presto=INFO 該設置表示對於使用logger類的com.facebook.presto.server和com.facebook.presto.hive來講,二者的最小日誌級別都是INFO級別。命令行
在該目錄下新建一個文件hive.properties ,內容以下:rest
connector.name=hive-hadoop2
hive.metastore.uri=thrift://10.44.219.80:9083
hive.allow-drop-table=true
hive.allow-rename-table=true
hive.config.resources=/usr/local/soft/install/hadoop-2.7.6/etc/hadoop/core-site.xml,/usr/local/soft/install/hadoop-2.7.6/etc/hadoop/hdfs-site.xml
hive.metastore-cache-ttl=0s
hive.metastore-refresh-interval=1s
複製代碼
hive-hadoop2 爲支持hadoop 2.x版本的鏈接器,鏈接hive元數據庫的uri,端口默認是9083,而且容許刪除和更名錶,還必須在hive.config.resources添加hadoop的配置文件位置。 注意運行presto前,要之後臺的形式打開hive的metastore服務,輸入如下指令:
hive - -service metastore &
複製代碼
任意Worker節點只需修改config.properties 和node.properties,其他與主節點相同。
config.properties :
coordinator=false
http-server.http.port=9001
query.max-memory=50GB
query.max-memory-per-node=1GB
discovery.uri=http://bd-master:9001
複製代碼
node.properties
node.environment=test
node.data-dir=/usr/local/presto/logs
node.id=bd-slave1
複製代碼
node.id設置爲worker的標誌,其他不變
hive --service metastore --presto啓動須要
$PRESTO_HOME/bin/launcher restart
$PRESTO_HOME/presto --server localhost:9001 --catalog hive --schema default
複製代碼
對分值進行分桶,獲得不一樣區間內的數據 並 union all包含100分的值
width_bucket(x,bound1,bound2,n)
返回x指定的bound1和bound2界限的bin數量以及n個存儲桶的數量
SELECT * from
(select concat(cast((width_bucket(device_health_score,0,100,10)-1)*10 as VARCHAR),'--',cast(width_bucket(device_health_score,0,100,10)*10-1 as VARCHAR))
as score_range, date_time,
COUNT(width_bucket(device_health_score,0,100,10)) as count from device_health_score_fact
where device_health_score >=0 and device_health_score <100
group by concat(cast((width_bucket(device_health_score,0,100,10)-1)*10 as VARCHAR ),'--',cast(width_bucket(device_health_score,0,100,10)*10-1 as VARCHAR)),date_time
)
UNION ALL (select cast(device_health_score as VARCHAR) as score_range,date_time,COUNT(device_health_score) from device_health_score_fact where device_health_score =100 group by device_health_score,date_time )
複製代碼
秦凱新 於深圳