Druid集群搭建

測試環(huán)境采用了三臺虛擬機译仗,每臺4G內(nèi)存
用到的軟件有

mysql, hadoop-2.7.1, kafka_2.11-0.9.0.1, imply-2.2.3(druid的套件,集成了dsql像mysql一樣去查詢數(shù)據(jù),pivot數(shù)據(jù)可視化組件)
Java 8 or better
Node.js 4.x or better

Master Server(master)

1527 (Derby; not needed if you are using a separate metadata store like MySQL or PostgreSQL)
2181 (ZooKeeper; not needed if you are using a separate ZooKeeper cluster)
8081 (Druid Coordinator)
8090 (Druid Overlord)

#啟動master
bin/supervise -c conf/supervise/master-with-zk.conf

Query Server (slave1)

8082 (Druid Broker)
9095 (Pivot)
#啟動query
bin/supervise -c conf/supervise/query.conf

Data Server(slave2)
8083 (Druid Historical)
8091 (Druid Middle Manager)
8100–8199 (Druid Task JVMs, spawned by Middle Managers)
8200 (Tranquility Server; optional)
#啟動data
bin/supervise -c conf/supervise/data.conf

Download the distribution

tar -xzf imply-2.2.3.tar.gz
cd imply-2.2.3

[全局Common配置]

vim conf/druid/_common/common.runtime.properties
#
# Extensions
#

druid.extensions.directory=dist/druid/extensions
druid.extensions.hadoopDependenciesDir=dist/druid/hadoop-dependencies
druid.extensions.loadList=["druid-caffeine-cache","druid-lookups-cached-global","druid-histogram","druid-datasketches","mysql-metadata-storage","druid-hdfs-storage","druid-kafka-indexing-service"]

#
# Logging
#

# Log all runtime properties on startup. Disable to avoid logging properties on startup:
druid.startup.logging.logProperties=true

#
# Zookeeper
#
druid.zk.service.host=192.168.31.162
druid.zk.paths.base=/druid

# For MySQL:
druid.metadata.storage.type=mysql
druid.metadata.storage.connector.connectURI=jdbc:mysql://192.168.31.162:3306/druid
druid.metadata.storage.connector.user=root
druid.metadata.storage.connector.password=root

#
# Deep storage 
#
# For local disk (only viable in a cluster if this is a network mount):
# For HDFS:
druid.storage.type=hdfs
druid.storage.storageDirectory=hdfs://master:9000/druid/segments

Configure Master server address
協(xié)調(diào)節(jié)點:
vim conf/druid/coordinator/jvm.config

-server
-Xms500m
-Xmx500m
-Duser.timezone=UTC+0800
-Dfile.encoding=UTF-8
-Djava.io.tmpdir=var/tmp
-Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager
-Dderby.stream.error.file=var/druid/derby.log

vim conf/druid/coordinator/runtime.properties

druid.service=druid/coordinator
druid.host=master
druid.port=8081

druid.coordinator.startDelay=PT30S
druid.coordinator.period=PT30S

統(tǒng)治節(jié)點:-server
vim conf/druid/overlord/jvm.config

-Xms500m
-Xmx500m
-XX:NewSize=256m
-XX:MaxNewSize=256m
-XX:+UseConcMarkSweepGC
-XX:+PrintGCDetails
-XX:+PrintGCTimeStamps
-Duser.timezone=UTC+0800
-Dfile.encoding=UTF-8
-Djava.io.tmpdir=var/tmp
-Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager

vim conf/druid/overlord/runtime.properties

druid.service=druid/overlord
druid.host=192.168.31.162
druid.port=8090
druid.indexer.queue.startDelay=PT30S
druid.indexer.runner.type=remote
druid.indexer.storage.type=metadata

Configure query storage
查詢節(jié)點
vim conf/druid/broker/jvm.config

-server
-Xms1g
-Xmx1g
-XX:NewSize=256m
-XX:NewSize=256m
-XX:MaxDirectMemorySize=1g
-XX:+UseConcMarkSweepGC
-XX:+PrintGCDetails
-XX:+PrintGCTimeStamps
-Duser.timezone=UTC+0800
-Dfile.encoding=UTF-8
-Djava.io.tmpdir=var/tmp
-Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager

vim conf/druid/broker/runtime.properties

druid.service=druid/broker
druid.host=master
druid.port=8082

# HTTP server threads
druid.broker.http.numConnections=5
druid.server.http.numThreads=40

# Processing threads and buffers
druid.processing.buffer.sizeBytes=536870912
druid.processing.numMergeBuffers=2
druid.processing.numThreads=7
druid.processing.tmpDir=var/druid/processing

# Query cache disabled -- push down caching and merging instead
druid.broker.cache.useCache=false
druid.broker.cache.populateCache=false
#druid.broker.cache.unCacheable=[]
#JVM堆內(nèi)LUR緩存大小,單位Byte
#druid.cache.sizeInBytes=60000000 

