【学习笔记】大数据技术之Hadoop(源码记录)

第0章 RPC通信原理解析

RPC是什么
RPC(Remote Procedure Call)远程过程调用协议,一种通过网络从远程计算机上请求服务,而不需要了解底层网络技术的协议。RPC它假定某些协议的存在,例如TPC/UDP等,为通信程序之间携带信息数据。在OSI网络七层模型中,RPC跨越了传输层和应用层,RPC使得开发,包括网络分布式多程序在内的应用程序更加容易。
过程是什么? 过程就是业务处理、计算任务,更直白的说,就是程序,就是想调用本地方法一样调用远程的过程

Ctrl+alt+D 能找到接口的实现类
双击shift查找

0)回顾
在这里插入图片描述
1)需求:
模拟RPC的客户端、服务端、通信协议三者如何工作的
在这里插入图片描述
2)代码编写:
(1)在HDFSClient项目基础上创建包名com.atguigu.rpc
(2)创建RPC协议

package com.atguigu.rpc;

public interface RPCProtocol {

    long versionID = 666;

    void mkdirs(String path);
}

(3)创建RPC服务端

package com.atguigu.rpc;
// 实现通信接口
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.ipc.RPC;
import org.apache.hadoop.ipc.Server;

import java.io.IOException;

public class NNServer implements RPCProtocol{

    @Override
    public void mkdirs(String path) {
        System.out.println("服务端,创建路径" + path);
    }

    public static void main(String[] args) throws IOException {

        Server server = new RPC.Builder(new Configuration())
                .setBindAddress("localhost")
                .setPort(8888)
                .setProtocol(RPCProtocol.class)
                .setInstance(new NNServer())
                .build();

        System.out.println("服务器开始工作");

        server.start();
    }
}

(4)创建RPC客户端

package com.atguigu.rpc;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.ipc.RPC;

import java.io.IOException;
import java.net.InetSocketAddress;

public class HDFSClient {

    public static void main(String[] args) throws IOException {
// 获取客户端对象
        RPCProtocol client = RPC.getProxy(
                RPCProtocol.class,
                RPCProtocol.versionID,
                new InetSocketAddress("localhost", 8888),
                new Configuration());

        System.out.println("我是客户端");

        client.mkdirs("/input");
    }
}

3)测试
(1)启动服务端
观察控制台打印:服务器开始工作
在控制台Terminal窗口输入,jps,查看到NNServer服务
(2)启动客户端
观察客户端控制台打印:我是客户端
观察服务端控制台打印:服务端,创建路径/input
4)总结
RPC的客户端调用通信协议方法,方法的执行在服务端;
通信协议就是接口规范。

第1章 NameNode启动源码解析

在这里插入图片描述
在这里插入图片描述

1.1 启动9870端口服务

1.2 加载镜像文件和编辑日志

1.3 初始化NN的RPC服务端

1.4 NN启动资源检查

检查文件对应的存储路径能存储多少数据。
目的是为了防止 客户端的访问产生的大量的编辑日志 ,存储不下。100M

1.5 NN对心跳超时判断

10分钟+30秒

1.6 安全模式

第2章 DataNode启动源码解析

在这里插入图片描述
在这里插入图片描述

2.1 初始化DataXceiverServer

2.2 初始化HTTP服务

2.3 初始化DN的RPC服务端

2.4 DN向NN注册

2.5 向NN发送心跳

第3章 HDFS上传源码解析

在这里插入图片描述
为什么没有按字节一个一个写呢?因为是大数据有大量的数据,按字节写效率低下,所有打包形成packet,一步一步的写入到数据队列里面,

3.1 create创建过程

3.1.1 DN向NN发起创建请求

3.1.2 NN处理DN的创建请求

3.1.3 DataStreamer启动流程

3.2 write上传过程

3.1.1 向DataStreamer的队列里面写数据

3.1.2 建立管道之机架感知(块存储位置)

3.1.3 建立管道之Socket发送

3.1.4 建立管道之Socket接收

3.1.5 客户端接收DN写数据应答Response

第4章 Yarn源码解析

在这里插入图片描述
在这里插入图片描述

4.1 Yarn客户端向RM提交作业

4.2 RM启动MRAppMaster

4.3 调度器任务执行(YarnChild)

第5章 MapReduce源码解析

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

5.1 Job提交流程源码和切片源码详解

5.2 MapTask & ReduceTask源码解析

第6章 Hadoop源码编译

6.1 前期准备工作

6.2 工具包安装

6.3 编译源码

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值