Centos7.6系统里安装Superset,连接ClickHouse

本文是在centos 7 虚拟机中安装Superset和clickhouse

安装python3环境

Centos7.6默认有python2,要先安装python3,下边这个python3安装教程很详细。

参考连接:CentOS7下安装Python3,超详细完整教程_centos7安装python3_清香可口柑的博客-CSDN博客​​​​​​

在安装过程中会遇到 环境变量配置的相关内容,对~/.bash_profile 配置文件的修改方法,可以参考这个连接:

修改vim .bash_profile_vim ~/.bash_profile_SmallMartin的博客-CSDN博客

安装 ClickHouse

1. 添加 ClickHouse 的 YUM 源:

sudo yum install -y yum-utils 
sudo rpm --import https://repo.clickhouse.tech/CLICKHOUSE-KEY.GPG 
sudo yum-config-manager --add-repo https://repo.clickhouse.tech/rpm/stable/x86_64

2. 安装 ClickHouse:

sudo yum install -y clickhouse-server clickhouse-client

3. 启动 ClickHouse 服务:

sudo systemctl enable clickhouse-server 
sudo systemctl start clickhouse-server

安装 Superset

1. 安装依赖包:

sudo yum install -y gcc gcc-c++ libffi-devel python-devel python-pip python-wheel openssl-devel libsasl2-devel openldap-devel

2. 安装 Superset:

sudo pip3 install superset

然后需要将superset 配置环境变量,与配置python3、pip3的方法类似。

a. 找到Superset执行文件的位置,使用find命令:

sudo find / -name superset

这里可能会返回很多,选择一个就可以,我的路径是 /home/Python-3.6.10/bin/superset

b. 手动将 Superset 的执行文件添加到 PATH 路径中,方法与配置python3 和 pip3 的类似,可以编辑 ~/.bashrc~/.bash_profile 文件
i 输入命令:

vi ~/.bash_profile

ii 键入I,进入 Insert模式,编辑该文件,在文件末尾添加:

export PATH=/path/to/superset/bin:$PATH

注意:其中 /path/to/superset /bin 是 superset 命令所在的目录,例如我的这行代码就是export PATH=/home/Python-3.6.10/bin:$PATH,不需要加superset那一层

iii编辑完时候按 Esc退出编辑,输入: 不编辑文本即为推出成功,输入wq 保存

iiii 更新环境变量

source ~/.bash_profile

3. 安装环境
如果忽略这步,直接第4步也是可以的,可能会提醒No module named 'xxx',可以缺什么就补什么pip3 install xxx,但是需要考虑flask、werkzeug等的版本问题,推荐使用以下方法下载指定的版本:
i 新建一个superset_requirements.txt文本文档,

vi superset_requirements.txt

ii 在这个文件中添加以下内容:

