日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

在文件存儲 HDFS 版上使用Presto

本文主要介紹如何在文件存儲 HDFS 版上搭建及使用Presto。

前提條件

  • 已開通文件存儲 HDFS 版服務并創建文件系統實例和掛載點。具體操作,請參見文件存儲HDFS版快速入門

  • 已搭建Hadoop集群并且所有集群節點已安裝JDK,JDK版本不低于1.8。建議您使用的Hadoop版本不低于2.7.2,本文檔中使用的Hadoop版本為Apache Hadoop 2.8.5。

  • 已在集群中下載并安裝Hive。本文使用的Hive版本為2.3.7。

  • 下載Presto安裝包presto-cli-xxx-executable.jar。本文使用的Presto版本為0.265.1。

背景信息

Presto是一個開源的分布式SQL查詢引擎,適用于交互式分析查詢。

說明

在本文中Presto是通過連接Hive的元數據服務來讀取文件存儲 HDFS 版上的數據,在文件存儲 HDFS 版上使用Presto時需要額外配置一些依賴包。具體操作,請參見步驟二:配置Presto

步驟一:Hadoop集群掛載文件存儲 HDFS 版實例

Hadoop集群中配置文件存儲 HDFS 版實例。具體操作,請參見掛載文件存儲 HDFS 版文件系統

步驟二:配置Presto

  1. 執行以下命令,解壓Presto安裝包。

    tar -zxf presto-server-0.265.1.tar.gz
  2. 執行以下命令,在Presto解壓目錄下創建目錄(例如/etc)。

    mkdir presto-server-0.265.1/etc
  3. 配置節點環境。

    1. 創建etc/node.properties文件。

      vim presto-server-0.265.1/etc/node.properties
    2. etc/node.properties文件中添加如下內容。

      node.environment=production
      node.id=ffffffff-ffff-ffff-ffff-ffffffffffff
      node.data-dir=/var/presto/data
  4. 配置JVM參數。

    1. 創建etc/jvm.config文件。

      vim presto-server-0.265.1/etc/jvm.config
    2. etc/jvm.config文件中添加如下內容。

      -server
      -Xmx8G
      -XX:+UseG1GC
      -XX:G1HeapRegionSize=32M
      -XX:+UseGCOverheadLimit
      -XX:+ExplicitGCInvokesConcurrent
      -XX:+HeapDumpOnOutOfMemoryError
      -XX:+ExitOnOutOfMemoryError
  5. 配置Presto Server。

    本文以將CoordinatorWorker配置在同一臺機器上為例進配置。您也可以將CoordinatorWorker配置在不同的機器中,具體操作,請參見Presto官方文檔

    1. 創建etc/config.properties文件。

      vim presto-server-0.265.1/etc/config.properties
    2. etc/config.properties中添加如下內容。

      coordinator=true
      node-scheduler.include-coordinator=true
      http-server.http.port=8080
      query.max-memory=5GB
      query.max-memory-per-node=1GB
      query.max-total-memory-per-node=2GB
      discovery-server.enabled=true
      discovery.uri=http://xx.xx.xx.xx:8080 #xx.xx.xx.xx為當前機器的ip地址
  6. 配置日志級別。

    1. 創建etc/log.properties文件。

      vim presto-server-0.265.1/etc/log.properties
    2. etc/log.properties文件中添加如下內容。

      com.facebook.presto=INFO
  7. 配置Presto數據源。

    1. 創建etc/catalog目錄。

      mkdir presto-server-0.265.1/etc/catalog
    2. 創建etc/catalog/hive.properties文件。

      vim presto-server-0.265.1/etc/catalog/hive.properties
    3. etc/catalog/hive.properties中添加如下內容。

      connector.name=hive-hadoop2
      hive.metastore.uri=thrift://xxxx:9083 #xxxx為啟動 hive 元數據服務的ip地址
      hive.config.resources=/path/to/core-site.xml #請替換為該節點上已掛載文件存儲HDFS版的Hadoop core-site.xml路徑
  8. 編譯并替換JAR包。

    Presto使用maven-shade-plugin插件打包,對引入的Hadoop依賴進行了重命名,文件存儲 HDFS 版Java SDKHadoop共用了protobuf-xxx.jar包,Presto通過Hive Metastore讀取文件存儲 HDFS 版上的數據時,文件存儲 HDFS 版獲取不到Presto重命名地址后的protobuf-xxx.jar包而報錯。為了避免兼容性問題,文件存儲 HDFS 版Java SDK需要作為Presto Hadoop的依賴項引入,并對Presto中引入的Hadoop Jarhadoop-apache2-xxx.jar重新編譯。

    替換jar包_01替換jar包_02

    1. 查看安裝的Presto中的presto-hadoop-apache2版本。

      0.265.1版本為例,通過源碼POM文件可以看到引入的hadoop-apache2版本為2.7.4-9。

      源碼POM文件

    2. 下載presto-hadoop-apache2對應版本的源碼。

      git clone -b 2.7.4-9 https://github.com/prestodb/presto-hadoop-apache2.git
    3. 在源碼中的POM文件中添加文件存儲 HDFS 版最新Java SDK的依賴項。本文使用的Java SDK版本為1.0.5。

      vim presto-hadoop-apache2/pom.xml
      <dependency>
          <groupId>com.aliyun.dfs</groupId>
          <artifactId>aliyun-sdk-dfs</artifactId>
          <version>1.0.5</version>
      </dependency>

      添加依賴項

    4. 編譯presto-hadoop-apache2。

      cd presto-hadoop-apache2
      mvn clean package -DskipTests
    5. 查看生成的hadoop-apache2-2.7.4-9.jar。

      1. 執行以下命令,進入上一級目錄。

        cd ..
      2. 執行以下命令,查看hadoop-apache2-2.7.4-9.jar是否符合預期。

        ll -h presto-hadoop-apache2/target/

        查看

    6. 替換舊JAR包。

      1. 移除舊JAR包。

        mv presto-server-0.265.1/plugin/hive-hadoop2/hadoop-apache2-2.7.4-9.jar presto-server-0.265.1/plugin/hive-hadoop2/hadoop-apache2-2.7.4-9.jar.bak
      2. 將編譯后的hadoop-apache2-2.7.4-9.jar依賴包拷貝到對應目錄下。

        cp presto-hadoop-apache2/target/hadoop-apache2-2.7.4-9.jar  presto-server-0.265.1/plugin/hive-hadoop2/
  9. 配置presto-cli-xxx-executable.jar。

    1. 將下載的presto-cli-xxx-executable.jar復制到presto-server-0.265.1/bin/目錄。

      cp presto-cli-0.265.1-executable.jar  presto-server-0.265.1/bin/
    2. 重命名presto-server-0.265.1/bin/目錄中的presto-cli-xxx-executable.jar。

      mv presto-server-0.265.1/bin/presto-cli-0.265.1-executable.jar  presto-server-0.265.1/bin/presto
    3. 為重新命名的文件添加可執行權限。

      chmod +x presto-server-0.265.1/bin/presto

