在第一步中, 客户端编写好了代码并打包成jar包,会提交到集群中,也就是Cluster中,通讯方式就是通过RPC来通讯的。(RPC的一个最简单示例)
当集群收到请求后,就会告诉yarn,请求分配资源。当yarn处理之后,会返回一个地址给client(第二步)。客户端去这个地址拷贝jar包(第三步)。
第四步 就是提交任务给RM,主要提交的是任务的描述信息,比如jobID、jar包存在的位置、配置的信息等等。
第五步 RM对任务进行初始化操作。分配资源,CPU、内存等等。
第六步 资源分配完成后,回去HDFS上拷贝数据。并把数据分片。
第七步 nodemanager通过心跳机制去获取RM上的任务资源得到任务信息。
第八步 nm会从HDFS上下载jar包
第九步 运行jar包
第十步 处理完成任务以后,把数据写回到HDFS中。
序列化(Serialization)
- 序列化最主要的作用是把结构化的对象转化成字节流
- 反序列化(Deserialization)序列化的逆进程将字节流转化成结构化对象(还原数据)。
- hadoop序列化的特点:
- 紧凑:高效使用存储空间
- 快速:读写数据的额外开销小
- 可扩展:可透明的读取老格式的数据
- 互操作:支持多种语言的交互
- Hadoop 序列化接口
- org.apache.hadoop.io.Writable
- hadoop序列化的作用
- 序列化在分布式环境的两大作用:进程间通信,永久存储。
- hadoop节点间通信
- Writable接口
Writable接口是根据DataInput和DataOutput实现的简单、有效的序列化对象 - MR的任意Key和Value必须实现Writable接口。
- MR的任意Key必须实现WritableComparable接口
- 转载自http://blog.csdn.net/beidiqiuren/article/details/51759554