一小時搭建實時數據分析平台


file

實時數據分析門檻較高,我們如何用極少的開發工作就完成實時數據平台的搭建,做出炫酷的圖表呢?

file
如何快速的搭建實時數據分析平台,首先我們需要實時數據的接入端,我們選擇高擴展性、容錯性、速度極快的消息系統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

file

訪問Kafka官網 http://kafka.apache.org/

選擇左下方Download按鈕

file

最新的版本已經是2.5 為了與公司版本統一 我們下滑選擇1.0.0 注意選擇二進制安裝包

file

啟動

上傳包到服務器 進入所在目錄

解壓安裝包:

tar -zxvf kafka_2.11-1.0.0.tgz

進入kafka目錄 cd kafka_2.11-1.0.0

目錄結構如下:

file

如果需要用自己的 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)"

file

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

回到剛才的生產者 發送消息

file

再看消費者一端 消息收到了

file

二、CentOS安裝Druid

Druid是一個分布式的支持實時分析的數據存儲系統。通俗一點:高性能實時分析數據庫。它由美國廣告技術公司MetaMarkets於2011年創建,並且於2012年開源。MetaMarkets是一家專門為在線媒體公司提供數據服務的公司,主營是DSP廣告運營推送平台,由於對實時性要求非常高,公司不得不放棄原始的大數據方案,Druid也就應運而生。

下載安裝包

Druid官網地址 https://druid.apache.org/

選擇Download

file

進入Download頁

file

其他版本下載地址:https://archive.apache.org/dist/druid/

我們使用的版本是0.17.0

file

上傳包到服務器

解壓

tar -zxvf apache-druid-0.17.0-bin.tar.gz

進入目錄

cd apache-druid-0.17.0

目錄結構如下

file

我們選擇最輕量的而服務器配置:

啟動

單服務器參考配置

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

啟動成功!!

file

訪問頁面localhost:8888

file

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

file

輸入kafka服務器localhost:9092
輸入topic wikipedia 可以預覽數據 然后下一步

file

解析數據

file

解析時間戳 設置轉換 設置過濾

file

file

file

這步比較重要 確定統計的范圍

file

file

發布!

file

等待任務完成

file

file

去查詢頁面查看,我們的數據已經實時寫入Druid了

file

三、本地安裝Superset

Superset 是一款由 Airbnb 開源的“現代化的企業級 BI(商業智能) Web 應用程序”,其通過創建和分享 dashboard,為數據分析提供了輕量級的數據查詢和可視化方案。

win10安裝python 3.7

下載

Python官網,點擊進入https://www.python.org/

file

點擊Python官網的Downloads,然后在下拉菜單中點Windows,進入版本選擇頁面
file

進入版本選擇頁面,可以在最上面看到有Python3的最新版和Python2的最新版,在這里點擊Python3.7.3進入下載頁面 進入下載頁面后,向下滾動鼠標,找到"Files",這里列出了Python3.7.3版本的不同操作系統的安裝包或相關文件,我們是在Windows10里面安裝,選擇對應版本的安裝包下載,點擊下載,等待一會就可以下載完成了

file

安裝

將下載完成的Python3.7.3安裝包剪切到電腦桌面(不放桌面也可以,只是這樣更方便),雙擊打開,然后將下方的兩個選項框都打鈎,再點擊Customize installation進入下一步

file

這個界面默認所有選項都是打鈎的,保持默認即可,點擊Next進入下一步

file

將Install for all users選項打鈎,其他的選項保持默認,此時下方的默認安裝路徑為C:\Program Files\Python37,這里可以點擊Browse,根據自己的需求選擇安裝目錄,但是目錄名中最好不要包含中文.

如果C盤有很多空間,可以不更改,或者有固態硬盤的,可以選擇將Python3.7.3裝在固態盤中.

file

確認好安裝位置后,點擊Install進行安裝

現在Python3.7.3開始安裝,可以看到安裝的進度條在讀條,什么也不用做,稍等一會就安裝完成了

進度條完成,會顯示下面的菜單,表示已經安裝成功了,現在點擊Close即可,Python3.7.3已經安裝成功了

file

驗證

在安裝完成Python3.7.3后,已經自動幫我們配好了環境變量(非常省事),我們直接在命令行里面使用python命令,就會進入Python3.7.3的交互界面.

按Win+R進入運行界面,在里面輸入cmd回車,進入Windows的命令行,在命令行輸入python37可以進入Python3.7.3的命令行模式,(輸入a = 1,然后輸入a,控制台輸出1)測試成功,說明Python3.7.3安裝成功

file

win10安裝superset

安裝

使用pip 需要下載一會~ 網不好可能下載失敗,需要重新執行,之前下載的會緩存,網速不好的話可能很難~ 耐心一點

pip install apache-superset

file

成功!!

file

記錄一下superset的安裝位置 進入該目錄

初始化

# 初始化數據庫
python superset db upgrade

這個過程中會提示缺少包,初始化失敗

file

依次安裝即可 比如這里缺少 flask_migrate

我們就

pip install flask_migrate
# 創建管理員賬號
python superset fab create-admin

提示輸入用戶名 密碼

file

# 載入案例數據 也會有點慢 服務器在國外 也可以多試幾次 不行可以跳過
python superset load_examples

file

# 初始化角色和權限
python superset init

file

# 啟動服務,默認端口號 5000,使用 -p 更改端口號
python superset run

成功!!

file

瀏覽器訪問http://localhost:5000/

file

file

file

superset查詢 展示druid數據

這時候還不能連Druid

需要安裝pydruid

pip install pydruid

重啟superset

新建數據源

file

file

成功!! 保存

file

新建剛才的表

file

file

進入表 設置展示效果

file

這里根據數據情況 進行各種展示設置

file

選擇sqlLite 進行sql查詢

file

至此實時數據分析平台已經搭建完成,可以進行實時數據的接入,展示,分析等等工作。

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();
    }
}

大數據流動 專注於大數據實時計算,數據治理,數據可視化等技術分享與實踐。
請在后台回復關鍵字下載相關資料。相關學習交流群已經成立,歡迎加入~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM