Spark Streaming--应用与实战(二)

然后就开始写代码了

  • 总体思路就是:
  1. put数据构造json数据,写入kafka;
  2. spark streaming任务启动后首先去zookeeper中去读取offset,组装成fromOffsets;
  3. spark streaming 获取到fromOffsets后通过KafkaUtils.createDirectStream去消费Kafka的数据;
  4. 读取kafka数据返回一个InputDStream的信息,foreachRDD遍历,同时记录读取到的offset到zk中;
  5. 写入数据到HBase
    详细一点的架构图

Spark Streaming--应用与实战(一)

  接下来的几篇博客是一个连续的部分,主要分为了:

  1. SparkStreaming-应用与实战(一),讲解背景与架构改造,以及为什么使用spark streaming
  2. SparkStreaming-应用与实战(二),通过代码实现具体细节,并运行项目
  3. SparkStreaming-应用与实战(三),对streaming监控的介绍以及解决实际问题
  4. SparkStreaming-应用与实战(四),对项目做压测与相关的优化
  5. SparkStreaming-应用与实战(五),Streaming优化之HBase
  6. SparkStreaming-应用与实战(六),Streaming任务的管理及监控

一、背景

  • 笔者所在部门“蜂巢” ,是由Michael 宜人贷副总裁,蜂巢负责人 2013年创建。“蜂巢” 是做什么的?笔者在这里简单表述一下“蜂巢”数据科学驱动的互联网风控解决方案,通过千万级爬虫并发技术、计算机视觉技术、机器学习技术等;实时数据采集源;鲜活信用分析特征提取;多维度特征下的欺诈行为交叉检测等一系列科技手段助力金融生态和谐健康发展。
  • 在大数据风控领域,数据是一切工作的根基。数据量的多少、维度的多少,抓取的速度、成功率都是评判数据质量、获取能力的重要条件。在经过用户授权的情况下,“蜂巢”可以实现对“社交、电商、金融、信用、社保”五大维度的实时数据抓取。“蜂巢”正在积极与银行、电商、电信运营商、保险公司以及社保基金等机构展开合作,进一步提高数据抓取的工作效率。
  • 所以在大量数据获取之后,对于底层的数据存储依赖也是相当高的,传统的数据库已经没法在支持,对底层数据服务架构的改造迫在眉睫。

HBase--服务异常排查

潜在的危机

  • 就在某一天下午,刚去公司楼下逛了一圈,悠哉悠哉的回到自己的工位上,几个同事就找过来了。说HBase服务巨慢,立即调出日志,晕,全是插入请求超时的日志。立即调出HBase监控,发现HBase一些可疑的信息!
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    INFO org.apache.hadoop.hbase.client.AsyncProcess: #61, waiting for some tasks to finish. Expected max=0, tasksInProgress=5
    INFO org.apache.hadoop.hbase.client.AsyncProcess: #54, waiting for some tasks to finish. Expected max=0, tasksInProgress=6
    INFO org.apache.hadoop.hbase.client.AsyncProcess: #18, waiting for some tasks to finish. Expected max=0, tasksInProgress=5
    INFO org.apache.hadoop.hbase.client.AsyncProcess: #62, waiting for some tasks to finish. Expected max=0, tasksInProgress=5
    INFO org.apache.hadoop.hbase.client.AsyncProcess: #46, waiting for some tasks to finish. Expected max=0, tasksInProgress=5
    INFO org.apache.hadoop.hbase.client.AsyncProcess: #70, waiting for some tasks to finish. Expected max=0, tasksInProgress=4
    INFO org.apache.hadoop.hbase.client.AsyncProcess: #45, waiting for some tasks to finish. Expected max=0, tasksInProgress=6
    INFO org.apache.hadoop.hbase.client.AsyncProcess: #47, waiting for some tasks to finish. Expected max=0, tasksInProgress=15


    INFO org.apache.hadoop.hbase.regionserver.wal.FSHLog: Slow sync cost: 204 ms, current pipeline: [DatanodeInfoWithStorage[10.xx.xx.xx:50010,DS-47fdd2fe-7722-47d9-9518-151b49a59fc7,DISK], DatanodeInfoWithStorage[10.xx.xx.xx:50010,DS-f55c19d9-5494-47d0-a97b-5d0d07fc8a95,DISK], DatanodeInfoWithStorage[10.xx.xx.xx:50010,DS-4413d571-cab8-4b5f-bc7f-9cf11d2ec2e8,DISK]]
    INFO org.apache.hadoop.hbase.regionserver.wal.FSHLog: Slow sync cost: 148 ms, current pipeline: [DatanodeInfoWithStorage[10.xx.xx.xx:50010,DS-47fdd2fe-7722-47d9-9518-151b49a59fc7,DISK], DatanodeInfoWithStorage[10.xx.xx.xx:50010,DS-f55c19d9-5494-47d0-a97b-5d0d07fc8a95,DISK], DatanodeInfoWithStorage[10.xx.xx.xx:50010,DS-4413d571-cab8-4b5f-bc7f-9cf11d2ec2e8,DISK]]

Cloudera Manager--升级

  我想大家都已经很熟悉Cloudera公司的产品了,我也是从CDH以及CM 4.x使用到现在最新版本CDH5.10.0。不知道大家是否和我一样,喜欢去折腾一些新的版本,总感觉最新的发行版要好一些,有更多优化改进的地方,哈哈哈,当然这种只是片面想法,毕竟早期的版本还是比较稳定。

  我们在升级CDH的时候,首先去升级的是Cloudera Manager,下面博客主要讲解的就是Cloudera Manager从5.5.1升级到5.9.1(其实升级的方法都是大同小异的,比如下面的方法升级5.5.1到5.10.0都是可以的亲自都升级过,只是下面的讲解截图是5.9.1)。

下载上传配置

  1. 下载rpm包,http://archive.cloudera.com/cm5/redhat/6/x86_64/cm/

当前网速较慢或者你使用的浏览器不支持博客特定功能,请尝试刷新或换用Chrome、Firefox等现代浏览器