步驟三:驗證Presto

  1. 執行以下命令,啟動Hive的元數據服務。

    hive --service metastore
  2. 啟動Presto Server并連接Hive Metastore。

    1. 啟動Presto Server。

      presto-server-0.265.1/bin/launcher start
    2. 連接Hive Metastore。

      presto-server-0.265.1/bin/presto  --server localhost:8080 --catalog hive
  3. 通過PrestoHive中創建數據庫。

    1. 文件存儲 HDFS 版實例上創建測試目錄。

      hadoop fs -mkdir dfs://f-xxxxxx.cn-zhangjiakou.dfs.aliyuncs.com:10290/tmp/presto_test
    2. Hive中創建數據庫。

      CREATE SCHEMA hive.prosto_test
      WITH (location = 'dfs://f-xxxxxx.cn-zhangjiakou.dfs.aliyuncs.com:10290/tmp/presto_test');

      創建數據庫

  4. 在剛創建的數據庫中新建表并添加數據。

    1. 進入剛創建的數據庫。

      use prosto_test;
    2. 創建表。

       CREATE TABLE user_info_test (
         user_id bigint,
         firstname varchar,
         lastname varchar,
         country varchar
       )
       WITH (
         format = 'TEXTFILE'
       );
    3. 在剛創建表中插入數據。

      INSERT INTO user_info_test VALUES(1,'Dennis','Hu','CN'),(2,'Json','Lv','Jpn'),(3,'Mike','Lu','USA');

      添加數據

  5. 查看文件存儲 HDFS 版實例上是否有剛創建的表數據。

    hadoop fs -ls dfs://f-xxxxx.cn-zhangjiakou.dfs.aliyuncs.com:10290/tmp/presto_test/*

    如果返回信息顯示剛創建的表數據,則表示Presto可以向文件存儲 HDFS 版寫入數據。

  6. 進行Word Count計算,檢驗Presto能否讀取文件存儲 HDFS 版上的數據并計算。

    SELECT country,count(*) FROM user_info_test GROUP BY country;

    如果返回信息與創建表中的信息一致,則表示Presto可讀取文件存儲 HDFS 版上的數據并計算。user_info_test