当前位置: 首页 > 工具软件 > Airpal > 使用案例 >

Airpal 部署文档

赖杰
2023-12-01

Airpal 部署文档

写在前面: 如果”空气净化器(Airpal)”出现诸如不能查询列信息、打开主页空白等问题,主要问题就是它本身,而不是Presto。本人尝试过Presto 0.145,0.175,0.179三个版本搭配没有版本号的 Airpal(坑货),问题都在于“空气净化器”,至今已有一年它没有更新过了,相反,Presto是个版本帝。

环境

  1. centos 6.4
  2. Node v6.10.3 (当前)
  3. JDK 1.8 (官方:Java 7 or higher)
  4. yum install -y gcc-c++ (编译需要)

1.下载

 git clone https://github.com/airbnb/airpal.git

 (建议)下载Node:
 wget https://nodejs.org/dist/v6.10.3/node-v6.10.3-linux-x64.tar.xz

2.解压

  • 解压airpal unzip airpal.zip
  • 解压Node xz -d node-v6.10.3-linux-x64.tar.xz
    tar -xf node-v6.10.3-linux-x64.tar

2.1 Node 环境变量

Node安装目录 : /opt/node/
# Node
export NODE="/opt/node/bin/"
export PATH=$PATH:$NODE
export NODE_LIB=$NODE/lib
export NODE_ENV='development'  # 预防构建成功并启动,访问主页是发现是空白页面

3.启动步骤

3.1构建Airpal

  • 构建过程中会去下载gradle-2.2.1-all.zip,下载速度很慢很难接受的话,可以手动完成:
 wget https://downloads.gradle.org/distributions/gradle-2.2.1-all.zip
 cp -p gradle-2.2.1-all.zip  /home/hadoop/.gradle/wrapper/dists/gradle-2.2.1-all/c64ydeuardnfqctvr1gm30w53
 ./gradlew -Dairpal.prestoVersion=0.175 clean shadowJar

注: /home/hadoop/.gradle/wrapper/dists/gradle-2.2.1-all/c64ydeuardnfqctvr1gm30w53 该目录是提速关键
新手注意:这里的目录中的用户名应该是你自己的。

使用Gradle构建工具构建后台java代码和基于Node.js构建前端JS代码。

—————————————————— 有Node(当使用本地Node出现编译不过时候,尝试“没有Node”情况的命令):

如果你本机有安装node.js和npm,可以使用本地安装的node.js来构建:
./gradlew clean shadowJar -Dairpal.useLocalNode

—————————————————— 没有Node:————————————————————————

如果本地没有安装,运行如下命令行,可以自动下载node.js和npm:
./gradlew clean shadowJar

你还可以指定特定的presto版本:
./gradlew -Dairpal.prestoVersion=0.175 clean shadowJar

此处有坑:
  • 添加环境变量:
    export NODE_ENV=’development’
    如果构建成功并启动,访问主页是发现是空白页面,那么请添加上述环境变量之后,重新构建并启动,即可正常访问。

3.2创建mysql数据库

为Airpal创建一个数据库,建议就叫airpal

3.3配置文件设置

需要配置一个reference.yml 配置文件,可以直接copy目录里面的示例配置文件。
```
mv reference.example.yml reference.yml   
vim reference.yml
```
```
    # HTTP-specific options.
    # 最好查询设置的端口是否被占用。
    server:
    applicationConnectors:
        - type: http
        port: 8081
        idleTimeout: 10 seconds

    adminConnectors:
        - type: http
        port: 8082

    shiro:
    iniConfigs: ["classpath:shiro_allow_all.ini"]

    dataSourceFactory:
    driverClass: com.mysql.jdbc.Driver
    user: airpal
    password: passwd
    url: jdbc:mysql://localhost:3306/airpal

    flywayFactory:
    locations: ["classpath:db.migration.common", "classpath:db.migration.mysql"]

    # The URL to the Presto coordinator.
    prestoCoordinator: http://prestoCoor:9098
```

3.4数据库初始化

当reference.yml配置了正确的mysql信息后,我们要初始化之前创建的airpal数据库。


java -Duser.timezone=UTC -cp build/libs/airpal-*-all.jar com.airbnb.airpal.AirpalApplication db migrate reference.yml

3.5启动Airpal

直接启动Airpal:
java -server -Duser.timezone=UTC -cp build/libs/airpal-*-all.jar com.airbnb.airpal.AirpalApplication server reference.yml

这里可以将命令直接写成脚本,省去每次复制这串又臭又长的命令。

echo "java -server -Duser.timezone=UTC -cp build/libs/airpal-*-all.jar com.airbnb.airpal.AirpalApplication server reference.yml" > start-airpal.sh  && chmod 744 start-airpal.sh

3.6访问Airpal

根据reference.yml配置的端口号即可访问,如果是使用的默认配置,则访问:http://ip:8081

当然,你在部署的时候可以修改端口号。

报错

  1. 缺少g++
    解决: yum install -y gcc-c++

  2. 无效的源 java 1.8
    解决: 使用本地安装的node.js来构建:
    ./gradlew clean shadowJar -Dairpal.useLocalNode

  3. /opt/node/lib/node_modules/
    解决: 少见的问题:
    让其自动下载node.js和npm,补全缺少的 *类modules
    $ ./gradlew clean shadowJar
    如没编译成功,继续下一步:

    使用本地安装的node.js来构建:
           $ ./gradlew clean shadowJar -Dairpal.useLocalNode
    
  4. 用本地 node 安装:

    Failed at the contextify@0.1.15 install script ‘node-gyp rebuild’.

    参考: http://blog.csdn.net/salmonellavaccine/article/details/51573834

    npm install node-gyp-install && /opt/node/lib/node_modules/node-gyp/bin/node-gyp.js

  5. Table.java:80: 错误: 不兼容的类型: ConnectorId无法转换为String
    使用使用本地 Node 安装;

  6. 指定明确的版本号后,编译失败。

  7. 编译成功后,打开WEB-UI 主页是一片空白。

WEB-UI :

查询表时候:
INFO [2017-06-22 08:25:45,217] com.airbnb.shiro.filter.AllowAllFilter: onAccessDenied called
INFO [2017-06-22 08:25:45,217] com.airbnb.shiro.filter.AllowAllFilter: createToken called
WARN [2017-06-22 08:25:45,218] com.airbnb.shiro.SessionListenerLogger: Saw START of Session: [org.apache.shiro.session.mgt.SimpleSession,id=f56ef730-7999-46fe-aebc-99043fe0f499]
10.0.10.153 - - [22/六月/2017:08:25:45 +0000] “PUT /api/execute HTTP/1.1” 200 47 “http://10.0.10.82:9095/app” “Mozilla/5.0 (Windows NT 6.1; WOW64; rv:53.0) Gecko/20100101 Firefox/53.0” 10

选择表的时候:

ERROR [2017-06-22 08:28:13,837] io.dropwizard.jersey.errors.LoggingExceptionMapper: Error handling a request: abe14b70438bb2ea

Causing: com.google.common.util.concurrent.UncheckedExecutionException: java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Boolean

 类似资料: