Flink實戰之寫Hive效能問題
上一篇中寫了Kafka to Hive的樣例,在實際測試過程中,發現效能比較差。
問題1
我使用的是Flink1.11.1版本,這個版本有個效能上的問題,見FLINK-19121。該問題已經在1.11.3版本中修復,
在HiveTableSink中沿用了FileSystemTableSink的TableRollingPolicy,再該policy中每條資料都會呼叫
@Override
public boolean shouldRollOnEvent(
PartFileInfo<String> partFileState,
RowData element) throws IOException {
return partFileState.getSize() > rollingFileSize;
}
在PartFileInfo對應Hivesink的實現是HadoopPathBasedPartFileWriter,最終會呼叫
@Override
public long getSize() throws IOException {
return fs.getFileStatus(inProgressPath).getLen();
}
每次都會取請求HDFS來獲取檔案的大小,這就使得很大的開銷花費在和HDFS互動上,同時對HDFS造成了很大的IO壓力。
問題2
將上面的bug修復之後進行測試,發現寫資料的速度仍然要落後kafka生產速度,任務執行30分鐘後就已經達到3分鐘的落後,持續執行下去落後將越來越大。
官網有這樣一個配置引數table.exec.hive.fallback-mapred-writer
預設是false 使用MR writer
設為true則使用flink native writer,即StreamingFileSink的BulkWriter。
所以將該引數設為false之後進行測試,寫入速度基本和生產速度一致了。
既然MR writer相比BulkWriter效能差很多,為什麼不預設使用BulkWriter主要有兩個原因:
- 支援的資料型別沒有MR writer的全
- BulkWriter 支援parquet和orc,但只支援orc的最新版本,寫入低版本有相容性問題
相關文章
- flink實戰--讀寫Hive(Flink on Hive)Hive
- Hive實戰UDF 外部依賴檔案找不到的問題Hive
- 實戰 | Hive 資料傾斜問題定位排查及解決Hive
- Flink實戰
- Flink的sink實戰之四:自定義
- Hadoop大資料實戰系列文章之HiveHadoop大資料Hive
- Flutter實戰之開發問題集(一)Flutter
- Flink CDC實戰
- Hive 面試問題Hive面試
- Flink Native Kubernetes實戰
- Flink 1.9 實戰:使用 SQL 讀取 Kafka 並寫入 MySQLKafkaMySql
- JUC之讀寫鎖問題
- Hive效能調優實踐 - VidhyaHive
- Hadoop實戰:Hive操作使用HadoopHive
- Flink 1.16:Hive SQL 如何平遷到 Flink SQLHiveSQL
- DES--------Golang對稱加密之模式問題實戰Golang加密模式
- Hive 刷題——獎金瓜分問題Hive
- Flink-Kafka-Connector Flink結合Kafka實戰Kafka
- Hive學習之JDBC訪問HiveJDBC
- Flink 入門篇之 寫個WordCount
- hive的一些問題Hive
- Apache Hive 面試問答題ApacheHive面試
- elasticsearch之警惕inner hits的效能問題Elasticsearch
- 利用flink從kafka接收訊息,統計結果寫入mysql,訊息寫入hiveKafkaMySqlHive
- Flink處理函式實戰之四:視窗處理函式
- 專案實戰小問題:
- 實戰前端跨域問題前端跨域
- SSM實戰教程(小問題)SSM
- 實時計算Flink效能調優
- hive編寫udf實踐記錄Hive
- Flink 1.10 Container 環境實戰AI
- Flink SQL Client綜合實戰SQLclient
- Flink 常見問題總結
- 【實戰問題】-- 快取穿透之布隆過濾器(1)快取穿透過濾器
- OpenFaaS實戰之六:of-watchdog(為效能而生)
- MySQL問題定位-效能優化之我見MySql優化
- Flink處理函式實戰之五:CoProcessFunction(雙流處理)函式Function
- flink sql client讀取hive時卡住SQLclientHive