当前位置: 首页 > article >正文

在AWS EC2中部署和使用Apache Superset的方案

大纲

  • 1 Superset部署
    • 1.1 启动AWS EC2
    • 1.2 下载Superset Docker文件
    • 1.3 修改Dockerfile
    • 1.4 配置管理员
    • 1.5 结果展示
    • 1.6 检查数据库驱动
    • 1.7 常见错误处理
  • 2 Glue(可选参考)
  • 3 IAM与安全组
    • 3.1 使用AWS Athena
    • 3.2 使用AWS RedShift或AWS RDS
      • 3.2.1 查看AWS Redshift集群VPC安全组
      • 3.2.2 设置Superset所在AWS EC2实例的安全组
      • 3.2.3 添加入站规则
  • 4 Superset配置数据源并创建Dashboard
    • 4.1 连接AWS Athena
    • 4.2 连接AWS Redshift
  • 5 Superset教程

本文将讲解如何在AWS EC2中部署Apache Superset,并通过AWS Glue连接AWS S3、AWS RDS、AWS RedShift中的数据,进行可视化展现。

1 Superset部署

1.1 启动AWS EC2

启动一台Amazon Linux EC2并安装启动docker环境,需要机型为t.xlarge及以上,EBS盘20GB以上。

sudo yum update -y

# install python3 gcc
sudo yum install -y python3 libpq-dev python3-dev
sudo yum install -y gcc gcc-c++

# add following into ~/.bashrc
echo "export PATH=/usr/local/bin:$PATH" >> ~/.bashrc
echo "alias python=python3" >> ~/.bashrc
echo "alias pip=pip3" >> ~/.bashrc
source ~/.bashrc
python --version

# install docker
sudo yum -y install docker
sudo usermod -a -G docker ec2-user
sudo systemctl start docker
sudo systemctl status docker
sudo systemctl enable docker
sudo chmod 666 /var/run/docker.sock
docker ps

# install docker-compose
sudo curl -L "https://github.com/docker/compose/releases/download/1.25.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
docker-compose --version

1.2 下载Superset Docker文件

sudo yum install -y git curl
git clone https://github.com/apache/incubator-superset/

1.3 修改Dockerfile

cd incubator-superset
vi Dockerfile

在末尾添加

RUN pip install PyAthenaJDBC \    #这个是athena连接
        && pip install PyAthena \ #这个是athena连接
        && pip install psycopg2 \
        && pip install sqlalchemy-redshift # 这个是redshift连接

构建

docker-compose build
docker-compose up

1.4 配置管理员

需要配置管理员用户权限,在docker/docker-init.sh中默认创建用户admin(密码也是admin)但权限并没有更新,通过以下命令更新权限。

#进入docker
docker-compose exec superset bash
superset init

1.5 结果展示

配置成功后,Superset默认使用8088端口,使用http://<EC2 公有IP>:8088访问,默认用户名和密码均为admin 可在Dockerfile、docker中命令、管理页面更改。
在这里插入图片描述

1.6 检查数据库驱动

查看数据库驱动是否安装成功。
在这里插入图片描述
在这里插入图片描述若没有


#进入docker
docker-compose exec superset bash
#安装  athena 和redshift驱动
pip install PyAthenaJDBC \
        && pip install PyAthena \
        && pip install psycopg2 \
        && pip install sqlalchemy-redshift

1.7 常见错误处理

build中如果出现error

ERROR: Couldn't connect to Docker daemon at http+docker://localunixsocket - is it running?

原因:

  1. docker 没有启动
sudo systemctl start docker
  1. 用户不再docker用户组里面
sudo gpasswd -a ${USER} docker

如果是第二个,请退出shell 再次登陆

2 Glue(可选参考)

  • 创建Glue
    见《基于AWS Serverless的Glue服务进行ETL(提取、转换和加载)数据分析(一)——创建Glue》
  • 数据清洗、转换
    见《基于AWS Serverless的Glue服务进行ETL(提取、转换和加载)数据分析(二)——数据清洗、转换》

3 IAM与安全组

部署Superset的AWS EC2附加的IAM角色需要有AWS Athena查询和Glue Catalog的权限,为方便起见可以赋予AthenaFullAccess和GlueFullAccess。但实际情况请按照最小权限原则来保障安全。

