superset0.36.0源码安装部署及问题汇总

superset官方文档

一:配置服务器环境

1.安装python3

注意:centos和ubuntu安装python3之前都需要安装依赖

安装完成后需要对python3建立软链接,或者写入环境变量。

以centos为例子:

1) 安装依赖

yum -y groupinstall "Development tools"
yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel
yum install libffi-devel -y

2) 解压安装

解压下载好的安装包

tar -xvJf   python-------.tar.xz
mkdir /usr/local/python3 #创建编译安装目录
cd python------

配置安装目录和安装

./configure --prefix=/usr/local/python3
make && make install

3) 创建软连接

ln -s /usr/local/python3/bin/python3 /usr/local/bin/python3
ln -s /usr/local/python3/bin/pip3 /usr/local/bin/pip3

4)更新pip 和 setuptools包

pip3 install --upgrade setuptools

系统不一样更新命名有差别,如果是最新的就不用更新了。

参考自 https://www.cnblogs.com/anxminise/p/9650206.html

2, 安装nodejs

从官网下载nodejs,每个平台的安装方法不一样。

Centos,下载nodejs版本为v12.18.2,对应的npm版本为6.14.5

下载node-v12.18.2-linux-x64.tar.xz版本的nodejs,其他版本也可以,但是别太旧

tar -xvf node-v12.18.2-linux-x64.tar.xz

解压即可,不用安装。重命名放到某个目录下(usr/local/node)

创建软连接

ln -s /usr/local/node/bin/node /usr/bin/node
ln -s /usr/local/node/bin/npm /usr/bin/npm

执行node -v, npm -v 可以显示版本号即可。

(注意:

1,出现过没有权限的错误,cd到/usr/local/node/bin目录下,执行 sudo chmod +rx node和sudo chmod +rx npm

2, Nodejs版本不可以太低,要不然后面会出问题)

参考自 https://www.jianshu.com/p/ea0fe8d177c0

3. 下载superset

从github上下载apache-superset0.36.0版本的superset

二. 安装步骤

1,配置虚拟环境

先配置python3的环境,然后用 pip3 install virtualenv安装虚拟环境模块
centos系统需要为virtualenv创建软连接。

ln -s /usr/local/python3/bin/virtualenv /usr/bin/virtualenv #创建软连接

2,创建虚拟环境

创建superset目录,在superset目录下创建虚拟环境

virtualenv env

把下载的superset0.36.0源码(文件夹名为incubator-superset)拷贝到superset目录下。

3,激活虚拟环境和更新包

在superset目录下的终端执行

source /env/bin/activate

以下步骤皆在env虚拟环境下执行,执行命令时前面有(env)的标识就是在虚拟环境中执行的。

更新env环境中的pip 和 setuptools包。

python -m pip install -U pip setuptools

4,安装扩展依赖,及开发依赖

指定豆瓣源,原始源很慢,在安装requirements-dev.txt之前需要把文本中mypy和psycopg2-binary模块的版本号去掉,要不然会报错。

#进入到目录
cd incubator-superset
pip install -r requirements.txt -i https://pypi.douban.com/simple/

安装开发依赖
pip install -r requirements-dev.txt -i https://pypi.douban.com/simple/

#1.psycopg2-binary 模块的版本去掉
#2.typed-ast 模块去掉版本号       

5.安装superset

pip install -e .

6. 开始配置superset

# 创建用户并按提示设置密码
superset fab create-admin

# 初始化数据库
superset db upgrade


# 初始化角色和权限
superset init


# 在本机8088端口运行superset
superset run -p 8088

远端运行superset时,要写上主机host的iP地址。最后一步改成

superset run -h host -p 8088

#或者

superset run -h 0.0.0.0 -p 8088

#在后台启动,输出重新定向到a.txt

superset run -h 0.0.0.0 -p 8088 &>> a.txt &
#后面一个&在后台启动服务
#&>> a.txt 输出重定向到当前目录的a.txt

#不挂起后台启动,不会自动中断服务。
nohup superset run -h 0.0.0.0 -p 8088 > output.txt 2>&1 &

到这里,superset的后端编译,和配置设置都已经结束。

7.前端组件的编译

# 进入到目录superset-frontend下
cd superset-frontend

npm install -d  #没有报红色的错误即可
# 这里有时候可能会用到强制安装命令
npm install --no-optional --no-shrinkwrap --no-package-lock

npm run build

npm run dev #这步执行结束后不会结束,是一个监听界面,可以ctrl+c结束也没有影响。

npm run build这一步会报很多错误,每个系统都不太一样。

npm insatll 安装失败可以尝试换npm的源

npm install -g cnpm --registry=https://registry.npm.taobao.org

#为cnpm建立软连接
ln -s /usr/local/node/bin/cnpm /usr/bin/cnpm

就这一步报错的总结:

  1. 首先检测nodejs和npm的版本,太低就要更新。

  2. centos系统出现的报错。

# 一:模块报错
Cannot find module '@babel/compat-data/corejs3-shipped-proposals
#解决办法
npm install @babel/compat-data #在superset-frontend下执行

#二:内存溢出的错误
#修改webpack.config.js文件。
#在performance中添加字段,大约在177行
hints:'warning',
maxEntrypointSize: 50000000,
maxAssetSize: 30000000,

  1. ubuntu系统的报错。
# 一:@babel/plugin-proposal-private-methods和@babel/plugin-proposal-class-properties的loose值不一致。
#修改.../incubator-superset-0.36.0/superset-frontend/babel.config.js,添加两行,将loose都设置为true.   43——50行
  plugins: [
    'lodash',
    '@babel/plugin-syntax-dynamic-import',
    //'@babel/plugin-proposal-class-properties', //这行需注释掉。
    '@babel/plugin-proposal-optional-chaining',
    ['@babel/plugin-transform-runtime', { corejs: 3 }],
    'react-hot-loader/babel',
	['@babel/plugin-proposal-private-methods', { 'loose': true }],//新增的,将loose设为true
	['@babel/plugin-proposal-class-properties', { 'loose': true }],//新增的,将loose设为true
  ],

# 二: Property 'hidden' does not exist on type 'ColumnInstance<{}>'.

# 修改TableCollection.tsx文件 位于superset-frontend/src/components/ListView

#修改44行,修改前
{headerGroup.headers.map(column =>
#修改后
{headerGroup.headers.map((column:any) =>
 
 
#修改82行,修改前
{row.cells.map(cell:any => {
#修改后
{row.cells.map((cell:any) => {

这里只是列举出来了一些错误,可能会有其他错误,根据报错信息修改即可。

另外:需要在环境中安装mysqlclient包,censtos系统安装会报错。
需要安装依赖。

yum install python3

yum install mariadb-devel

#最后在安装mysqlclient即可

pip install mysqlclient

参考自:

https://blog.csdn.net/weixin_42036641/article/details/106479093

https://blog.csdn.net/yun_hou/article/details/87818475

到这里superset前端组件也编译完成。可以正常启动superset。

后面的集成echarts,二次开发只需要修改对应的源码组件,然后用npm编译即可。

上一篇:Apache Superset成为ASF*项目


下一篇:Apache老母鸡又下蛋?一文俯瞰Apache Superset