實時數據分析門檻較高,我們如何用極少的開發工作就完成實時數據平臺的搭建,做出炫酷的圖表呢? 如何快速的搭建實時數據分析平臺,首先我們需要實時數據的接入端,我們選擇高擴展性、容錯性、速度極快的消息系統Kafka,而實時數據倉庫,由於 Druid提供了非常方便快捷配置方式,如果不想編寫負責的Flink和 ...
實時數據分析門檻較高,我們如何用極少的開發工作就完成實時數據平臺的搭建,做出炫酷的圖表呢?
如何快速的搭建實時數據分析平臺,首先我們需要實時數據的接入端,我們選擇高擴展性、容錯性、速度極快的消息系統Kafka,而實時數據倉庫,由於 Druid提供了非常方便快捷配置方式,如果不想編寫負責的Flink和Spark代碼,Druid絕對是一個不錯的選擇,有了數據倉庫,我們必須需要一個可視化和互動式分析的平臺,對druid支持最好的無疑是Superset了。
請註意,druid目前並不支持windows,所以我們將kafka 與 druid部署於我們的centos伺服器中,而superset,可以在本地安裝。
最終我們通過Kafka的實時數據接入能力,Druid的實時數據倉庫存儲,聚合能力,Superset的數據可視化與互動式分析能力,快速的搭建一套實時數據分析平臺。
註:對於本教程需要的所有安裝包,如果需要請在公眾號回覆 “實時數倉安裝包” 下載
如果已有安裝包,文中的Download安裝包內容可以跳過~
一、CentOS下安裝Kafka
Kafka是由Apache軟體基金會開發的一個開源流處理平臺,由Scala和Java編寫。Kafka是一種高吞吐量的分散式發佈訂閱消息系統。
下載安裝包
查看centos版本 cat /etc/redhat-release 我的是7.6
訪問Kafka官網 http://kafka.apache.org/
選擇左下方Download按鈕
最新的版本已經是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
回到剛纔的生產者 發送消息
再看消費者一端 消息收到了
二、CentOS安裝Druid
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數據
在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
載入kafka數據到Druid
請將localhost替換為安裝伺服器的地址!
進入localhost:8888 點擊load data
選擇Apache Kafka
並單擊Connect data
輸入kafka伺服器localhost:9092
輸入topic wikipedia 可以預覽數據 然後下一步
解析數據
解析時間戳 設置轉換 設置過濾
這步比較重要 確定統計的範圍
發佈!
等待任務完成
去查詢頁面查看,我們的數據已經實時寫入Druid了
三、本地安裝Superset
Superset 是一款由 Airbnb 開源的“現代化的企業級 BI(商業智能) Web 應用程式”,其通過創建和分享 dashboard,為數據分析提供了輕量級的數據查詢和可視化方案。
win10安裝python 3.7
下載
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安裝成功
win10安裝superset
安裝
使用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/
superset查詢 展示druid數據
這時候還不能連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();
}
}
更多實時數據分析相關博文與科技資訊,歡迎關註 “實時流式計算”