请叫我杰哥 2017-12-05
当前已经进入大数据时代,大数据技术和产品百花齐放,在各自的应用场景发挥重要作用,Redis做为高性能的键值数据库与这些技术有着千丝万缕的联系,本文将介绍如何将Redis与Hadoop、ELK等技术进行结合。
Hadoop作为大数据时代的分布式计算平台,由于其高可用性、可扩展性、高容错、低成本等特性,已经是大数据系统的标配,但是Hadoop中HDFS的存储机制使得它无法面向终端用户(例如利用用户的历史浏览记录为用户推荐新闻、商品等),所以通常是将离线计算的结果导入到面向用户的存储中(例如Redis、HBase等)。
而Hadoop支持自定义OutPutFormat,如果需要自定义的输出,只需要继承OutPutFormat,整个流程如下所示,只需要在Reduce端定义RedisOutPutFormat完成映射即可。
当然也有一种不太多见的情况,就是Redis作为输入源,同样Hadoop提供了自定义的InputFormat。
在Redis的选用上,可以根据结果的规模决定使用Redis主从版还是集群版本。
ELK是ElasticSearch、Logstash、Kibana三个开源工具的组合,由于其处理方式灵活、配置简单、检索性能高效、前端界面绚丽等特性,在日志处理领域被广泛使用。
它的基本工作流如下:
LogStashAgent部署在各个目标机器上按照logstash的语法收集对应的数据,并发送的ElasticSearch上。
ElasticSearch负责存储和索引LogAgent上的数据
Kibana可直接与ElasticSearch交互,负责日志的可视化分析。
但是如果LogStashAgent个数太多或者索引数量较多,直接插入ElasticSearch中会使得其压力过大,所以在ElasticSearch和LogStash之间通常会设置一个缓冲,通常会选用Redis,而且ELK默认就支持Redis的集成,整个过程只需要修改配置即可完成,整个流程如下所示:
作者:carlosfu