分享近期将发表的重要博客文章

1、Spark Streaming 核心设计理解

  前面的博客中Hadoop、Yarn、Spark、Hive、HBase、Flume、Kafka大数据组件基本讨论完,当然之后也会结合大数据实时项目遇到的每个组件的核心问题单独给出博客讨论,之所以花更多篇幅讨论Kafka消息组件,是因为Kafka+Spark Streaming这个组合,它们是实现实时计算黄金搭档组件,两者都需搞透,例如:如果你不理解Kafka consumer group、offset手动管理实现Exactly-once精确消费、rebalance等,那么在Spark Streaming设计程序消费Kafka消息时,你很难写成实现复杂业务的PySpark代码或者Scala代码,换句话说,无法深入实时流计算的开发中。

2、MapReduce数据倾斜与Spark 数据倾斜

  其实该文本质是理解MapReduce partition和Spark partition,只有理解分区,才能在写PySpark或者Scala业务过程中优化相关计算逻辑,达到job还未提交时,你的大脑里已经对计算任务的input端是如何进行Map、输出端又是如何Reduce有了更加清晰构想图,换句话说,有助于写出高质量的PySpark或者Spark程序。

3、《落地实时计算项目》

  这篇文章将贯穿基于大数据技术栈多组件实现的实时计算项目(这种全栈大数据项目经常在公众号各类培训班中各种打广告),计算层以上就是Web BI应用,这部分开发工作相对简单,Python+Django+Websocket+HBase或者Redis实时DashBoard,数据源为模拟点击网页不同栏目的实时日志,通过flume sink到Kafka,经过Spark Streaming提取计算后实时存到HBase或者Redis,
Python+Django+Websocket读取,最终展示为一个动态数据的图表。

4、《一篇博客熟悉Scala语言开发》

  打算用一篇文章整理学习Scala语言开发所有内容。如果要深入实时计算项目(意味着要写出高级业务代码),仅仅依靠Python+PySpark也许够用,但不能深入,因此Scala必然要掌握,毕竟这是实现Spark语言。

5、《PyFlink的UDF底层设计思路分享》

  之前一直关注FIink社区公众号,社区团队为了能把Python强大的科学计算生态(Numpy、Pandas、Scipy以及PyPi优秀的第三方库)拉到Flink生态圈进而开发了PyFlink(正如Spark社区为了壮大自身,开发了PySpark以便吸引庞大数量的Python开发者、Python数据科学工作者等群体),个人认为两大社区都非常出色,能够将传统的Python单机计算扩展到Python on Flink or Python on Spark 的计算分布式化。其实从两大社区都拥抱Python生态的开源工作可以看出:大数据生态和Python 生态有密不可分的关系,此外Python生态中还手握TensorFlow和PyTorch两大AI开发框架,也就是说TensorFlow on Flink或者TensorFlow on Spark 未来其期。
  这篇博客将分享Flink member的干活文章:《 Flink 生态:一个案例快速上手 PyFlink 》(也可以前往社区邮件列表的Flink Weekly 每周动态更新查看更多有关PyFlink的开发情况)
  该文的重点章节是:Python 生态分布化的 UDF 执行技术选型。Py4J肯定少不了,用于解决Python VM和Java VM的API Mapping问题,两者之间基于gRPC进行高性能的socket通信。其次最巧妙的是:基于Apache Beam实现 UDF 执行环境的问题。Beam是谷歌开源的、统一的编程模型,前端用不同语言开发的批处理和流式处理任务,都可以基于Beam实现任务运行在任意执行引擎(主要是Spark、Flink)之上。这是就是PyFlink实现Python 生态分布化的 UDF秘诀(如果能研究研究下这块内容的源码,相信能提示不少底层代码设计能力积累?)

6、《Apache Zeppelin》

这么博客内容参考自网易云公众号的文章《Zeppelin: 让大数据插上机器学习的翅膀》,作者是网易杭州研究院数据科学中心机器学习开发组负责人刘勋
  这篇文章奠定了本博客在之后大数据应用开发中计算层将直接用Zeppelin进行开发(当然了,IntelliJ IDEA不会被弃用),系统后台开发方面(特指Django web)将继续使用PyCharm和VScode 这两款IDE。
看看Apache Zeppelin官方介绍:

Web-based notebook that enables data-driven,
interactive data analytics and collaborative documents with SQL, Scala and more.

  显然Zeppelin是一款基于web端的notebook,类似Jupyter,只不过Jupyter notebook用于Python数据科学工作者居多,面向的是Python生态。而Zeppelin面向的不仅是Hadoop大数据生态、Python生态圈。
  以下两端话最能说明Zeppelin能干什么:大数据开发+Python生态开发:

Apache Zeppelin 是一个可以进行大数据可视化分析的交互式开发系统,可以承担数据接入、数据发现、数据分析、数据可视化、数据协作等任务,其前端提供丰富的可视化图形库,不限于SparkSQL,后端支持HBase、Flink 等大数据系统以插件扩展的方式,并支持Spark、Python、JDBC、Markdown、Shell 等各种常用Interpreter,这使得开发者可以方便地使用SQL 在 Zeppelin 中做数据开发

对于机器学习算法工程师来说,他们可以在 Zeppelin 中可以完成机器学习的数据预处理、算法开发和调试、算法作业调度的工作,包括当前在各类任务中表现突出的深度学习算法,因为 Zeppelin 的最新的版本中增加了对TensorFlow、PyTorch 等主流深度学习框架的支持,此外,Zeppelin将来还会提供算法的模型 Serving 服务、Workflow 工作流编排等新特性,使得 Zeppelin可以完全覆盖机器学习的全流程工作。

你可能感兴趣的:(Spark,数据分析与处理)