比hive快10倍的大數據查詢利器presto部署

来源:https://www.cnblogs.com/gjc592/archive/2019/08/06/11311777.html
-Advertisement-
Play Games

目前最流行的大數據查詢引擎非hive莫屬,它是基於MR的類SQL查詢工具,會把輸入的查詢SQL解釋為MapReduce,能極大的降低使用大數據查詢的門檻, 讓一般的業務人員也可以直接對大數據進行查詢。但因其基於MR,運行速度是一個弊端,通常運行一個查詢需等待很久才會有結果。對於此情況,創造了hive ...


目前最流行的大數據查詢引擎非hive莫屬,它是基於MR的類SQL查詢工具,會把輸入的查詢SQL解釋為MapReduce,能極大的降低使用大數據查詢的門檻, 讓一般的業務人員也可以直接對大數據進行查詢。但因其基於MR,運行速度是一個弊端,通常運行一個查詢需等待很久才會有結果。對於此情況,創造了hive的facebook不負眾望,創造了新神器---presto,其查詢速度平均比hive快10倍,現在就來部署體驗一下吧。

一、 準備工作

操作系統: centos7

JAVA:         JDK8(155版本及以上),我使用的是jdk1.8.0_191

presto server:presto-server-0.221.tar.gz  

presto client: presto-cli-0.221-executable.jar

註:

a)本次是基於hive來進行部署使用,因此相關節點已部署hadoop、hive;

b)  presto官網地址為https://prestodb.github.io   presto server、client及jdbc jar均可以從官網下載。

二、 部署階段

1.  將jdk、 presto server  presto client 上傳至各伺服器上

jdk包我上傳至/usr/local 目錄,並解壓、配置軟鏈接,配置環境變數,如不配置環境變數,也可在launcher里修改

presto server及client上傳至 /opt/presto下,同時解壓server包

 

2.  各節點信息如下

其中包含一個Coordinator節點及8個worker節點

ip 節點角色 節點名
192.168.11.22 Coordinator node22
192.168.11.50 Worker node50
192.168.11.51 Worker node51
192.168.11.52 Worker node52
192.168.11.53 Worker node53
192.168.11.54 Worker node54
192.168.11.55 Worker node55
192.168.11.56 Worker node56
192.168.11.57  Worker node57

 3.  創建presto數據及日誌目錄

以下操作各節點均相同,只有配置文件處需根據各節點情況,對應修改

mkdir -p /data/presto

4.  創建etc目錄

cd  /opt/presto/presto-server-0.221
mkdir etc

5. 創建所需的配置文件

1)創建並配置  config.properties

如果是Coordinator節點,建議如下配置(記憶體大小根據實際情況修改)

vim   config.properties
## 添加如下內容
coordinator=true datasources=hive node-scheduler.include-coordinator=false http-server.http.port=8080 query.max-memory=80GB query.max-memory-per-node=10GB query.max-total-memory-per-node=10GB discovery-server.enabled=true discovery.uri=http://192.168.11.22:8080

如果是worker 節點:

vim config.properties ## 添加如下內容
coordinator=false #datasources=hive #node-scheduler.include-coordinator=false http-server.http.port=8080 query.max-memory=80GB query.max-memory-per-node=10GB query.max-total-memory-per-node=10GB #discovery-server.enabled=true discovery.uri=http://192.168.11.22:8080

參數說明:

coordinator: 是否運行該實例為coordinator(接受client的查詢和管理查詢執行)。
node-scheduler.include-coordinator:coordinator是否也作為work。對於大型集群來說,在coordinator里做worker的工作會影響查詢性能。
http-server.http.port:指定HTTP埠。Presto使用HTTP來與外部和內部進行交流。
query.max-memory: 查詢能用到的最大總記憶體
query.max-memory-per-node: 查詢能用到的最大單結點記憶體
discovery-server.enabled: Presto使用Discovery服務去找到集群中的所有結點。每個Presto實例在啟動時都會在Discovery服務里註冊。這樣可以簡化部署, 不需要額外的服務,Presto的coordinator內置一個Discovery服務。也是使用HTTP埠。
discovery.uri: Discovery服務的URI。將192.168.11.22:8080替換為coordinator的host和埠。這個URI不能以斜杠結尾,這個錯誤需特別註意,不然會報404錯誤。
另外還有以下屬性:
jmx.rmiregistry.port: 指定JMX RMI的註冊。JMX client可以連接此埠
jmx.rmiserver.port: 指定JXM RMI的伺服器。可通過JMX監聽。

 

2)  配置 jvm.config

vim jvm.config 
# 添加如下內容
-server -Xmx20G -XX:+UseG1GC -XX:G1HeapRegionSize=32M -XX:+UseGCOverheadLimit -XX:+ExplicitGCInvokesConcurrent -XX:+HeapDumpOnOutOfMemoryError -XX:OnOutOfMemoryError=kill -9 %p

 JVM配置文件包含啟動Java虛擬機時的命令行選項。格式是每一行是一個命令行選項。此文件數據是由shell解析,所以選項中包含空格或特殊字元會被忽略。

3) 配置log.properties

vim log.properties
# 添加如下內容
com.facebook.presto=INFO