#
# This file is autogenerated by pip-compile
# To update, run:
#
#    pip-compile --output-file=requirements.txt setup.py
#
alembic==1.3.2            # via flask-migrate
amqp==2.5.2               # via kombu
apispec[yaml]==1.3.3      # via flask-appbuilder
attrs==19.3.0             # via jsonschema
babel==2.8.0              # via flask-babel
backoff==1.10.0           # via apache-superset (setup.py)
billiard==3.6.3.0         # via celery
bleach==3.1.0             # via apache-superset (setup.py)
celery==4.4.1             # via apache-superset (setup.py)
cffi==1.13.2              # via cryptography
click==7.1.1              # via apache-superset (setup.py), flask, flask-appbuilder
colorama==0.4.3           # via apache-superset (setup.py), flask-appbuilder
contextlib2==0.6.0.post1  # via apache-superset (setup.py)
croniter==0.3.31          # via apache-superset (setup.py)
cryptography==2.8         # via apache-superset (setup.py)
decorator==4.4.1          # via retry
defusedxml==0.6.0         # via python3-openid
flask-appbuilder==2.2.4   # via apache-superset (setup.py)
flask-babel==1.0.0        # via flask-appbuilder
flask-caching==1.8.0      # via apache-superset (setup.py)
flask-compress==1.4.0     # via apache-superset (setup.py)
flask-jwt-extended==3.24.1  # via flask-appbuilder
flask-login==0.4.1        # via flask-appbuilder
flask-migrate==2.5.2      # via apache-superset (setup.py)
flask-openid==1.2.5       # via flask-appbuilder
flask-sqlalchemy==2.4.1   # via flask-appbuilder, flask-migrate
flask-talisman==0.7.0     # via apache-superset (setup.py)
flask-wtf==0.14.2         # via apache-superset (setup.py), flask-appbuilder
flask==1.1.1              # via apache-superset (setup.py), flask-appbuilder, flask-babel, flask-caching, flask-compress, flask-jwt-extended, flask-login, flask-migrate, flask-openid, flask-sqlalchemy, flask-wtf
geographiclib==1.50       # via geopy
geopy==1.20.0             # via apache-superset (setup.py)
gunicorn==20.0.4          # via apache-superset (setup.py)
humanize==0.5.1           # via apache-superset (setup.py)
importlib-metadata==1.4.0  # via jsonschema, kombu
isodate==0.6.0            # via apache-superset (setup.py)
itsdangerous==1.1.0       # via flask
jinja2==2.10.3            # via flask, flask-babel
jsonschema==3.2.0         # via flask-appbuilder
kombu==4.6.8              # via celery
mako==1.1.1               # via alembic
markdown==3.1.1           # via apache-superset (setup.py)
markupsafe==1.1.1         # via jinja2, mako
marshmallow-enum==1.5.1   # via flask-appbuilder
marshmallow-sqlalchemy==0.21.0  # via flask-appbuilder
marshmallow==2.19.5       # via flask-appbuilder, marshmallow-enum, marshmallow-sqlalchemy
more-itertools==8.1.0     # via zipp
msgpack==0.6.2            # via apache-superset (setup.py)
numpy==1.18.1             # via pandas, pyarrow
pandas==0.25.3            # via apache-superset (setup.py)
parsedatetime==2.5        # via apache-superset (setup.py)
pathlib2==2.3.5           # via apache-superset (setup.py)
polyline==1.4.0           # via apache-superset (setup.py)
prison==0.1.2             # via flask-appbuilder
py==1.8.1                 # via retry
pyarrow==0.16.0           # via apache-superset (setup.py)
pycparser==2.19           # via cffi
pyjwt==1.7.1              # via flask-appbuilder, flask-jwt-extended
pyrsistent==0.15.7        # via jsonschema
python-dateutil==2.8.1    # via alembic, apache-superset (setup.py), croniter, flask-appbuilder, pandas
python-dotenv==0.10.5     # via apache-superset (setup.py)
python-editor==1.0.4      # via alembic
python-geohash==0.8.5     # via apache-superset (setup.py)
python3-openid==3.1.0     # via flask-openid
pytz==2019.3              # via babel, celery, flask-babel, pandas
pyyaml==5.3               # via apache-superset (setup.py), apispec
retry==0.9.2              # via apache-superset (setup.py)
selenium==3.141.0         # via apache-superset (setup.py)
simplejson==3.17.0        # via apache-superset (setup.py)
six==1.14.0               # via bleach, cryptography, flask-jwt-extended, flask-talisman, isodate, jsonschema, pathlib2, polyline, prison, pyarrow, pyrsistent, python-dateutil, sqlalchemy-utils, wtforms-json
sqlalchemy-utils==0.36.1  # via apache-superset (setup.py), flask-appbuilder
sqlalchemy==1.3.12        # via alembic, apache-superset (setup.py), flask-sqlalchemy, marshmallow-sqlalchemy, sqlalchemy-utils
sqlparse==0.3.0           # via apache-superset (setup.py)
urllib3==1.25.8           # via selenium
vine==1.3.0               # via amqp, celery
webencodings==0.5.1       # via bleach
werkzeug==0.16.0          # via flask, flask-jwt-extended
wtforms-json==0.3.3       # via apache-superset (setup.py)
wtforms==2.2.1            # via flask-wtf, wtforms-json
zipp==2.0.0               # via importlib-metadata

# The following packages are considered to be unsafe in a requirements file:
# setuptools

参考:superset所需环境的博客
iii 在该文件目录下,安装依赖包

pip3 install -r superset_requirements.txt 

