對于可視化分析方面好啰,因為自己tableau已經(jīng)用的很熟了,想增加對superset的認識和熟練程度疑务,想搭建一個superset可視化分析平臺沾凄,以便于自己在平時工作時使用。查看了superset的官方文檔知允,發(fā)現(xiàn)superset必須使用python2.7或者python3.4撒蟀,但我平時工作使用的是python3.6,存在版本的沖突温鸽,直接在自己電腦上安裝比較麻煩保屯。剛好對docker容器技術(shù)有一些了解手负,但沒實踐過,所以周末花了一點時間研究了一下如何基于docker來搭建一個可用于實際工作的superset可視化分析環(huán)境姑尺。如果你對此也感興趣竟终,可參考如下文檔在自己的電腦上進行安裝。
環(huán)境搭建好以后
- 在docker容器里面運行superset應(yīng)用切蟋,將端口映射到宿主機统捶,這樣可在宿主機中通過瀏覽器訪問docker中開啟的superset應(yīng)用。
- 將宿主機中存儲sqlite數(shù)據(jù)庫文件的目錄映射給docker容器內(nèi)superset應(yīng)用的數(shù)據(jù)目錄敦姻,這樣只需要將數(shù)據(jù)存儲到宿主機指定目錄即可瘾境,方便進行分析。
我在windows和macOS上都進行了測試镰惦,本文分享的內(nèi)容是針對Windows來寫的.
1. windows10專業(yè)版迷守,確認電腦的CPU支持虛擬化,且開啟windows的hyper-v虛擬化功能
- 家庭版的windows沒有hyper-v虛擬化功能旺入,不能夠運行docker
- 專業(yè)版的windows要確保處理器支持虛擬化技術(shù)并且已開啟虛擬化,如下圖所示顯示虛擬化已啟用才可以兑凿。
- 要開啟windows上的hyper-v虛擬化技術(shù),默認情況下hyper-v是沒有開啟的茵瘾,按Windows鍵礼华,輸入
hyper-v
,點擊啟用或關(guān)閉windows功能拗秘,開啟hyper-v圣絮,然后重啟電腦即可。
2. 安裝docker的windows版本
網(wǎng)址:https://download.docker.com/win/stable/Docker%20for%20Windows%20Installer.exe
下載完成后雕旨,直接雙擊安裝即可扮匠。安裝完成后,配置一個國內(nèi)的docker鏡像凡涩,這樣在拉取倉庫時的速度更快棒搜。我使用的是daocloud.io提供鏡像加速服務(wù),是免費的活箕,只需要注冊一個賬號即可力麸。
網(wǎng)址如下:http://www.daocloud.io/
注冊后點擊加速器,就會自動給你生成一個鏈接
將該鏈接復(fù)制育韩,打開docker程序的設(shè)置選項克蚂,將此鏈接加入到鏡像網(wǎng)址列表,點擊apply,docker會進行重啟座慰,然后生效陨舱。
3. 在docker倉庫中拉取包含打包好的superset應(yīng)用的鏡像(images)
- 在鏡像站中搜索與superset有關(guān)的鏡像
docker search superset
C:\Users\richstone> docker search superset
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
amancevice/superset [0.20.4] Superset on Debian/Python3 81 [OK]
tylerfowler/superset An extendable Docker image for Airbnb's Su... 1
dailyhotel/superset Dockerized Superset 1 [OK]
sergekatzmann/superset-oracle Docker container for Superset (Caravel) wi... 1
tyyzqmf/superset 根據(jù)amancevice/superset修改的鏡像 主要解決superset聯(lián)hi... 1 [OK]
crobox/superset Superset + Clickhouse docker image 1 [OK]
mav1/superset_docker docker for superset 0 [OK]
zmhassan/openshift-superset 0
tddv/superset Superset is come from airbub superset open... 0 [OK]
peertopark/superset Peer to Park Superset 0
huksley/superset AirBnB Superset with MySQL driver 0 [OK]
ssskip/docker-superset airbnb superset python27 docker image 0 [OK]
maedamikio/superset 0
muicoder/superset Superset is a data exploration platform de... 0 [OK]
cnero/superset 0
xjw263/superset-dev superset dev. https://github.com/airbnb/su... 0 [OK]
ganshanshan/superset_tddv tddv superset 0 [OK]
gauseng/superset 0
mnagaku/superset Docker image for Apache Superset (incubati... 0 [OK]
therevoltingx/superset 0
xjw263/superset-base superset-base 0 [OK]
treexor/superset 0
linxsysadmin/superset 0
ganshanshan/superset1 superset1 0 [OK]
harisekhon/superset Superset open source analytics UI by AirBNB 0 [OK]
- 選擇排在第一位,也就是star最多的那個倉庫amancevice/superset版仔,我這里指定鏡像分支版本為0.20.0游盲,這是我做測試時误墓,最新的版本,將這個版本拉取到本地益缎。
docker pull amancevice/superset:0.20.0
下載完成后如圖所示谜慌,顯示完成,且沒有報錯信息莺奔。
C:\Users\richstone> docker pull amancevice/superset:0.20.0
0.20.0: Pulling from amancevice/superset
219d2e45b4af: Pull complete
059cff580d2e: Pull complete
2a37b6ebe643: Pull complete
Digest: sha256:0b50f1e2d1a069f5be6a23039ad51f20ffa13ce0f8b6322d4b31f0f50d3449c2
Status: Downloaded newer image for amancevice/superset:0.20.0
- 查看此時docker中的鏡像
docker images
可以看到我們剛剛下載的鏡像
PS C:\Users\richstone> docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
amancevice/superset 0.20.0 6556ab9ce2be 13 days ago 1.53GB
4.在docker中運行superset
- 在本地新建一個文件夾欣范,我新建的文件夾為
D:/Data/sqlite
。稍后將這個文件夾映射給容器內(nèi)的一個文件夾令哟,讓superset可以直接訪問宿主機的數(shù)據(jù)文件恼琼。 - 需要注意的時,映射給docker容器的宿主機文件夾所在的驅(qū)動器要開啟共享屏富,可以在docker菜單中進行設(shè)置晴竞。
- 開啟docker容器內(nèi)的superset應(yīng)用,開啟的同時進行端口映射狠半,并掛載宿主機的數(shù)據(jù)文件目錄
D:/Data/sqlite
docker run -d -p 8088:8088 -v D:/Data/sqlite:/home/superset amancevice/superset:0.20.0
命令解釋
-d :后臺運行
-p :宿主機和容器進行端口映射
-v :宿主機與容器進行文件位置映射噩死,即將宿主機文件夾掛在到容器
成功開啟后將會返回一組字符串,這是容器的ID
C:\Users\richstone> docker run -d -p 8088:8088 -v D:/Data/sqlite:/home/superset amancevice/superset:0.20.0
c2fc56d845eac0919e04dd5b302021f2ac0b5c4f0dcb7c2d6a6c25dded0dfd08
- 查看開啟的docker應(yīng)用
docker ps
C:\Users\richstone> docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS
NAMES
c2fc56d845ea amancevice/superset:0.20.0 "superset runserver" 9 minutes ago Up 9 minutes (healthy) 0.0.0.0:8088->80
88/tcp ecstatic_galileo
5.對superset進行初始化設(shè)置
復(fù)制容器ID神年,container的ID已维,稍后我們要在這個容器內(nèi)執(zhí)行一些命令來初始化superset應(yīng)用。
- 設(shè)定superset的用戶名和密碼
docker exec -it c2fc56d845ea fabmanager create-admin --app superset
C:\Users\richstone> docker exec -it c2fc56d845ea fabmanager create-admin --app superset
Username [admin]: ****
User first name [admin]: ****
User last name [user]: ****
Email [admin@fab.org]: ****
Password:
Repeat for confirmation:
Recognized Database Authentications.
- 初始化數(shù)據(jù)庫
docker exec -it c2fc56d845ea superset db upgrade
- 創(chuàng)建默認角色和許可
docker exec -it c2fc56d845ea superset init
- 開啟superset服務(wù)
docker exec -it c2fc56d845ea superset runserver
- 打開宿主機上的瀏覽器已日,輸入http://localhost:8088 用你剛剛創(chuàng)建的用戶名進行登錄即可垛耳。
6.停止與開啟superset服務(wù)
- 列出在運行的容器
docker ps
C:\Users\richstone> docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c2fc56d845ea amancevice/superset:0.20.0 "superset runserver" 16 minutes ago Up 16 minutes (healthy) 0.0.0.0:8088->8
088/tcp ecstatic_galileo
- 找到運行superset的容器ID,停止
docker stop c2fc56d845ea
- 列出運行過的容器的ID飘千,找到運行superset的容器ID
docker ps -a
- 開啟superset服務(wù)
docker start c2fc56d845ea
7.向宿主機的E:/Data/sqlit
文件導(dǎo)入sqlite數(shù)據(jù)庫文件
打開http://localhost:8088
登錄你的賬號名與密碼艾扮,即可對數(shù)據(jù)庫文件中的表進行查詢與可視化分析。
Windows上運行docker很容易出現(xiàn)各種各樣的問題占婉,所以推薦Linux系統(tǒng)或者macOS系統(tǒng)。