大数据每周分享第 3 期
作者头像
  • 2019-10-13 11:08:27 4

大数据周报:本周值得分享的内容

欢迎投稿或推荐你的项目!请前往 GitHub 的 aikuyun/bt_weekly 提交 issue。

技术一瞥

1. Kafka 的分区数及数据发送

在讨论 Kafka 的分区数之前,让我们先了解一下 Kafka 的基本概念:Kafka 是一个高吞吐量的分布式消息系统,通过优化底层机制,包括使用页缓存、顺序写入以及 Zero-Copy 技术,大大提高了 I/O 性能。然而,单机性能提升有限,要实现更高吞吐量,Kafka 依赖于分区机制,将消息分散到多个分区,并分布保存在不同节点上。

分区的实际作用

  • 分区是 Kafka 并行处理的核心单元,通过增加分区数量,可以显著提升集群的吞吐量。
  • 每个分区可以由多个线程并行处理,从而提高效率。
  • 但是,分区过多也会带来问题,如增加客户端和服务端的内存负担,增加文件句柄的数量,以及影响系统的高可用性。

分区分配规则

Kafka 默认根据消息的键进行分区分配,即 hash(key) % numPartitions。如果未指定键,则 Kafka 会使用缓存或随机选择的方式分配分区。

2. 开发 Spark 流式程序

开发 Spark 流式程序需要编写 Scala 代码。Scala 语法简洁,但缺乏注释会使代码难以理解。

Spark 相关配置

  • 设置任务名称和参数。
  • 初始化 SparkSession 和 StreamingContext。

实例化 Stream

  • 使用 KafkaUtils 创建 DirectStream,根据是否已有偏移量决定订阅方式。
  • 读取和保存偏移量到 Zookeeper 中。

Scala 下划线的用途

  • 类型数据的默认值。
  • 匿名函数中的参数表示。
  • import 语句中的通配符。
  • 重命名和隐藏导入的元素。
  • 形式匹配中忽略的值。

图片

  1. 原则

    • [图片]
  2. 房贷

    • [图片]
    • 原话是:第一,30年等额本息是最优选择。第二,尽可能延长贷款期限。第三,房贷并不可怕,五年后会更加轻松。
  3. 周末

    • [图片]
    • 真相是:一边是《英雄联盟》,一边是未更新的文章。

文章

  1. Redis 进阶:Redis 和 Lua 的初步整合

Lua 脚本是一种轻量级的脚本语言,具有跨平台特性,易于嵌入到多种编程语言中。Lua 脚本体积小,执行速度快,且每次执行都是原子性的。

  1. Redis 分布式锁真的可靠吗?

在单实例 JVM 中,常见的并发控制手段包括 synchronized 关键字、volatile 关键字和 ReentrantLock。但在分布式环境中,这些方法无法有效处理跨 JVM 的并发问题,这时需要借助分布式锁。

资源

  1. GitHub 大数据、数据挖掘、推荐系统、机器学习相关资源

    • 资源主要集中在数据挖掘和机器学习领域。
  2. Lua 官方文档

  • Redis 在 2.6 版本引入了脚本功能,允许开发者编写 Lua 脚本并在 Redis 中执行。使用 Lua 脚本的优势包括:
    • 减少网络请求次数。
    • 实现原子操作。
    • 脚本可以永久存储在 Redis 中,供其他客户端复用。

开源 Lua 脚本调试工具:ZeroBrane Studio

视频

  1. 球鞋经济学
  • 本期视频时长 35 分钟,涵盖球鞋经济学的重要知识点,适合对球鞋经济感兴趣的人观看。
  • 链接:https://www.bilibili.com/video/av36948735

订阅

本专栏还会定期同步到公众号和知识星球,欢迎订阅。扫描二维码或在微信中搜索“cuteximi”。

    本文来源:图灵汇
责任编辑: :
声明:本文系图灵汇原创稿件,版权属图灵汇所有,未经授权不得转载,已经协议授权的媒体下载使用时须注明"稿件来源:图灵汇",违者将依法追究责任。
    分享
每周数据分享
    下一篇