4. 初始化数据库:
如果不是第一次启动,直接这两个命令就可以初始化数据库,

# 创建一个空数据库
superset db upgrade
# superset初始化
superset init

在你第一次启动 Superset 时,需要创建一个管理员帐户,步骤如下
i 创建一个空数据库

superset db upgrade

ii 创建一个管理员账户

export FLASK_APP=superset
export FLASK_ENV=development
superset fab create-admin

我的版本是0.999.0,会遇到 no such command "create-admin" 的错误,可能是因为superset版本比较旧,可以使用以下这个命令

FLASK_APP=superset FLASK_ENV=production superset fab create-admin

之后会提醒设置用户名和密码,创建完成后,就可以使用这个帐户登录Superset 了。

iii 加载数据

iiii 初始化superset环境

superset init

5. 启动 Superset:
i在虚拟机中,可以使用以下命令来查看虚拟机的 IP 地址:

ifconfig

在命令输出中,找到网络接口的 IP 地址,通常以 eth0enp0s3 等命名,例如:

eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.100  netmask 255.255.255.0  broadcast 192.168.1.255
        ...

在这个例子中,虚拟机的 IP 地址为 192.168.1.100。然后,在启动 Superset 时,将 superset run 命令中的 -h 参数设置为这个 IP 地址,例如:

superset run -h 192.168.1.100 -p 8088 --with-threads --reload --debugger

这将使 Superset 只监听虚拟机的 IP 地址 192.168.1.100,并使用端口号为 8088。此时,你可以使用主机上的浏览器来访问 Superset,只需在浏览器中输入虚拟机的 IP 地址和端口号即可。

6. 访问 Superset 网页界面:
在浏览器中访问 http://IP地址:端口号,即可打开 Superset 的网页界面,开始使用。例如:http://192.168.1.100:8088

Superset 连接 Clickhouse

1. 安装 ClickHouse 数据库驱动:
如果需要连接 ClickHouse 数据库,还需要安装 ClickHouse 数据库驱动。安装的时候需要注意版本号是否匹配。

i 安装 greenlet

sudo pip3 install greenlet==0.4.17 -i https://pypi.tuna.tsinghua.edu.cn/simple```

ii 安装clickhouse-sqlalchemy

sudo pip3 install clickhouse-sqlalchemy==0.1.5 -i https://pypi.tuna.tsinghua.edu.cn/simple

2. Superset 连接 clickhouse数据库
完成上一章的第6步,进入到superset系统后,点击source中的databases
在这里插入图片描述
点击右上角的➕
在这里插入图片描述
在这里插入图片描述

Database中填写在superset中的新名称,SQLAlchemyURL的格式为:

clickhouse://<username>:<password>@<host>:<port>/<database>

其中:

  • <username>:ClickHouse 数据库的用户名(如果没有设置用户名,默认default)
  • <password>:ClickHouse 数据库的密码(如果没有设置密码,则留空)
  • <host>:ClickHouse 数据库的主机名或 IP 地址,如果和superset是一台主机,可以用localhost,或者127.0.0.1
  • <port>:ClickHouse 数据库的端口号,默认是 8123,检测端口是否已经打开且可以访问http://localhost:8123,返回ok既是没有问题
  • <database>:需要连接的 ClickHouse 数据库名

例如,假设 ClickHouse 数据库的 IP 地址、端口号是默认的 ,也没有设置用户名和密码,需要连接的数据库名是 mydatabase,那么对应的 SQLAlchemy URL 是:

clickhouse://default:@localhost:8123/mydatabase

勾选Allow Csv Upload ,Allow CREATE TABLE AS, Allow DML
点击Test Connection,返回Seems OK!即连接上了,点击Save保存。

参考博客:CLICKHOUSE+SUPERSET搭建数据平台(三)-SUPERSET安装并连接CLICKHOUSE–灰信网