日誌級別有四種,DEBUG, INFO, WARN and ERROR

 4)  配置node.properties

vim  node.properties

## 添加如下內容
node.environment=presto_ocean
node.id=node22
node.data-dir=/data/presto

參數說明:

node.environment: 環境名字,Presto集群中的結點的環境名字都必須是一樣的。

node.id: 唯一標識,每個結點的標識都必須是為一的。就算重啟或升級Presto都必須還保持原來的標識。

node.data-dir: 數據目錄,Presto用它來保存log和其他數據

5)  配置catalog及hive.properties

創建 catalog目錄,因本次使用的hive,因此在此目錄下創建hive.properties 並配置對應參數

mkdir  catalog

vim hive.properties
# 添加如下內容

connector.name=hive-hadoop2
hive.metastore.uri=thrift://192.168.11.22:9083
hive.config.resources=/opt/hadoop/hadoop-3.2.0/etc/hadoop/core-site.xml,/opt/hadoop/hadoop-3.2.0/etc/hadoop/hdfs-site.xml
hive.allow-drop-table=true

 至此 相關配置文件配置完成。

 

三、 啟動presto-server並連接

進入/opt/presto/presto-server-0.221/bin,有launcher命令

如果需要配置JAVA等環境變數也可以在此文件里修改。在此處修改的好處在於可以與不同版本的jdk共存 而不影響原有業務。

1. 啟動presto-server

./launcher start

此時如果/data/presto/var日誌生成,且無報錯信息,代表啟動正常。

2. presto-cli 連接

把下載的jar包:presto-cli-0.221-executable.jar 重命名為:presto 並且賦予許可權

ln -s presto-cli-0.221-executable.jar   presto
chmod +x presto
./presto --server localhost:8080 --catalog hive --schema default

 此時可以查看到hive里的庫及表

 

 

 3. 查看web界面

登錄http://192.168.11.22:8080/ui/可查看整體狀態。

 

至此,presto部署就完成了。其與hive的性能對比及使用建議等後續有機會再介紹。

 

耿小廚已開通個人微信公眾號,想進一步溝通或想瞭解其他文章的同學可以關註我

 

我的博客即將同步至騰訊雲+社區,邀請大家一同入駐:https://cloud.tencent.com/developer/support-plan?invite_code=33ja5r1x478ks

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1. 總結IP地址規劃 1)IP地址基礎在IP網路中,通信節點需要有一個唯一的IP地址,IP地址用於IP報文的定址以及標識一個節點;IP地址中最重要的是子網劃分。2)特殊IP地址a.受限廣播(用於IP地址請求階段)所有位全為1,255.255.255.255b.直接廣播(子網廣播) 主機位全為1,如 ...
  • 本篇博文以 Cent OS 為例, 演示 Linux 系統下如何查看某個網路埠的占用情況, 並找出占用某個埠的進程, 以及殺死相關進程的方法. ...
  • 簡要介紹硬碟壞道可以說是硬碟致命性故障。出現硬碟壞道以後硬碟往往也就代表著硬碟生命結束,硬碟在出現壞道以後不但是某些壞扇區不可用,還會直接殃及到其它可用磁碟扇區,這樣硬碟生命也不會太長,一般利用不了多長時間後便無法再繼續使用,造成整塊硬碟損壞。硬碟出現壞道,意味著用來存儲數據不安全,硬碟壞了可以再買 ...
  • 1. gpedit.msc 組策略 2. sndrec32 錄音機 3. Nslookup IP地址偵測器 4. explorer 打開資源管理器 5. logoff 註銷命令 6. tsshutdn 60秒倒計時關機命令 7. lusrmgr.msc 本機用戶和組 8. services.msc ...
  • 一、echo在屏幕上列印內容 echo [選項] [輸出內容] -e 支持轉義字元控制的字元轉換 輸出帶顏色的文本 二、第一個腳本 編寫腳本 註意: 運行腳本 兩種方式 (1)賦予執行許可權,直接運行 (2)通過bash調用執行腳本 三、bash的基本功能 (1)命令別名 顯示已有的別名 alisa ...
  • vi -- 終端中的編輯器 visual interface ssh-- secure shell vim vi improved 打開和新建文件 vi 文件名 #如果文件已經存在,會直接打開文件 #如果文件不存在,會新建一個文件 打開文件並定位行 vi 文件 游標定位在最開頭 vi 文件 + 游標 ...
  • [TOC] 手動編譯PHP開發環境 這是一篇來自深夜加班的手稿 問題復盤 你有沒有遇到過這樣的情況,部署了集成環境,每次添加擴展的時候,總是需要找一堆的配置文件的位置(其實很多人都能熟練使用集成環境) 你有沒有遇到過這樣的情況,去面試,面試官問你: 有沒有自己手動編譯過環境? 你卻回答 我一般都使用 ...
  • 1. 遷移背景和限制條件 隨著功能的迭代或者數據表中數據量的增加,將現有數據進行遷移已是工作中經常遇到的事情。通常我們在平時遷移數據數據的時候,只需要用mysqldump、mysqlimport指令就能完成遷移功能,但在實際工作中,作為開發者的我們往往沒有這麼大的許可權(例如寫許可權)來操作線上數據,只 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...