3.1 使用AWS Athena

如果在 Amazon Athena中运行查询时,出现 “Access Denied”(拒绝访问)错误。

Your query has the following errors:Access denied when writing output to url: s3://my-athena-result-bucket/Unsaved/2021/05/07/example_query_ID.csv . Please ensure you are allowed to access the S3 bucket. If you are encrypting query results with KMS key, please ensure you are allowed to access your KMS key

向 IAM 用户授予所需的权限。以下 IAM 策略允许源数据存储桶和查询结果存储桶的最低权限:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:ListBucket"
            ],
            "Resource": [
                "arn:aws:s3:::【数据源的s3名称】"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetObject"
            ],
            "Resource": [
                "arn:aws:s3:::【数据源的s3名称】/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetBucketLocation",
                "s3:GetObject",
                "s3:ListBucket",
                "s3:ListBucketMultipartUploads",
                "s3:AbortMultipartUpload",
                "s3:PutObject",
                "s3:ListMultipartUploadParts"
            ],
            "Resource": [
                "arn:aws:s3:::【存储Athena查询结果的s3名称】",
                "arn:aws:s3:::【存储Athena查询结果的s3名称】/*"
            ]
        }
    ]
}

请务必在此示例策略中替换【】中的内容。

3.2 使用AWS RedShift或AWS RDS

此处以AWS RedShift集群为例。

3.2.1 查看AWS Redshift集群VPC安全组

在这里插入图片描述

3.2.2 设置Superset所在AWS EC2实例的安全组

在这里插入图片描述
在这里插入图片描述

3.2.3 添加入站规则

在这里插入图片描述
在这里插入图片描述

4 Superset配置数据源并创建Dashboard

此处提供了AWS Athena与AWS RedShift的连接教程,其他JDBC语法请看官方文档。

4.1 连接AWS Athena

awsathena+rest://@athena.{region}.amazonaws.com.cn/<Glue数据库表>?s3_staging_dir=<用来存储查询结果的S3地址>

在这里插入图片描述
测试连接
在这里插入图片描述

4.2 连接AWS Redshift

redshift+psycopg2://<userName>:<DBPassword>@<AWS End Point>:<port>/<Database Name>

在这里插入图片描述
创建连接
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5 Superset教程

  1. 简单教学
  2. superset官方文档

http://www.kler.cn/a/158995.html

相关文章:

  • 【windows】校园网AP隔离解决方案笔记-解决校内设备之间无法互相通信的臭毛病-附破解程序
  • 快排和归并
  • 【项目开发】理解SSL延迟:为何HTTPS比HTTP慢?
  • 24-Ingest Pipeline Painless Script
  • vue3中pinia状态管理库使用以及持久化配置方法总结
  • 小版本大不同 | Navicat 17 新增 TiDB 功能
  • 【开源】基于JAVA的校园疫情防控管理系统
  • JeecgBoot 框架升级 Spring Boot 3.1.5
  • ifstream读取txt中的中文数据转成QString出现乱码
  • ArcGIS点集之间两两连线
  • CMake中的include函数
  • vue3项目实现文档 JSON 格式和 Excel 表格的在线预览,(智能搜索,未验证)
  • 【前端】html不渲染换行\n\t\r等的问题
  • HPV专家谭巍主任谈:我国HPV感染率问题,以及该如何预防?
  • 云原生周刊:K8s 的 YAML 技巧 | 2023.12.4
  • 24、pytest通过xfail将测试函数标记为预期失败
  • UE小:UE5性能分析
  • 27、卷积 - 卷积特征的可视化和一个神奇的网站
  • Kafka Schema介绍
  • Git版本控制---入门学习
  • 解决vue ssr服务端渲染运行时报错:net::ERR_PROXY_CONNECTION_FAILED
  • Retrofit的转换器
  • 迅为RK3588开发板定制Ubuntu和Debian系统-系统定制(无法联网)
  • 财报解读:立足海外音视频直播战场,欢聚的BIGO盾牌还需加强?
  • BearPi Std 板从入门到放弃 - 后天篇(2)(I2C1读写EEPROM)
  • Windows11系统下MemoryCompression导致内存占用率过高