目錄
1.系統(tǒng)架構(gòu)
2.環(huán)境搭建
2.1本地環(huán)境下kafka批量導入數(shù)據(jù)
2.2 kafka-manager的安裝與配置
3.1 Spark Streaming 性能調(diào)優(yōu)(一): 解決并行度
3.2 Spark Streaming 性能調(diào)優(yōu)(二): 解決task傾斜
這個項目需要安裝:
1.Cassandra 2.2.8
Apache Cassandra是一個高度可擴展的高性能分布式數(shù)據(jù)庫边苹,用于處理大量商用服務(wù)器上的大量數(shù)據(jù)复局,提供高可用性炼团,無單點故障私蕾。這是一種NoSQL類型的數(shù)據(jù)庫捧挺。以下是cassandra的特性:
- 彈性可擴展性 - Cassandra是高度可擴展的; 它允許添加更多的硬件以適應(yīng)更多的客戶和更多的數(shù)據(jù)根據(jù)要求少欺。
- 始終基于架構(gòu) - Cassandra沒有單點故障放吩,它可以連續(xù)用于不能承擔故障的關(guān)鍵業(yè)務(wù)應(yīng)用程序。
- 快速線性性能 - Cassandra是線性可擴展性的抡锈,即它為你增加集群中的節(jié)點數(shù)量增加你的吞吐量。因此码倦,保持一個快速的響應(yīng)時間企孩。
- 靈活的數(shù)據(jù)存儲 - Cassandra適應(yīng)所有可能的數(shù)據(jù)格式,包括:結(jié)構(gòu)化袁稽,半結(jié)構(gòu)化和非結(jié)構(gòu)化勿璃。它可以根據(jù)您的需要動態(tài)地適應(yīng)變化的數(shù)據(jù)結(jié)構(gòu)。
- 便捷的數(shù)據(jù)分發(fā) - Cassandra通過在多個數(shù)據(jù)中心之間復制數(shù)據(jù)推汽,可以靈活地在需要時分發(fā)數(shù)據(jù)补疑。
- 事務(wù)支持 - Cassandra支持屬性,如原子性歹撒,一致性莲组,隔離和持久性(ACID)。
- 快速寫入 - Cassandra被設(shè)計為在廉價的商品硬件上運行暖夭。 它執(zhí)行快速寫入锹杈,并可以存儲數(shù)百TB的數(shù)據(jù),而不犧牲讀取效率迈着。
2.Kairosdb 1.1.3
KairosDB是一個快速可靠的分布式時間序列數(shù)據(jù)庫竭望,主要用Cassandra來做底層存儲,也可以使用HBase裕菠。KairosDB是在OpenTSDB基礎(chǔ)上重寫的咬清。其主要功能如下:
- 可以獲取基礎(chǔ)設(shè)施和服務(wù)的實時狀態(tài)信息,展示集群的各種軟硬件錯誤奴潘,性能變化以及性能瓶頸旧烧。
- 可以衡量系統(tǒng)的SLA(服務(wù)類型、服務(wù)質(zhì)量等)画髓,理解復雜系統(tǒng)間的相互作用掘剪,展示資源消耗情況。集群的整體作業(yè)情況雀扶,可以用以輔助預算和集群資源協(xié)調(diào)杖小。
- 可以展示集群的主要性能瓶頸,經(jīng)常出現(xiàn)的錯誤愚墓,從而可以著力重點解決重要問題予权。
3.Kafka 0.8.2
Kafka其實說白了就是一個分布式的消息隊列,底層依賴于Zookeeper.kafka 是一個中間件,是一個服務(wù)浪册。任何機器都可以向它生產(chǎn)數(shù)據(jù)和消費數(shù)據(jù)扫腺。
4.Zookeeper 3.4.5
Kafka的核心,負責保存Kafka的topic信息和其他配置信息,也是一個中間件
5.spark 2.3.0
Apache Spark 是專為大規(guī)模數(shù)據(jù)處理而設(shè)計的快速通用的計算引擎,其啟用了內(nèi)存分布數(shù)據(jù)集,除了能夠提供交互式查詢外村象,它還可以優(yōu)化迭代工作負載笆环。要運行spark還需要在機器上配置scala
6.jdk 1.8
1.安裝Cassandra:
①.下載:
官網(wǎng)上只有最新版的下載,但是官方提供了所有舊版release的倉庫,點擊這里就可以找到自己要下載的版本了.
②.配置Cassandra:
1.首先在你喜歡的地方,新建以下三個文件夾:
mkdir /var/lib/cassandra/data
mkdir /var/lib/cassandra/commitlog
mkdir /var/lib/cassandra/saved_caches
2.解壓剛剛下載好的壓縮包,之后進入/cassandra/conf目錄,打開cassandra.yaml文件,將配置文件中的三個地方改成剛剛新建的那三個文件夾
data_file_directories:
- /var/lib/cassandra/data // 注意,這里-前面不能有空格!!!
commitlog_directory: /var/lib/cassandra/commitlog
saved_caches_directory: /var/lib/cassandra/saved_caches
# 開啟rpc服務(wù),如果不開啟的話,Kairosdb將無法調(diào)用cassandra的api
start_rpc: true
③.運行:
進入/cassandra/bin目錄,運行腳本:
./cassandra
如果沒報錯的話就表示cassandra正常啟動了,使用:
./nodetool status
也可以查看當前數(shù)據(jù)庫所有節(jié)點的狀態(tài)
2.安裝Kairosdb
①.下載:
kairosdb是開源的,在github上可以直接下載:https://github.com/kairosdb/kairosdb/releases
直接下載需要的版本即可
②.配置:
解壓剛剛下載的壓縮包,進入/conf目錄,打開Kairosdb.properties文件,
要使用cassandra作為kairosdb的存儲服務(wù),就必須如下配置:
#kairosdb.service.datastore=org.kairosdb.datastore.h2.H2Module // 默認使用h2作為存儲服務(wù),所以要注釋這行
kairosdb.service.datastore=org.kairosdb.datastore.cassandra.CassandraModule
其他配置默認即可
③.運行:
運行Kairosdb前需要先啟動cassandra,啟動cassandra后,進入Kairosdb/bin目錄,運行命令:
./kairosdb.sh run
即可啟動Kairosdb
3.安裝Kafka:
①.下載:
Kafka直接去官方下就可以,官網(wǎng)挺好看的,一下子就找到了要安裝的版本了,這里附一下連接吧
http://kafka.apache.org/downloads
②.配置:
解壓剛剛下載的壓縮包,先進入/conf目錄,編輯zookeeper.properties文件:
配置可以跟下面安裝Zookeeper的配置文件一樣:
# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just
# example sakes.
dataDir=/opt/zookeeper-datas
# the port at which the clients will connect
clientPort=2181
#
# Be sure to read the maintenance section of the
# administrator guide before turning on autopurge.
#
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#
# The number of snapshots to retain in dataDir
#autopurge.snapRetainCount=3
# Purge task interval in hours
# Set to "0" to disable auto purge feature
#autopurge.purgeInterval=1
至于server.properties也是需要修改的,這個就先留到后面我摸索好所有組件如何用再回來完善吧...
③.運行:
進入/bin目錄,輸入以下命令:
kafka-server-start.sh config/server.properties &
即可指定配置文件,并開啟kafka后臺進程
Kafka-Manager
日常開發(fā)中總是敲命令行來管理kafka還是有點不方便,所以這里我用了kafka-manager來管理kafka.
這里附上我安裝kafka-mananger的過程: kafka-manager的安裝與配置
4.安裝Zookeeper:
kafka下載好后其實自帶了zookeeper, 詳情可以去這篇補充文章里面看2.1 本地環(huán)境下kafka批量導入數(shù)據(jù)
①.下載:
同樣地,zookeeper官網(wǎng)只有最新版的,要想下載以前的版本,只能通過官網(wǎng)提供的舊版?zhèn)}庫:
https://archive.apache.org/dist/zookeeper/
這樣就可以找到自己想要的版本了
②.配置:
1.新建文件夾:
mkdir /opt/zookeeper-datas
解壓剛剛下載好的壓縮包,進行/conf目錄,新建zoo.cfg文件,并輸入以下內(nèi)容:
# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just
# example sakes.
dataDir=/opt/zookeeper-datas
# the port at which the clients will connect
clientPort=2181
#
# Be sure to read the maintenance section of the
# administrator guide before turning on autopurge.
#
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#
# The number of snapshots to retain in dataDir
#autopurge.snapRetainCount=3
# Purge task interval in hours
# Set to "0" to disable auto purge feature
#autopurge.purgeInterval=1
新建好配置文件后,進行/bin目錄,運行命令:
./zkServer.sh start
即可開啟zookeeper服務(wù)
5.安裝spark:
spark就沒有啥比較好的安裝方法了,下載scala,配置jdk,再下載spark的程序壓縮包(spark的壓縮包可能需要科學上網(wǎng)才能正常下載)就行,開包即用
6.安裝jdk:
這么簡單的我就不寫了,網(wǎng)上一搜一大堆