20【線上日誌分析】之記錄一次Spark Streaming+Spark SQL的資料傾斜

hackeruncle發表於2017-02-19

1.現象
20【線上日誌分析】之記錄一次Spark Streaming+Spark SQL的資料傾斜
三臺機器都有產生executor,每臺都會產生tasks,但是其中只有一臺的task有input資料,其他機器的tasks都沒有資料。



2.猜想
2.1是不是資料傾斜?


2.2是資料量過大,group by時,導致key分佈不均?
比如key1 有98萬,key2有2萬,那麼shuffle時,肯定資料傾斜。但是我剛開始資料量不是很大,所以pass  (就算資料量大,也很簡單處理,一般處理時key加上隨機字首數)

2.3是不是資料量太少 不夠分割槽的?
也懷疑過,不過還沒去驗證

2.4 flume流到kafka,是snappy壓縮格式,而spark作為kafka的消費者,雖然能夠自動識別壓縮格式,但是這種snappy格式不支援切分
也懷疑過,不過還沒去修改支援spilt的壓縮格式,也還沒去驗證

2.5 spark streaming分割槽數目是有誰決定的?
使用direct這種模式是由kafka的分割槽數目決定
使用receiver這種模式由流的數目決定也就是由receiver數目決定。

3.修改分割槽數
[root@sht-sgmhadoopdn-02 kafka]#bin/kafka-topics.sh --alter  --zookeeper 172.16.101.58:2181,172.16.101.59:2181,172.16.101.60:2181/kafka --topic logtopic --partitions 3
[root@sht-sgmhadoopdn-02 kafka]# bin/kafka-topics.sh --describe --zookeeper 172.16.101.58:2181,172.16.101.59:2181,172.16.101.60:2181/kafka --topic logtopic
Topic:logtopic      PartitionCount:3        ReplicationFactor:3     Configs:
        Topic: test     Partition: 0    Leader: 3       Replicas: 3,1,2 Isr: 3,1,2
        Topic: test     Partition: 1    Leader: 1       Replicas: 1,2,3 Isr: 1,2,3
        Topic: test     Partition: 2    Leader: 2       Replicas: 2,3,1 Isr: 2,3,1
[root@sht-sgmhadoopdn-02 kafka]#

4.驗證(每個executor都有input資料)
20【線上日誌分析】之記錄一次Spark Streaming+Spark SQL的資料傾斜

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30089851/viewspace-2133918/,如需轉載,請註明出處,否則將追究法律責任。

相關文章