热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

【深入浅出Yarn架构与实现】21Yarn基础库概述

一、主要使用的库ProtocolBuffers:是Google开源的序列化库,具有平台无关、高性能、兼容性好等优点。YARN将其用到了RPC通信中,默认情况下,YARNRPC中所


一、主要使用的库



  • Protocol Buffers:是 Google 开源的序列化库,具有平台无关、高性能、兼容性好等优点。YARN 将其用到了 RPC 通信中,默认情况 下,YARN RPC 中所有参数采用 Protocol Buffers 进行序列化 / 反序列化。

  • Apache Avro:是 Hadoop 生态系统中的 RPC 框架,具有平台无关、支持动态模式(无需编译)等优点,Avro 的最初设计动机是解决 YARN RPC 兼容性和扩展性 差等问题。

  • RPC 库:YARN 仍采用了 MRv1 中的 RPC 库,但其中采用的默认序列化方法被替换成了 Protocol Buffers。

  • 服务库和事件库 :YARN 将所有的对象服务化,以便统一管理(比创建、销毁等), 而服务之间则采用事件机制进行通信,不再使用类似 MRv1 中基于函数调用的方式。

  • 状态机库:YARN 采用有限状态机描述一些对象的状态以及状态之间的转移。引入状态机模型后,相比 MRv1, YARN 的代码结构更加清晰易懂。


二、第三方开源库介绍


一)Protocol Buffers


1、简要介绍#

Protocol Buffers 是 Google 开源的一个语言无关、平台无关的通信协议,其小巧、高效和友好的兼容性设计,使其被广泛使用。
【可以类比 java 自带的 Serializable 库,功能上是一样的。】


Protocol buffers are Google’s language-neutral, platform-neutral, extensible mechanism for serializing structured data – think XML, but smaller, faster, and simpler. You define how you want your data to be structured once, then you can use special generated source code to easily write and read your structured data to and from a variety of data streams and using a variety of languages.

核心特点:



  • 语言、平台无关

  • 简洁

  • 高性能

  • 兼容性好


2、安装环境#

以 mac 为例(其他平台方式请自查)


# 1) brew安装
brew install protobuf

# 查看安装目录
$ which protoc
/opt/homebrew/bin/protoc

# 2) 配置环境变量
vim ~/.zshrc

# protoc (for hadoop)
export PROTOC="/opt/homebrew/bin/protoc"

source ~/.zshrc

# 3) 查看protobuf版本
$ protoc --version
libprotoc 3.19.1

3、写个 demo#

1)创建个 maven 工程,添加依赖




com.google.protobuf
protobuf-java
3.19.1


2)根目录新建 protobuf 的消息定义文件 student.proto


syntax = "proto3"; // 声明为protobuf 3定义文件
package tutorial;

option java_package = "com.shuofxz.learning.student"; // 生成文件的包名
option java_outer_classname = "StudentProtos"; // 类名

message Student { // 待描述的结构化数据
string name = 1;
int32 id = 2;
optional string email = 3; //optional 表示该字段可以为空

message PhoneNumber { // 嵌套结构
string number = 1;
optional int32 type = 2;
}

repeated PhoneNumber phOne= 4; // 重复字段
}

3)使用 protoc 工具生成消息对应的Java类(在 proto 文件目录执行)


protoc -I=. --java_out=src/main/java student.proto

可以在对应的文件夹下找到 StudentProtos.java 类,里面写了序列化、反序列化等方法。


推荐阅读
  • 流处理中的计数挑战与解决方案
    本文探讨了在流处理中进行计数的各种技术和挑战,并基于作者在2016年圣何塞举行的Hadoop World大会上的演讲进行了深入分析。文章不仅介绍了传统批处理和Lambda架构的局限性,还详细探讨了流处理架构的优势及其在现代大数据应用中的重要作用。 ... [详细]
  • 实践指南:使用Express、Create React App与MongoDB搭建React开发环境
    本文详细介绍了如何利用Express、Create React App和MongoDB构建一个高效的React应用开发环境,旨在为开发者提供一套完整的解决方案,包括环境搭建、数据模拟及前后端交互。 ... [详细]
  • 本文详细介绍了如何利用Xshell配合Xftp实现文件传输,以及如何使用Pure-FTPd构建FTP服务,并探讨了VSFTP与MySQL结合存储虚拟用户的方法。 ... [详细]
  • 精选10款Python框架助力并行与分布式机器学习
    随着神经网络模型的不断深化和复杂化,训练这些模型变得愈发具有挑战性,不仅需要处理大量的权重,还必须克服内存限制等问题。本文将介绍10款优秀的Python框架,帮助开发者高效地实现分布式和并行化的深度学习模型训练。 ... [详细]
  • 如何在PHP中安装Xdebug扩展
    本文介绍了如何从PECL下载并编译安装Xdebug扩展,以及如何配置PHP和PHPStorm以启用调试功能。 ... [详细]
  • Android与JUnit集成测试实践
    本文探讨了如何在Android项目中集成JUnit进行单元测试,并详细介绍了修改AndroidManifest.xml文件以支持测试的方法。 ... [详细]
  • 本文详细介绍了如何在ARM架构的目标设备上部署SSH服务端,包括必要的软件包下载、交叉编译过程以及最终的服务配置与测试。适合嵌入式开发人员和系统集成工程师参考。 ... [详细]
  • MITM(中间人攻击)原理及防范初探(二)
    上一篇文章MITM(中间人攻击)原理及防范初探(一)给大家介绍了利用ettercap进行arp欺骗及劫持明文口令,后来我发现好友rootoorotor的文章介绍比我写的更透彻,所以基础利用大家可以参看 ... [详细]
  • 本文详细探讨了 TensorFlow 中 `tf.identity` 函数的作用及其应用场景,通过对比直接赋值与使用 `tf.identity` 的差异,帮助读者更好地理解和运用这一函数。 ... [详细]
  • 本文详细介绍了在 Red Hat Linux 系统上安装 GCC 4.4.2 的步骤,包括必要的依赖库的安装及常见问题的解决方法。 ... [详细]
  • Node.js在服务器上的多种部署策略
    本文探讨了Node.js应用程序在服务器上部署的几种有效方法,包括使用Screen、PM2以及通过宝塔面板进行简易管理。 ... [详细]
  • 深入理解云计算与大数据技术
    本文详细探讨了云计算与大数据技术的关键知识点,包括大数据处理平台、社会网络大数据、城市大数据、工业大数据、教育大数据、数据开放与共享的应用,以及搜索引擎与Web挖掘、推荐技术的研究及应用。文章还涵盖了云计算的基础概念、特点和服务类型分类。 ... [详细]
  • 本文探讨了在Windows系统中运行Apache服务器时频繁出现崩溃的问题,并提供了多种可能的解决方案和建议。错误日志显示多个子进程因达到最大请求限制而退出。 ... [详细]
  • 本文详细探讨了在Web开发中常见的UTF-8编码问题及其解决方案,包括HTML页面、PHP脚本、MySQL数据库以及JavaScript和Flash应用中的乱码问题。 ... [详细]
  • 提供Scikit-learn中文版官方文档链接,帮助机器学习爱好者和开发者快速上手。 ... [详细]
author-avatar
辣子花_644_172
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有