容易报错的点

  1. 使用superset 命令行的时候,提醒 “superset: 未找到命令…”

    首先检查已经完成了pip install superset 的步骤,如果完成了,找一下是否已经有superset,使用find命令:

    sudo find / -name superset
    

    如果存在,检查是否加入环境变量,参考《安装superset》章节中的第2步;
    如果已经加入环境变量,就用source命令激活一下环境变量就可以了。

    source ~/.bash_profile
    
  2. 安装click-sqlalchemy出现的各种错误:
    指定要安装的greenletclick-sqlalchemy版本,参考《Superset 连接 Clickhouse》章节的 第一步

  3. superset所需要的依赖,按照版本装,不然容易冲突,参考《安装Superset》的第三步。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1、ETL(Extract-Transform-Load的缩写,即数据抽取、转换、装载的过程),对于企业或行业应用来说,我们经常会遇到各种数据的处理,转换,迁移,所以掌握一个ETL工具的使用,必不可少。Kettle作为ETL工具是非常强大和方便的。Kettle是一款国外开源的ETL工具,纯java编写,可以在Window、Linux、Unix上运行,绿色无需安装,数据抽取高效稳定。Kettle中文名称叫水壶,该项目的主程序员MATT希望把各种数据放到一个壶,然后以一种指定的格式流出。Kettle这个ETL工具集,它允许你管理来自不同数据库的数据,通过提供一个图形化的用户环境来描述你想做什么,而不是你想怎么做。Kettle中有两种脚本文件,transformation和job,transformation完成针对数据的基础转换,job则完成整个工作流的控制。2、Clickhouse 是俄罗斯的“百度”Yandex公司在2016年开源的,一款针对大数据实时分析的高性能分布式数据库,与之对应的有hadoop生态hive,Vertica和百度出品的palo。这是战斗民族继nginx后,又开源的一款“核武器”。Hadoop 生态体系解决了大数据界的大部分问题,当然其也存在缺点。Hadoop 体系的最大短板在于数据处理时效性。基于 Hadoop 生态的数据处理场景大部分对时效要求不高,按照传统的做法一般是 T + 1 的数据时效。即 Trade + 1,数据产出在交易日 + 1 天。ClickHouse 的产生就是为了解决大数据量处理的时效性。独立于Hadoop生态圈。3、Superset 是一款由 Airbnb 开源的“现代化的企业级 BI(商业智能) Web 应用程序”,其通过创建和分享 dashboard,为数据分析提供了轻量级的数据查询和可视化方案。 Superset 的前端主要用到了 React 和 NVD3/D3,而后端则基于 Python 的 Flask 框架和 Pandas、SQLAlchemy 等依赖库,主要提供了这几方面的功能:01、集成数据查询功能,支持多种数据库,包括 MySQL、PostgresSQL、Oracle、SQL Server、SQLite、SparkSQL 等,并深度支持 Druid。02、通过 NVD3/D3 预定义了多种可视化图表,满足大部分的数据展示功能。如果还有其他需求,也可以自开发更多的图表类型,或者嵌入其他的 JavaScript 图表库(如 HighCharts、ECharts)。03、提供细粒度安全模型,可以在功能层面和数据层面进行访问控制。支持多种鉴权方式(如数据库、OpenID、LDAP、OAuth、REMOTE_USER 等)。 基于Kettle+Clickhouse+Superset构建亿级大数据实时分析平台课程将联合这三大开源工具,实现一个强大的实时分析平台。该系统以热门的互联网电商实际业务应用场景为案例讲解,对电商数据的常见实战指标处理使用kettle等工具进行了详尽讲解,具体指标包括:流量分析、新增用户分析、活跃用户分析订单分析、团购分析。能承载海量数据的实时分析,数据分析涵盖全端(PC、移动、小程序)应用。项目代码也是具有很高的商业价值的,大家可以根据自己的业务进行修改,便可以使用。本课程包含的技术:开发工具为:IDEAKettleClickhouseSupersetBinlogCanalKafkaHbaseHadoopZookeeperFlinkSpringBootSpringCouldPythonAnconaMySQL等 课程亮点:1.与企业对接、真实工业界产品2.强大的ETL工具Kettle全流程讲解实现3.ClickHouse高性能列式存储数据库4.Superset现代化的企业级BI可视化5.数据库实时同步解决方案6.集成Flink实时数据转换解决方案7.主流微服务SpringBoot后端系统8.互联网大数据企业热门技术栈9.支持海量数据的实时分析10.支持全端实时数据分析11.全程代码实操,提供全部代码和资料12.提供答疑和提供企业技术方案咨询 

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值