目录
入门
云原生
从Docker开始
OS依赖
Python中的virtualenv
Python的设置工具和pip
Superset安装和初始化
适当的WSGI HTTP
Flask-AppBuilder权限
负载均衡器后面的配置
配置
数据库依赖
我的Superset+win10+pycharm开发环境搭建
我的腾讯云Linux服务器搭建superset
Superset已经弃用了Python 2.*并且只支持~=3.6以利用较新的Python特性并减轻支持以前版本的负担。我们对3.6运行测试套件,但3.7也得到了完全支持。
官网地址:http://superset.apache.org/
Superset的设计是高可用的。它是“云原生”的,因为它被设计成在大型分布式环境中向外扩展,并且在容器中运行良好。虽然您可以轻松地在一个适当的设置上或在您的笔记本电脑上测试Superset,但几乎没有扩展平台的限制。Superset也是云本地的,因为它是灵活的,可以让你选择你的Web服务器(GuniCon,NGiNX,Apache),你的元数据数据库引擎(MySQL,PASGRESS,MariaDB,…),你的消息队列(ReDIS,RabByMQ,SQL,…),你的结果后端(S3,ReDIS,MeMcCache,…),你的缓存层(MeMcCache,ReDIS,……)与NewRelic、StatsD和DataDog等服务配合良好,并且能够针对最流行的数据库技术运行分析工作负载。
Superset在有数百个并发用户的大型环境中进行了作战测试。Airbnb的生产环境运行在Kubernetes内部,每天有600多名活跃用户观看超过10万张的图表。
Superset web服务器和Superset Celery 工人(可选)是无状态的,因此您可以根据需要在多个服务器上运行来扩展。
与Docker相关的文件和文档由负责项目的核心提交者积极维护和管理。欢迎您在Docker的帮助和贡献!
如果你认识docker,那么你很幸运,我们有捷径让你初始化开发环境:
git clone https://github.com/apache/incubator-superset/
cd incubator-superset
# you can run this command everytime you need to start superset now:
docker-compose up
在Superset初始化完成几分钟后,您可以打开浏览器并查看http://localhost:8088开始您的旅程。
从那里,容器服务器将在修改superset python和javascript源代码时重新加载。不过,不要忘记重新加载页面以考虑新的前端。
另请参阅CONTRIBUTING.md#building(https://github.com/apache/incubator-superset/blob/master/CONTRIBUTING.md#building),以了解服务前端的其他方法。
当前不建议在生产环境中运行docker-compose。
如果您尝试在Mac上构建,并且退出137,则需要增加docker资源。OSX指令:https : //docs.docker.com/docker-for-mac/#advanced(搜索内存)
或者,如果您好奇并想从下往上安装superset,请继续。
另见docker / README.md(https://github.com/apache/incubator-superset/blob/master/docker/README.md)
Superset将数据库连接信息存储在其元数据数据库中。为此,我们使用cryptography Python库来加密连接密码。不幸的是,该库具有操作系统级别的依赖性。
您可能要尝试下一步(“ Superset安装和初始化”),如果遇到错误,请返回此步骤。
这是安装它们的方法:
对于Debian和Ubuntu,以下命令将确保已安装必需的依赖项:
sudo apt-get install build-essential libssl-dev libffi-dev python-dev python-pip libsasl2-dev libldap2-dev
Ubuntu 18.04如果在Ubuntu 18.04 LTS上默认将python3.6和python2.7一起安装,请同时运行以下命令:
sudo apt-get install build-essential libssl-dev libffi-dev python3.6-dev python-pip libsasl2-dev libldap2-dev
否则,构建cryptography失败。
对于Fedora和RHEL衍生物,以下命令将确保已安装必需的依赖项:
sudo yum upgrade python-setuptools
sudo yum install gcc gcc-c++ libffi-devel python-devel python-pip python-wheel openssl-devel cyrus-sasl-devel openldap-devel
Mac OS X如果可能,您应该升级到最新版本的OS X,因为该版本更有可能解决问题。您可能需要适用于已安装的OS X版本的最新版本的XCode。还应该安装XCode命令行工具:
xcode-select --install
不建议使用系统python。Homebrew的python也带有pip:
brew install pkg-config libffi openssl python
env LDFLAGS="-L$(brew --prefix openssl)/lib" CFLAGS="-I$(brew --prefix openssl)/include" pip install cryptography==2.4.2
目前尚不正式支持Windows,但如果要尝试使用Windows,请下载get-pip.py(https://bootstrap.pypa.io/get-pip.py)并运行,可能需要管理员权限。然后运行以下命令:
python get-pip.py(https://bootstrap.pypa.io/get-pip.py)
C:\> pip install cryptography
# You may also have to create C:\Temp
C:\> md C:\Temp
建议在虚拟环境中安装Superset。Python 3已经发布了virtualenv。但是,如果由于某种原因未将其安装在您的环境中,则可以通过适用于您的操作系统的软件包进行安装,否则可以从pip安装:
pip install virtualenv
您可以通过以下方式创建和激活virtualenv:
# virtualenv is shipped in Python 3.6+ as venv instead of pyvenv.
# See https://docs.python.org/3.6/library/venv.html
python3 -m venv venv
. venv/bin/activate
在Windows上,激活它的语法有些不同:
venv\Scripts\activate
一旦激活了virtualenv,您所做的一切都将限制在virtualenv中。要退出virtualenv,只需键入deactivate。
通过获取最新的pip 和setuptools库,将所有机会都放在您的身边:
pip install --upgrade setuptools pip
请按照以下几个简单步骤安装Superset:
# Install superset
pip install apache-superset
# Initialize the database
superset db upgrade
# Create an admin user (you will be prompted to set a username, first and last name before setting a password)
$ export FLASK_APP=superset
flask fab create-admin
# Load some data to play with
superset load_examples
# Create default roles and permissions
superset init
# To start a development web server on port 8088, use -p to bind to another port
superset run -p 8088 --with-threads --reload --debugger
安装后,您应该能够将浏览器指向正确的主机名:端口http:// localhost:8088,使用在创建admin帐户时输入的凭据登录,并导航至 Menu-> Admin-> Refresh Metadata。此操作应为Superset引入所有数据源,并让它们显示在Menu- > Datasources中,您可以从此处开始处理数据!
虽然您可以将Superset设置为在Nginx或Apache上运行,但是许多人都使用Gunicorn,最好是在异步模式下使用,这甚至可以实现令人印象深刻的并发性,并且安装和配置都非常容易。请参考您首选技术的文档,以在您的环境中正常运行的方式来设置此Flask WSGI应用程序。这是一个 众所周知的异步设置,可以在生产中很好地工作:
gunicorn \
-w 10 \
-k gevent \
--timeout 120 \
-b 0.0.0.0:6666 \
--limit-request-line 0 \
--limit-request-field_size 0 \
--statsd-host localhost:8125 \
"superset.app:create_app()"
有关更多信息,请参考 Gunicorn文档(https://docs.gunicorn.org/en/stable/design.html)。
请注意,开发Web服务器(superset运行或flask运行)不适用于生产。
如果不使用gunicorn,则可能要通过在superset_config.py中设置ENABLE_FLASK_COMPRESS = False来禁用flask-compress。
默认情况下,每次Flask-AppBuilder(FAB)应用初始化时,权限和视图都会自动添加到后端并与“管理员”角色关联。但是,问题是,当您运行多个并发工作程序时,这会在定义权限和视图时创建很多竞争和竞争条件。
要缓解此问题,可以通过设置FAB_UPDATE_PERMS = False(默认值为True)来禁用权限的自动更新。
在生产环境中,初始化可以采用以下形式:
Superset初始化gunicorn -w 10…superset:app
如果您正在负载均衡器或反向代理(例如AWS上的NGINX或ELB)后面运行superset,则可能需要利用运行状况检查端点,以便负载均衡器知道您的superset实例是否正在运行。/health如果Web服务器正在运行,则提供此选项将返回200响应,其中包含“确定”。
如果负载平衡器正在插入X-Forwarded-For / X-Forwarded-Proto标头,则应在superset配置文件中将ENABLE_PROXY_FIX = True设置为提取和使用标头。
如果反向代理用于提供ssl加密,则可能需要X-Forwarded-Proto的明确定义。对于Apache Web服务器,可以如下设置:
RequestHeader set X-Forwarded-Proto "https"
要配置您的应用程序,您需要创建一个文件(模块) superset_config.py并确保它在您的PYTHONPATH中。以下是您可以在该配置模块中复制/粘贴的一些参数:
#---------------------------------------------------------
# Superset specific config
#---------------------------------------------------------
ROW_LIMIT = 5000
SUPERSET_WEBSERVER_PORT = 8088
#---------------------------------------------------------
#---------------------------------------------------------
# Flask App Builder configuration#---------------------------------------------------------
# Your App secret key
SECRET_KEY = '\2\1thisismyscretkey\1\2\e\y\y\h'
# The SQLAlchemy connection string to your database backend
# This connection defines the path to the database that stores your# superset metadata (slices, connections, tables, dashboards, ...).
# Note that the connection information to connect to the datasources
# you want to explore are managed directly in the web UI
SQLALCHEMY_DATABASE_URI = 'sqlite:////path/to/superset.db'
# Flask-WTF flag for CSRF
WTF_CSRF_ENABLED = True
# Add endpoints that need to be exempt from CSRF protection
WTF_CSRF_EXEMPT_LIST = []
# A CSRF token that expires in 1 year
WTF_CSRF_TIME_LIMIT = 60 * 60 * 24 * 365
# Set this API key to enable Mapbox visualizations
MAPBOX_API_KEY = ''
https://github.com/apache/incubator-superset/blob/master/superset/config.py中定义的所有参数和默认值 都可以在本地更改superset_config.py。管理员将希望通读该文件以了解可以在本地配置的内容以及适当的默认值。
由于superset_config.py用作Flask配置模块,它可以被用于改变设置它本身,以及Flask扩展喜欢flask-wtf,flask-cache, flask-migrate,和flask-appbuilder。Superset所使用的Web框架Flask App Builder提供了许多配置设置。请参阅Flask App Builder文档 (https://flask-appbuilder.readthedocs.org/en/latest/config.html)以获取有关如何配置它的更多信息。
确保更改:
SQLALCHEMY_DATABASE_URI,默认情况下,它存储在〜/ .superset / superset.db中
SECRET_KEY,以一个长随机字符串,如果您需要从CSRF中豁免端点,例如您正在运行自定义auth回发端点,则可以将其添加到WTF_CSRF_EXEMPT_LIST
WTF_CSRF_EXEMPT_LIST = ['']
除了SQLite(它是Python标准库的一部分)外,Superset并没有捆绑与数据库的连接。您需要为要用作元数据数据库的数据库安装必需的软件包,以及与要通过Superset访问的数据库连接所需的软件包。
这是一些推荐软件包的列表:
|
请注意,还支持许多其他数据库,主要标准是功能性SqlAlchemy方言和Python驱动程序的存在。sqlalchemy除了描述您要连接的数据库的关键字外,还应使用Google搜索该关键字,以使您到达正确的位置。
以上的安装和配置是官网的,下面的这个是我自己在我的win10上搭建的开发环境。
使用pycharm从githup下载superset,或者直接下载superset的zip包
Githup地址:https://github.com/apache/incubator-superset.git
使用pycharm创建虚拟环境
将下载好的superset包,放到上图中的虚拟空间superset_dev2下面,如下图所示:
idea导入superset并自动刷新
现在superset已经成功导入到idea,接下来的所有命令均在idea的Terminal里面操作
创建软链接
mklink /J "D:\worker\idatafun\superset_dev2\incubator-superset\superset\static\assets" "D:\worker\idatafun\superset_dev2\incubator-superset\superset\assets"
别忘了替换成的你安装路径
安装
pip install -e .
一般都会成功,如果不成功,请查看我的另一章,《关于superset的那些坑》
初始化superset,执行命令的目录应在:
flask fab create-admin (在执行这条命令之前选择好数据库在config.py里面配置好数据库,如果使用mysql数据库那么就需要确保pip install mysqlclient安装依赖,用户名和密码一定要记住,后面登录的时候要用。)
python superset db upgrade
python superset load_examples
python superset init
前端打包
npm run build
npm run dev
运行superset
点击Pycharm的右上角configurations,进入进行编辑如下:
然后点击Apply,再点击ok,运行就可以了
查看http://127.0.0.1:8088/
我的本地开发环境搭建完毕!!!可以开发了。
安装python3.6+环境,并且配置环境变量,具体安装自行百度。
运行虚拟环境(也可以配置到变量里面)
安装依赖
yum install gcc gcc-c++ libffi-devel python-devel python-pip python-wheel openssl-devel libsasl2-devel openldap-devel python-setuptools python-virtualenv -y mysqlclient
安装所有支持及软件
source superset-py3/bin/activate
运行 pip install –upgrade setuptools pip -i https://pypi.douban.com/simple 安装setuptools 与 pip(后面的-i https://pypi.douban.com/simple 为指定源)
安装superset
运行 pip install superset
配置和初始化
运行 fabmanager create-admin –app superset 创建admin账户并设置相应信息(如果这条命令不行的话,用这个命令flask fab create-admin)
运行 superset db upgrade 初始化数据库
运行 superset load_examples 初始化数据
运行 superset init 初始化SuperSet
运行superset run -p 8088 启动superset
访问http://127.0.0.1:8088/