# SQL
druid.sql.enable=true

# Query config
# 查詢節(jié)點請求歷史節(jié)點方式贤壁, 有random和connectionCount兩種連接方式
druid.broker.balancer.type=connectionCount

pivot配置
vim conf/pivot/config.yaml

# The port on which the Pivot server will listen on.
port: 9095

# Pivot runtime directory
varDir: var/pivot

settingsLocation:
location: file
format: 'json-pretty'
initialSettings:
  clusters:
    - name: druid
      type: druid
      host: localhost:8082

Configure deep storage
歷史節(jié)點
vim conf/druid/historical/jvm.config

-server
-Xms1g
-Xmx1g
-XX:NewSize=256m
-XX:MaxNewSize=256m
-XX:MaxDirectMemorySize=4096m
-XX:UseConcMarkSweepGC
-XX:+PrintGCDetails
-XX:+PrintGCTimeStamps
-Duser.timezone=UTC+0800
-Dfile.encoding=UTF-8
-Djava.io.tmpdir=var/tmp
-Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager

vim conf/druid/historical/runtime.properties

druid.service=druid/historical
druid.host=master
druid.port=8083

# HTTP server threads
druid.server.http.numThreads=40

# Processing threads and buffers
druid.processing.buffer.sizeBytes=536870912
druid.processing.numMergeBuffers=2
druid.processing.numThreads=7
druid.processing.tmpDir=var/druid/processing

# Segment storage
# Segment 本地加載路徑與最大存儲空間大小奋姿,單位為Byte
druid.segmentCache.locations=[{"path":"var/druid/segment-cache","maxSize"\:130000000000}]
# 最大存儲空間大小石挂,該值只用作Coordinator調(diào)配
Segment加載的依據(jù)
druid.server.maxSize=130000000000

# Query cache
druid.historical.cache.useCache=true
druid.historical.cache.populateCache=true
druid.cache.type=caffeine
druid.cache.sizeInBytes=2000000000

#Tier
# 自定義數(shù)據(jù)層名稱井厌,默認(rèn)為_default_tier, 不同的數(shù)據(jù)層的Segment數(shù)據(jù)無法相互復(fù)制
#druid.server.tier=hot
# 自定義數(shù)據(jù)層優(yōu)化級, 默認(rèn)值為0, 值越大優(yōu)先級越高址晕, 該功能用于冷熱數(shù)據(jù)層的劃分.
#druid.server.priority=10

MiddleManager配置
vim conf/druid/middleManager/jvm.config

-server
-Xms64m
-Xmx64m
-XX:+UseConcMarkSweepGC
-XX:+PrintGCDetails
-XX:+PrintGCTimeStamps
-Duser.timezone=UTC+0800
-Dfile.encoding=UTF-8
-Djava.io.tmpdir=var/tmp
-Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager

vim conf/druid/middleManager/runtime.properties

druid.service=druid/middlemanager
druid.host=slave2
druid.port=8091

# Number of tasks per middleManager
druid.worker.capacity=3

# Task launch parameters
druid.indexer.runner.javaOpts=-server -Xmx1g -Duser.timezone=UTC -Dfile.encoding=UTF-8 -Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager
druid.indexer.task.baseTaskDir=var/druid/task
druid.indexer.task.restoreTasksOnRestart=true

# HTTP server threads
druid.server.http.numThreads=40

# Processing threads and buffers
druid.processing.buffer.sizeBytes=100000000
druid.processing.numMergeBuffers=2
druid.processing.numThreads=2
druid.processing.tmpDir=var/druid/processing

# Hadoop indexing
druid.indexer.task.hadoopWorkingPath=var/druid/hadoop-tmp
druid.indexer.task.defaultHadoopCoordinates=["org.apache.hadoop:hadoop-client:2.7.1"]

啟動三個節(jié)點相應(yīng)服務(wù)

master:
    cd /opt/zookeeper-3.4.6
    bin/zkServer.sh start
    cd /opt/kafka_2.11-0.9.0.1/
    bin/kafka-server-start.sh config/server.properties &
    nohup bin/supervise -c conf/supervise/master-no-zk.conf > master.log &
slave1:
    nohup bin/supervise -c conf/supervise/query.conf > query.log &
slave2:
    nohup bin/supervise -c conf/supervise/data.conf > data.log &

Start Kafka

./bin/kafka-topics.sh --create --zookeeper master:2181 --replication-factor 1 --partitions 1 --topic wikiticker

Enable Druid Kafka ingestion

curl -XPOST -H'Content-Type: application/json' -d @quickstart/wikiticker-kafka-supervisor.json http://master:8090/druid/indexer/v1/supervisor

Load historical data

export KAFKA_OPTS="-Dfile.encoding=UTF-8"
/opt/kafka_2.11-0.9.0.1/bin/kafka-console-producer.sh --broker-list localhost:9092 --topic wikiticker < /opt/imply-2.2.3/quickstart/wikiticker-2016-06-27-sampled.json

