實時數據分析門檻較高,咱們如何用極少的開發工做就完成實時數據平臺的搭建,作出炫酷的圖表呢?java
如何快速的搭建實時數據分析平臺,首先咱們須要實時數據的接入端,咱們選擇高擴展性、容錯性、速度極快的消息系統Kafka,而實時數據倉庫,因爲 Druid提供了很是方便快捷配置方式,若是不想編寫負責的Flink和Spark代碼,Druid絕對是一個不錯的選擇,有了數據倉庫,咱們必須須要一個可視化和交互式分析的平臺,對druid支持最好的無疑是Superset了。python
請注意,druid目前並不支持windows,因此咱們將kafka 與 druid部署於咱們的centos服務器中,而superset,能夠在本地安裝。sql
最終咱們經過Kafka的實時數據接入能力,Druid的實時數據倉庫存儲,聚合能力,Superset的數據可視化與交互式分析能力,快速的搭建一套實時數據分析平臺。數據庫
注:對於本教程須要的全部安裝包,若是須要請在公衆號回覆 「實時數倉安裝包」 下載apache
若是已有安裝包,文中的Download安裝包內容能夠跳過~json
Kafka是由Apache軟件基金會開發的一個開源流處理平臺,由Scala和Java編寫。Kafka是一種高吞吐量的分佈式發佈訂閱消息系統。flask
查看centos版本 cat /etc/redhat-release 個人是7.6bootstrap
訪問Kafka官網 http://kafka.apache.org/windows
選擇左下方Download按鈕centos
最新的版本已是2.5 爲了與公司版本統一 咱們下滑選擇1.0.0 注意選擇二進制安裝包
上傳包到服務器 進入所在目錄
解壓安裝包:
tar -zxvf kafka_2.11-1.0.0.tgz
進入kafka目錄 cd kafka_2.11-1.0.0
目錄結構以下:
若是須要用本身的 zookeeper 多集羣配置 須要修改 vi config/server.properties
咱們這裏啓動kafka自帶zk:-daemon 爲後臺啓動
./bin/zookeeper-server-start.sh -daemon config/zookeeper.properties
啓動Kafka
./bin/kafka-server-start.sh -daemon config/server.properties
不報錯的話 查看進程是否正常運行 zk運行端口2181 kafka運行端口 9092
netstat -tunlp|egrep "(2181|9092)"
Kafka安裝成功!
咱們用命令行感覺一下kafka
用一個生產者向test裏發消息
./bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test
再開啓一個終端:
進入kafka的目錄
開啓消費者監聽消息
./bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic test --from-beginning
回到剛纔的生產者 發送消息
再看消費者一端 消息收到了
Druid是一個分佈式的支持實時分析的數據存儲系統。通俗一點:高性能實時分析數據庫。它由美國廣告技術公司MetaMarkets於2011年建立,而且於2012年開源。MetaMarkets是一家專門爲在線媒體公司提供數據服務的公司,主營是DSP廣告運營推送平臺,因爲對實時性要求很是高,公司不得不放棄原始的大數據方案,Druid也就應運而生。
Druid官網地址 https://druid.apache.org/
選擇Download
進入Download頁
其餘版本下載地址:https://archive.apache.org/dist/druid/
咱們使用的版本是0.17.0
上傳包到服務器
解壓
tar -zxvf apache-druid-0.17.0-bin.tar.gz
進入目錄
cd apache-druid-0.17.0
目錄結構以下
咱們選擇最輕量的而服務器配置:
單服務器參考配置
Nano-Quickstart:1個CPU,4GB RAM
啓動命令: bin/start-nano-quickstart
配置目錄: conf/druid/single-server/nano-quickstart
cd apache-druid-0.17.0/conf/druid/single-server/nano-quickstart/
vi _common/common.runtime.properties
修改zk地址 # # Zookeeper,大概在46~55行中間,對zk進行配置 # druid.zk.service.host=localhost:2181
修改默認端口驗證
vi bin/verify-default-ports
把這行的2181去掉
my @ports = @ARGV; if (!@ports) { @ports = (1527, 8083, 8090, 8100, 8200, 8888); }
咱們也能夠自定義端口 都要在這裏修改
隨後咱們啓動
bin/start-nano-quickstart
啓動成功!!
訪問頁面localhost:8888
druid已經成功啓動!
在kafka目錄中運行命令 {PATH_TO_DRUID}替換爲druid目錄 這些是druid的測試數據
export KAFKA_OPTS="-Dfile.encoding=UTF-8" ./bin/kafka-console-producer.sh --broker-list localhost:9092 --topic wikipedia < {PATH_TO_DRUID}/quickstart/tutorial/wikiticker-2015-09-12-sampled.json
請將localhost替換爲安裝服務器的地址!
選擇Apache Kafka
並單擊Connect data
localhost:9092
Superset 是一款由 Airbnb 開源的「現代化的企業級 BI(商業智能) Web 應用程序」,其經過建立和分享 dashboard,爲數據分析提供了輕量級的數據查詢和可視化方案。
Python官網,點擊進入https://www.python.org/
點擊Python官網的Downloads,而後在下拉菜單中點Windows,進入版本選擇頁面
進入版本選擇頁面,能夠在最上面看到有Python3的最新版和Python2的最新版,在這裏點擊Python3.7.3進入下載頁面 進入下載頁面後,向下滾動鼠標,找到"Files",這裏列出了Python3.7.3版本的不一樣操做系統的安裝包或相關文件,咱們是在Windows10裏面安裝,選擇對應版本的安裝包下載,點擊下載,等待一會就能夠下載完成了
將下載完成的Python3.7.3安裝包剪切到電腦桌面(不放桌面也能夠,只是這樣更方便),雙擊打開,而後將下方的兩個選項框都打鉤,再點擊Customize installation進入下一步
這個界面默認全部選項都是打鉤的,保持默認便可,點擊Next進入下一步
將Install for all users選項打鉤,其餘的選項保持默認,此時下方的默認安裝路徑爲C:\Program Files\Python37,這裏能夠點擊Browse,根據本身的需求選擇安裝目錄,可是目錄名中最好不要包含中文.
若是C盤有不少空間,能夠不更改,或者有固態硬盤的,能夠選擇將Python3.7.3裝在固態盤中.
確認好安裝位置後,點擊Install進行安裝
如今Python3.7.3開始安裝,能夠看到安裝的進度條在讀條,什麼也不用作,稍等一會就安裝完成了
進度條完成,會顯示下面的菜單,表示已經安裝成功了,如今點擊Close便可,Python3.7.3已經安裝成功了
在安裝完成Python3.7.3後,已經自動幫咱們配好了環境變量(很是省事),咱們直接在命令行裏面使用python命令,就會進入Python3.7.3的交互界面.
按Win+R進入運行界面,在裏面輸入cmd回車,進入Windows的命令行,在命令行輸入python37能夠進入Python3.7.3的命令行模式,(輸入a = 1,而後輸入a,控制檯輸出1)測試成功,說明Python3.7.3安裝成功
使用pip 須要下載一會~ 網很差可能下載失敗,須要從新執行,以前下載的會緩存,網速很差的話可能很難~ 耐心一點
pip install apache-superset
成功!!
記錄一下superset的安裝位置 進入該目錄
# 初始化數據庫 python superset db upgrade
這個過程當中會提示缺乏包,初始化失敗
依次安裝便可 好比這裏缺乏 flask_migrate
咱們就
pip install flask_migrate
# 建立管理員帳號 python superset fab create-admin
提示輸入用戶名 密碼
# 載入案例數據 也會有點慢 服務器在國外 也能夠多試幾回 不行能夠跳過 python superset load_examples
# 初始化角色和權限 python superset init
# 啓動服務,默認端口號 5000,使用 -p 更改端口號 python superset run
成功!!
瀏覽器訪問http://localhost:5000/
這時候還不能連Druid
須要安裝pydruid
pip install pydruid
重啓superset
新建數據源
成功!! 保存
新建剛纔的表
進入表 設置展現效果
這裏根據數據狀況 進行各類展現設置
選擇sqlLite 進行sql查詢
至此實時數據分析平臺已經搭建完成,能夠進行實時數據的接入,展現,分析等等工做。
java 向kafka中發送數據demo
依賴
<dependency> <groupId>org.apache.kafka</groupId> <artifactId>kafka-clients</artifactId> <version>1.0.0</version> </dependency>
demo
public class ProducerTestDemo { public static void main(String[] args) throws Exception { Properties properties = new Properties(); properties.put("bootstrap.servers", "localhost:9092"); properties.put("acks", "all"); properties.put("retries", 0); properties.put("batch.size", 16384); properties.put("linger.ms", 1); properties.put("buffer.memory", 33554432); properties.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer"); properties.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer"); KafkaProducer<String, String> kafkaProducer = new KafkaProducer<String, String>(properties); try{ BufferedReader br = new BufferedReader(new FileReader(new File("C:\\aaa.csv"))); String s = null; while((s = br.readLine())!=null){ kafkaProducer.send(new ProducerRecord<String, String>("topic", s)); } br.close(); }catch(Exception e){ e.printStackTrace(); } kafkaProducer.close(); } }
更多實時數據分析相關博文與科技資訊,歡迎關注 「實時流式計算」