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

来源:https://www.cnblogs.com/tree1123/archive/2020/04/28/12793896.html
-Advertisement-
Play Games

實時數據分析門檻較高,我們如何用極少的開發工作就完成實時數據平臺的搭建,做出炫酷的圖表呢? 如何快速的搭建實時數據分析平臺,首先我們需要實時數據的接入端,我們選擇高擴展性、容錯性、速度極快的消息系統Kafka,而實時數據倉庫,由於 Druid提供了非常方便快捷配置方式,如果不想編寫負責的Flink和 ...


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

更多實時數據分析相關博文與科技資訊,歡迎關註 “實時流式計算”


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • "Linux動態頻率調節系統CPUFreq之一:概述" 隨著技術的發展,我們對CPU的處理能力提出了越來越高的需求,晶元廠家也對製造工藝不斷地提升。現在的主流PC處理器的主頻已經在3GHz左右,就算是智能手機的處理器也已經可以工作在1.5GHz以上,可是我們並不是時時刻刻都需要讓CPU工作在最高的主 ...
  • 1.Linux環境下安裝Redis (1)下載Redis安裝包,並解壓到安裝路徑【沒有wget就使用yum install wget安裝】 [root@localhost ~]#wget http://download.redis.io/releases/redis-5.0.7.tar.gz [ro ...
  • 首先聲明一下:MySQL 8.0之後,依舊不支持DDL事務。原子性DDL與其說是一個MySQL8.0下的新特性,倒是不如說是修複了MySQL5.7 DDL 執行失敗造成的bug。 MySQL 8.0 前後表的物理文件差異在mysql中,對於表的數據文件,在mysql 8.0之前,是分為一個ifm的表 ...
  • 1. MongoDB創建用戶角色及開啟驗證 先啟動單例的mongodb [root@service ~]# mongod -f mongodb.conf 以配置的方式啟動 配置文件如下 systemLog: #MongoDB發送所有日誌輸出的目標指定為文件 destination: file #mo ...
  • 下載安裝包 下載地址:https://www.mongodb.com/download-center/community curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.2.5.tgz 實驗步驟 解壓Mon ...
  • 表結構: 方法1: select a.* from Table_Test as a where 3 > (select count(*) from Table_Test where Brand_Id = a.Brand_Id and AddTime > a.AddTime ) order by a. ...
  • 背景 最近在負責公司數據Oracle轉PG;老平臺資料庫:Oracle11g;新平臺資料庫:PostgreSQL12。由於平臺統計規則有變動;所以正在推廣的游戲數據無法全部遷移過來;只能在老平臺上運行。而支付數據介面升級;統一進入新平臺數據PG。需要將部分支付數據由PostgreSQL同步到Orac ...
  • Apache Kylin on Apache HBase 方案經過長時間的發展已經比較成熟,但是存在著一定的局限性。因此,Kyligence 推出了 Kylin on Parquet 方案。本文中,Kyligence 的大數據研發工程師王汝鵬講解了該解決方案的架構、原理以及如何開發調試代碼。 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...