Load real-time data

curl -O https://static.imply.io/quickstart/wikiticker-0.4.tar.gz
tar -xzf wikiticker-0.4.tar.gz
cd wikiticker-0.4
bin/wikiticker -J-Dfile.encoding=UTF-8 -out kafka -topic wikiticker

Query data

 bin/dsql
 dsql> SELECT FLOOR(__time TO DAY) AS "Day", SUM("count") AS Edits FROM "wikiticker-kafka" GROUP BY FLOOR(__time TO DAY);

┌──────────────────────────┬───────┐
│ Day │ Edits │
├──────────────────────────┼───────┤
│ 2016-06-27T00:00:00.000Z │ 24433 │
│ 2017-03-07T00:00:00.000Z │ 642 │
└──────────────────────────┴───────┘
Retrieved 2 rows in 0.04s.

注意事項:

1. Not enough direct memory.  Please adjust -XX:MaxDirectMemorySize, druid.processing.buffer.sizeBytes, druid.processing.numThreads, or druid.processing.numMergeBuffers: maxDirectMemory[268,435,456], memoryNeeded[1,342,177,280] = druid.processing.buffer.sizeBytes[268,435,456] * (druid.processing.numMergeBuffers[2] + druid.processing.numThreads[2] + 1)
堆外內(nèi)存的設(shè)置需要根據(jù)設(shè)置的線程數(shù)和MergeBuffers的大小來確定.
2. 因為metadata保存在mysql膀懈,所以在初始化mysql數(shù)據(jù)庫的時候一定要設(shè)置utf8的編碼;
   CREATE DATABASE druid DEFAULT CHARACTER SET utf8;
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末谨垃,一起剝皮案震驚了整個濱河市启搂,隨后出現(xiàn)的幾起案子硼控,更是在濱河造成了極大的恐慌,老刑警劉巖胳赌,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件淀歇,死亡現(xiàn)場離奇詭異,居然都是意外死亡匈织,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進店門牡直,熙熙樓的掌柜王于貴愁眉苦臉地迎上來缀匕,“玉大人,你說我怎么就攤上這事碰逸∠缧。” “怎么了?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵饵史,是天一觀的道長满钟。 經(jīng)常有香客問我,道長胳喷,這世上最難降的妖魔是什么湃番? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮吭露,結(jié)果婚禮上吠撮,老公的妹妹穿的比我還像新娘。我一直安慰自己讲竿,他們只是感情好泥兰,可當(dāng)我...
    茶點故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著题禀,像睡著了一般鞋诗。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上迈嘹,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天削彬,我揣著相機與錄音,去河邊找鬼秀仲。 笑死吃警,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的啄育。 我是一名探鬼主播酌心,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼挑豌!你這毒婦竟也來了安券?” 一聲冷哼從身側(cè)響起墩崩,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤硼莽,失蹤者是張志新(化名)和其女友劉穎弥雹,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體拖刃,經(jīng)...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡址貌,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年铐拐,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片练对。...
    茶點故事閱讀 38,161評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡遍蟋,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出螟凭,到底是詐尸還是另有隱情虚青,我是刑警寧澤,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布螺男,位于F島的核電站棒厘,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏下隧。R本人自食惡果不足惜奢人,卻給世界環(huán)境...
    茶點故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望淆院。 院中可真熱鬧达传,春花似錦、人聲如沸迫筑。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽脯燃。三九已至搂妻,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間辕棚,已是汗流浹背欲主。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留逝嚎,地道東北人扁瓢。 一個月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像补君,于是被迫代替她去往敵國和親引几。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,916評論 2 344

推薦閱讀更多精彩內(nèi)容

  • Druid具有高可用挽铁、高容錯的特性伟桅。 本文將搭建一個簡單的Druid集群敞掘,并且將會討論如何進一步配置以滿足您的需求...
    helloworld1214閱讀 7,124評論 1 5
  • Druid被設(shè)計成可擴展、高容錯的集群楣铁。 在本文檔中玖雁,我們將搭建一個簡單的集群,并討論如何進一步配置以滿足您的需求...
    Sisyphus秋居拾遺閱讀 2,182評論 0 2
  • 安裝準(zhǔn)備 安裝包準(zhǔn)備 源碼編譯 官網(wǎng)安裝包 imply組合套件 生產(chǎn)環(huán)境的Hadoop使用Java7, 官方安裝包...
    zfylin閱讀 2,290評論 0 4
  • 一個用于實時分析的開源數(shù)據(jù)存儲 摘要 Druid是專用于基于大數(shù)據(jù)集的實時探索分析的開源數(shù)據(jù)存儲盖腕。該系統(tǒng)包括列式存...
    Sisyphus秋居拾遺閱讀 3,006評論 1 5
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理赫冬,服務(wù)發(fā)現(xiàn),斷路器溃列,智...
    卡卡羅2017閱讀 134,601評論 18 139