當前已經進入大資料時代, 大資料技術和產品百花齊放, 在各自的應用場景發揮重要作用, Redis做為高性能的鍵值資料庫與這些技術有著千絲萬縷的聯繫, 本文將介紹如何將Redis與Hadoop、ELK等技術進行結合。
一、Redis與HadoopHadoop作為大資料時代的分散式運算平臺, 由於其高可用性、可擴展性、高容錯、低成本等特性, 已經是大資料系統的標配, 但是Hadoop中HDFS的存儲機制使得它無法面向終端使用者(例如利用使用者的歷史流覽記錄為使用者推薦新聞、商品等), 所以通常是將離線計算的結果導入到面向使用者的存儲中(例如Redis、HBase等)。
而Hadoop支援自訂OutPutFormat,
當然也有一種不太多見的情況, 就是Redis作為輸入源, 同樣Hadoop提供了自訂的InputFormat。
在Redis的選用上, 可以根據結果的規模決定使用Redis主從版還是集群版本。
二、Redis與ELKELK是ElasticSearch、Logstash、Kibana三個開源工具的組合, 由於其處理方式靈活、配置簡單、檢索性能高效、前端介面絢麗等特性, 在日誌處理領域被廣泛使用。
它的基本工作流如下:
LogStashAgent部署在各個目的機器上按照logstash的語法收集對應的資料, 並發送的ElasticSearch上。
ElasticSearch負責存儲和索引LogAgent上的資料
Kibana可直接與ElasticSearch交互, 負責日誌的視覺化分析。
但是如果LogStashAgent個數太多或者索引數量較多, 直接插入ElasticSearch中會使得其壓力過大, 所以在ElasticSearch和LogStash之間通常會設置一個緩衝, 通常會選用Redis, 而且ELK默認就支持Redis的集成, 整個過程只需要修改配置即可完成, 整個流程如下所示:
作者:carlosfu